Merge "Log ComplicationSlot timelineEntries" into androidx-main
diff --git a/OWNERS b/OWNERS
index 6e081c7..b6e6906 100644
--- a/OWNERS
+++ b/OWNERS
@@ -5,10 +5,12 @@
 [email protected]
 [email protected]
 [email protected]
[email protected]
 [email protected]
 [email protected]
 [email protected]
 [email protected]
[email protected]
 [email protected]
 [email protected]
 [email protected]
diff --git a/appcompat/appcompat-resources/api/api_lint.ignore b/appcompat/appcompat-resources/api/api_lint.ignore
index 5d3b096..61eb45f 100644
--- a/appcompat/appcompat-resources/api/api_lint.ignore
+++ b/appcompat/appcompat-resources/api/api_lint.ignore
@@ -1,17 +1,59 @@
 // Baseline format: 1.0
-HiddenSuperclass: androidx.appcompat.graphics.drawable.AnimatedStateListDrawableCompat:
-    Public class androidx.appcompat.graphics.drawable.AnimatedStateListDrawableCompat stripped of unavailable superclass androidx.appcompat.graphics.drawable.StateListDrawable
-
-
-InvalidNullabilityOverride: androidx.appcompat.graphics.drawable.AnimatedStateListDrawableCompat#setTintMode(android.graphics.PorterDuff.Mode) parameter #0:
+InvalidNullabilityOverride: androidx.appcompat.graphics.drawable.DrawableContainerCompat#onStateChange(int[]) parameter #0:
+    Invalid nullability on parameter `state` in method `onStateChange`. Parameters of overrides cannot be NonNull if the super parameter is unannotated.
+InvalidNullabilityOverride: androidx.appcompat.graphics.drawable.DrawableContainerCompat#setTintMode(android.graphics.PorterDuff.Mode) parameter #0:
     Invalid nullability on parameter `tintMode` in method `setTintMode`. Parameters of overrides cannot be NonNull if super parameter is Nullable.
 
 
 MissingNullability: androidx.appcompat.content.res.AppCompatResources#getColorStateList(android.content.Context, int):
     Missing nullability on method `getColorStateList` return
-MissingNullability: 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):
-    Missing nullability on method `createFromXmlInner` return
-MissingNullability: androidx.appcompat.graphics.drawable.AnimatedStateListDrawableCompat#mutate():
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableContainerCompat#getConstantState():
+    Missing nullability on method `getConstantState` return
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableContainerCompat#mutate():
     Missing nullability on method `mutate` return
-MissingNullability: androidx.appcompat.graphics.drawable.AnimatedStateListDrawableCompat#onStateChange(int[]) parameter #0:
-    Missing nullability on parameter `stateSet` in method `onStateChange`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableContainerCompat#onBoundsChange(android.graphics.Rect) parameter #0:
+    Missing nullability on parameter `bounds` in method `onBoundsChange`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableContainerCompat#setColorFilter(android.graphics.ColorFilter) parameter #0:
+    Missing nullability on parameter `colorFilter` in method `setColorFilter`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableContainerCompat#setTintList(android.content.res.ColorStateList) parameter #0:
+    Missing nullability on parameter `tint` in method `setTintList`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#DrawableWrapperCompat(android.graphics.drawable.Drawable) parameter #0:
+    Missing nullability on parameter `drawable` in method `DrawableWrapperCompat`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#draw(android.graphics.Canvas) parameter #0:
+    Missing nullability on parameter `canvas` in method `draw`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#getCurrent():
+    Missing nullability on method `getCurrent` return
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#getPadding(android.graphics.Rect) parameter #0:
+    Missing nullability on parameter `padding` in method `getPadding`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#getState():
+    Missing nullability on method `getState` return
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#getTransparentRegion():
+    Missing nullability on method `getTransparentRegion` return
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#getWrappedDrawable():
+    Missing nullability on method `getWrappedDrawable` return
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#invalidateDrawable(android.graphics.drawable.Drawable) parameter #0:
+    Missing nullability on parameter `who` in method `invalidateDrawable`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#onBoundsChange(android.graphics.Rect) parameter #0:
+    Missing nullability on parameter `bounds` in method `onBoundsChange`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#scheduleDrawable(android.graphics.drawable.Drawable, Runnable, long) parameter #0:
+    Missing nullability on parameter `who` in method `scheduleDrawable`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#scheduleDrawable(android.graphics.drawable.Drawable, Runnable, long) parameter #1:
+    Missing nullability on parameter `what` in method `scheduleDrawable`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#setColorFilter(android.graphics.ColorFilter) parameter #0:
+    Missing nullability on parameter `cf` in method `setColorFilter`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#setState(int[]) parameter #0:
+    Missing nullability on parameter `stateSet` in method `setState`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#setTintList(android.content.res.ColorStateList) parameter #0:
+    Missing nullability on parameter `tint` in method `setTintList`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#setTintMode(android.graphics.PorterDuff.Mode) parameter #0:
+    Missing nullability on parameter `tintMode` in method `setTintMode`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#setWrappedDrawable(android.graphics.drawable.Drawable) parameter #0:
+    Missing nullability on parameter `drawable` in method `setWrappedDrawable`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#unscheduleDrawable(android.graphics.drawable.Drawable, Runnable) parameter #0:
+    Missing nullability on parameter `who` in method `unscheduleDrawable`
+MissingNullability: androidx.appcompat.graphics.drawable.DrawableWrapperCompat#unscheduleDrawable(android.graphics.drawable.Drawable, Runnable) parameter #1:
+    Missing nullability on parameter `what` in method `unscheduleDrawable`
+MissingNullability: androidx.appcompat.graphics.drawable.StateListDrawableCompat#addState(int[], android.graphics.drawable.Drawable) parameter #0:
+    Missing nullability on parameter `stateSet` in method `addState`
+MissingNullability: androidx.appcompat.graphics.drawable.StateListDrawableCompat#addState(int[], android.graphics.drawable.Drawable) parameter #1:
+    Missing nullability on parameter `drawable` in method `addState`
diff --git a/appcompat/appcompat-resources/api/current.txt b/appcompat/appcompat-resources/api/current.txt
index 488a7e8..0d2a788 100644
--- a/appcompat/appcompat-resources/api/current.txt
+++ b/appcompat/appcompat-resources/api/current.txt
@@ -10,17 +10,19 @@
 
 package androidx.appcompat.graphics.drawable {
 
-  public class AnimatedStateListDrawableCompat extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
+  public class AnimatedStateListDrawableCompat extends androidx.appcompat.graphics.drawable.StateListDrawableCompat {
     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;
+  }
+
+  public class DrawableContainerCompat extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
+    ctor public DrawableContainerCompat();
     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);
@@ -31,5 +33,25 @@
     method public void unscheduleDrawable(android.graphics.drawable.Drawable, Runnable);
   }
 
+  public class DrawableWrapperCompat extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
+    ctor public DrawableWrapperCompat(android.graphics.drawable.Drawable!);
+    method public void draw(android.graphics.Canvas!);
+    method public android.graphics.drawable.Drawable? getDrawable();
+    method public int getOpacity();
+    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 setDrawable(android.graphics.drawable.Drawable?);
+    method public void unscheduleDrawable(android.graphics.drawable.Drawable!, Runnable!);
+  }
+
+  public class StateListDrawableCompat extends androidx.appcompat.graphics.drawable.DrawableContainerCompat {
+    ctor public StateListDrawableCompat();
+    method public void addState(int[]!, android.graphics.drawable.Drawable!);
+    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;
+  }
+
 }
 
diff --git a/appcompat/appcompat-resources/api/public_plus_experimental_current.txt b/appcompat/appcompat-resources/api/public_plus_experimental_current.txt
index 488a7e8..0d2a788 100644
--- a/appcompat/appcompat-resources/api/public_plus_experimental_current.txt
+++ b/appcompat/appcompat-resources/api/public_plus_experimental_current.txt
@@ -10,17 +10,19 @@
 
 package androidx.appcompat.graphics.drawable {
 
-  public class AnimatedStateListDrawableCompat extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
+  public class AnimatedStateListDrawableCompat extends androidx.appcompat.graphics.drawable.StateListDrawableCompat {
     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;
+  }
+
+  public class DrawableContainerCompat extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
+    ctor public DrawableContainerCompat();
     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);
@@ -31,5 +33,25 @@
     method public void unscheduleDrawable(android.graphics.drawable.Drawable, Runnable);
   }
 
+  public class DrawableWrapperCompat extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
+    ctor public DrawableWrapperCompat(android.graphics.drawable.Drawable!);
+    method public void draw(android.graphics.Canvas!);
+    method public android.graphics.drawable.Drawable? getDrawable();
+    method public int getOpacity();
+    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 setDrawable(android.graphics.drawable.Drawable?);
+    method public void unscheduleDrawable(android.graphics.drawable.Drawable!, Runnable!);
+  }
+
+  public class StateListDrawableCompat extends androidx.appcompat.graphics.drawable.DrawableContainerCompat {
+    ctor public StateListDrawableCompat();
+    method public void addState(int[]!, android.graphics.drawable.Drawable!);
+    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;
+  }
+
 }
 
diff --git a/appcompat/appcompat-resources/api/restricted_current.ignore b/appcompat/appcompat-resources/api/restricted_current.ignore
new file mode 100644
index 0000000..93d6e5f
--- /dev/null
+++ b/appcompat/appcompat-resources/api/restricted_current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.appcompat.graphics.drawable.DrawableWrapper:
+    Removed class androidx.appcompat.graphics.drawable.DrawableWrapper
diff --git a/appcompat/appcompat-resources/api/restricted_current.txt b/appcompat/appcompat-resources/api/restricted_current.txt
index c4d31b2..d998c06 100644
--- a/appcompat/appcompat-resources/api/restricted_current.txt
+++ b/appcompat/appcompat-resources/api/restricted_current.txt
@@ -10,17 +10,19 @@
 
 package androidx.appcompat.graphics.drawable {
 
-  public class AnimatedStateListDrawableCompat extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback androidx.core.graphics.drawable.TintAwareDrawable {
+  public class AnimatedStateListDrawableCompat extends androidx.appcompat.graphics.drawable.StateListDrawableCompat implements 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;
+  }
+
+  public class DrawableContainerCompat extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
+    ctor public DrawableContainerCompat();
     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);
@@ -31,20 +33,26 @@
     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!);
+  public class DrawableWrapperCompat extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
+    ctor public DrawableWrapperCompat(android.graphics.drawable.Drawable!);
     method public void draw(android.graphics.Canvas!);
+    method public android.graphics.drawable.Drawable? getDrawable();
     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 setDrawable(android.graphics.drawable.Drawable?);
     method public void unscheduleDrawable(android.graphics.drawable.Drawable!, Runnable!);
   }
 
+  public class StateListDrawableCompat extends androidx.appcompat.graphics.drawable.DrawableContainerCompat {
+    ctor public StateListDrawableCompat();
+    method public void addState(int[]!, android.graphics.drawable.Drawable!);
+    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;
+  }
+
 }
 
 package androidx.appcompat.widget {
diff --git a/appcompat/appcompat-resources/lint-baseline.xml b/appcompat/appcompat-resources/lint-baseline.xml
index a9a30d2..432e438 100644
--- a/appcompat/appcompat-resources/lint-baseline.xml
+++ b/appcompat/appcompat-resources/lint-baseline.xml
@@ -124,6 +124,51 @@
     <issue
         id="UnknownNullness"
         message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
+        errorLine1="    public void setColorFilter(ColorFilter colorFilter) {"
+        errorLine2="                               ~~~~~~~~~~~">
+        <location
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableContainerCompat.java"/>
+    </issue>
+
+    <issue
+        id="UnknownNullness"
+        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
+        errorLine1="    public void setTintList(ColorStateList tint) {"
+        errorLine2="                            ~~~~~~~~~~~~~~">
+        <location
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableContainerCompat.java"/>
+    </issue>
+
+    <issue
+        id="UnknownNullness"
+        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
+        errorLine1="    protected void onBoundsChange(Rect bounds) {"
+        errorLine2="                                  ~~~~">
+        <location
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableContainerCompat.java"/>
+    </issue>
+
+    <issue
+        id="UnknownNullness"
+        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
+        errorLine1="    public final ConstantState getConstantState() {"
+        errorLine2="                 ~~~~~~~~~~~~~">
+        <location
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableContainerCompat.java"/>
+    </issue>
+
+    <issue
+        id="UnknownNullness"
+        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
+        errorLine1="    public Drawable mutate() {"
+        errorLine2="           ~~~~~~~~">
+        <location
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableContainerCompat.java"/>
+    </issue>
+
+    <issue
+        id="UnknownNullness"
+        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
         errorLine1="    public static PorterDuff.Mode parseTintMode(int value, PorterDuff.Mode defaultMode) {"
         errorLine2="                  ~~~~~~~~~~~~~~~">
         <location
@@ -142,10 +187,10 @@
     <issue
         id="UnknownNullness"
         message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
-        errorLine1="    public DrawableWrapper(Drawable drawable) {"
-        errorLine2="                           ~~~~~~~~">
+        errorLine1="    public DrawableWrapperCompat(Drawable drawable) {"
+        errorLine2="                                 ~~~~~~~~">
         <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java"/>
     </issue>
 
     <issue
@@ -154,7 +199,7 @@
         errorLine1="    public void draw(Canvas canvas) {"
         errorLine2="                     ~~~~~~">
         <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java"/>
     </issue>
 
     <issue
@@ -163,7 +208,7 @@
         errorLine1="    protected void onBoundsChange(Rect bounds) {"
         errorLine2="                                  ~~~~">
         <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java"/>
     </issue>
 
     <issue
@@ -172,7 +217,7 @@
         errorLine1="    public void setColorFilter(ColorFilter cf) {"
         errorLine2="                               ~~~~~~~~~~~">
         <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java"/>
     </issue>
 
     <issue
@@ -181,7 +226,7 @@
         errorLine1="    public boolean setState(final int[] stateSet) {"
         errorLine2="                                  ~~~~~">
         <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java"/>
     </issue>
 
     <issue
@@ -190,7 +235,7 @@
         errorLine1="    public int[] getState() {"
         errorLine2="           ~~~~~">
         <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java"/>
     </issue>
 
     <issue
@@ -199,7 +244,7 @@
         errorLine1="    public Drawable getCurrent() {"
         errorLine2="           ~~~~~~~~">
         <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java"/>
     </issue>
 
     <issue
@@ -208,7 +253,7 @@
         errorLine1="    public Region getTransparentRegion() {"
         errorLine2="           ~~~~~~">
         <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java"/>
     </issue>
 
     <issue
@@ -217,7 +262,7 @@
         errorLine1="    public boolean getPadding(Rect padding) {"
         errorLine2="                              ~~~~">
         <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java"/>
     </issue>
 
     <issue
@@ -226,7 +271,7 @@
         errorLine1="    public void invalidateDrawable(Drawable who) {"
         errorLine2="                                   ~~~~~~~~">
         <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java"/>
     </issue>
 
     <issue
@@ -235,7 +280,7 @@
         errorLine1="    public void scheduleDrawable(Drawable who, Runnable what, long when) {"
         errorLine2="                                 ~~~~~~~~">
         <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java"/>
     </issue>
 
     <issue
@@ -244,7 +289,7 @@
         errorLine1="    public void scheduleDrawable(Drawable who, Runnable what, long when) {"
         errorLine2="                                               ~~~~~~~~">
         <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java"/>
     </issue>
 
     <issue
@@ -253,7 +298,7 @@
         errorLine1="    public void unscheduleDrawable(Drawable who, Runnable what) {"
         errorLine2="                                   ~~~~~~~~">
         <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java"/>
     </issue>
 
     <issue
@@ -262,7 +307,7 @@
         errorLine1="    public void unscheduleDrawable(Drawable who, Runnable what) {"
         errorLine2="                                                 ~~~~~~~~">
         <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java"/>
     </issue>
 
     <issue
@@ -271,7 +316,7 @@
         errorLine1="    public void setTintList(ColorStateList tint) {"
         errorLine2="                            ~~~~~~~~~~~~~~">
         <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java"/>
     </issue>
 
     <issue
@@ -280,25 +325,7 @@
         errorLine1="    public void setTintMode(PorterDuff.Mode tintMode) {"
         errorLine2="                            ~~~~~~~~~~~~~~~">
         <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
-    </issue>
-
-    <issue
-        id="UnknownNullness"
-        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
-        errorLine1="    public Drawable getWrappedDrawable() {"
-        errorLine2="           ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
-    </issue>
-
-    <issue
-        id="UnknownNullness"
-        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
-        errorLine1="    public void setWrappedDrawable(Drawable drawable) {"
-        errorLine2="                                   ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java"/>
+            file="src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java"/>
     </issue>
 
     <issue
@@ -349,6 +376,24 @@
     <issue
         id="UnknownNullness"
         message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
+        errorLine1="    public void addState(int[] stateSet, Drawable drawable) {"
+        errorLine2="                         ~~~~~">
+        <location
+            file="src/main/java/androidx/appcompat/graphics/drawable/StateListDrawableCompat.java"/>
+    </issue>
+
+    <issue
+        id="UnknownNullness"
+        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
+        errorLine1="    public void addState(int[] stateSet, Drawable drawable) {"
+        errorLine2="                                         ~~~~~~~~">
+        <location
+            file="src/main/java/androidx/appcompat/graphics/drawable/StateListDrawableCompat.java"/>
+    </issue>
+
+    <issue
+        id="UnknownNullness"
+        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
         errorLine1="    public static Context wrap(@NonNull final Context context) {"
         errorLine2="                  ~~~~~~~">
         <location
diff --git a/appcompat/appcompat-resources/src/androidTest/java/androidx/appcompat/graphics/drawable/DrawableContainerTest.kt b/appcompat/appcompat-resources/src/androidTest/java/androidx/appcompat/graphics/drawable/DrawableContainerCompatTest.kt
similarity index 85%
rename from appcompat/appcompat-resources/src/androidTest/java/androidx/appcompat/graphics/drawable/DrawableContainerTest.kt
rename to appcompat/appcompat-resources/src/androidTest/java/androidx/appcompat/graphics/drawable/DrawableContainerCompatTest.kt
index 8d924de..a8de789 100644
--- a/appcompat/appcompat-resources/src/androidTest/java/androidx/appcompat/graphics/drawable/DrawableContainerTest.kt
+++ b/appcompat/appcompat-resources/src/androidTest/java/androidx/appcompat/graphics/drawable/DrawableContainerCompatTest.kt
@@ -27,7 +27,7 @@
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
-class DrawableContainerTest {
+class DrawableContainerCompatTest {
     /**
      * Regression test for b/171913944 where DrawableContainer fails to copy when there are no
      * children in the constant state.
@@ -48,20 +48,20 @@
         assertTrue(container.calledSetTintList)
     }
 
-    internal class MyDrawableContainerState : DrawableContainer.DrawableContainerState {
+    internal class MyDrawableContainerState : DrawableContainerCompat.DrawableContainerState {
         constructor() : super(null, null, null)
-        constructor(orig: DrawableContainer.DrawableContainerState?) : super(orig, null, null)
+        constructor(orig: DrawableContainerCompat.DrawableContainerState?) : super(orig, null, null)
 
         init {
             addChild(ColorDrawable(Color.WHITE))
         }
 
         override fun newDrawable(): Drawable {
-            return DrawableContainer()
+            return DrawableContainerCompat()
         }
     }
 
-    internal class MyDrawableContainer : DrawableContainer() {
+    internal class MyDrawableContainer : DrawableContainerCompat() {
         var calledSetTintList = false
 
         init {
diff --git a/appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/AnimatedStateListDrawableCompat.java b/appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/AnimatedStateListDrawableCompat.java
index 812be2a..02e7743 100644
--- a/appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/AnimatedStateListDrawableCompat.java
+++ b/appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/AnimatedStateListDrawableCompat.java
@@ -88,7 +88,7 @@
  * {@link android.R.attr#state_last}
  * {@link android.R.attr#state_pressed}
  */
-public class AnimatedStateListDrawableCompat extends StateListDrawable
+public class AnimatedStateListDrawableCompat extends StateListDrawableCompat
         implements TintAwareDrawable {
     private static final String LOGTAG = AnimatedStateListDrawableCompat.class.getSimpleName();
     private static final String ELEMENT_TRANSITION = "transition";
diff --git a/appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/DrawableContainer.java b/appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/DrawableContainerCompat.java
similarity index 98%
rename from appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/DrawableContainer.java
rename to appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/DrawableContainerCompat.java
index e688f37..d9730ce 100644
--- a/appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/DrawableContainer.java
+++ b/appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/DrawableContainerCompat.java
@@ -18,8 +18,6 @@
 
 import static android.os.Build.VERSION_CODES.LOLLIPOP;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
-
 import android.content.res.ColorStateList;
 import android.content.res.Resources;
 import android.content.res.Resources.Theme;
@@ -39,22 +37,17 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.RequiresApi;
-import androidx.annotation.RestrictTo;
 import androidx.core.graphics.drawable.DrawableCompat;
 import androidx.core.view.ViewCompat;
 
 /**
  * A helper class that contains several {@link Drawable}s and selects which one to use.
- *
+ * <p>
  * Adapted from platform class, altered with API level checks as necessary.
- *
- * @hide
  */
-@SuppressWarnings("RedundantSuppression") // Incorrect warning, see b/179893144 for details.
-@RestrictTo(LIBRARY_GROUP_PREFIX)
-class DrawableContainer extends Drawable implements Drawable.Callback {
+public class DrawableContainerCompat extends Drawable implements Drawable.Callback {
     private static final boolean DEBUG = false;
-    private static final String TAG = "DrawableContainer";
+    private static final String TAG = "DrawableContainerCompat";
     /**
      * To be proper, we should have a getter for dither (and alpha, etc.)
      * so that proxy classes like this can save/restore their delegates'
@@ -648,7 +641,7 @@
      * release.
      */
     abstract static class DrawableContainerState extends ConstantState {
-        final DrawableContainer mOwner;
+        final DrawableContainerCompat mOwner;
         Resources mSourceRes;
         int mDensity;
         int mChangingConfigurations;
@@ -684,7 +677,7 @@
         boolean mHasTintList;
         boolean mHasTintMode;
 
-        DrawableContainerState(DrawableContainerState orig, DrawableContainer owner,
+        DrawableContainerState(DrawableContainerState orig, DrawableContainerCompat owner,
                 Resources res) {
             mOwner = owner;
             mSourceRes = res != null ? res : (orig != null ? orig.mSourceRes : null);
diff --git a/appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java b/appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java
similarity index 89%
rename from appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java
rename to appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java
index 2c1d49d..f2b04b1 100644
--- a/appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapper.java
+++ b/appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/DrawableWrapperCompat.java
@@ -16,8 +16,6 @@
 
 package androidx.appcompat.graphics.drawable;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
-
 import android.content.res.ColorStateList;
 import android.graphics.Canvas;
 import android.graphics.ColorFilter;
@@ -27,7 +25,7 @@
 import android.graphics.drawable.Drawable;
 import android.view.View;
 
-import androidx.annotation.RestrictTo;
+import androidx.annotation.Nullable;
 import androidx.core.graphics.drawable.DrawableCompat;
 
 /**
@@ -35,16 +33,18 @@
  * <p>
  * The wrapped {@link Drawable} <em>must</em> be fully released from any {@link View}
  * before wrapping, otherwise internal {@link Callback} may be dropped.
- *
- * @hide
+ * <p>
+ * Adapted from platform class, altered with API level checks as necessary.
  */
-@RestrictTo(LIBRARY_GROUP_PREFIX)
-public class DrawableWrapper extends Drawable implements Drawable.Callback {
+public class DrawableWrapperCompat extends Drawable implements Drawable.Callback {
 
     private Drawable mDrawable;
 
-    public DrawableWrapper(Drawable drawable) {
-        setWrappedDrawable(drawable);
+    /**
+     * Creates a new wrapper around the specified drawable.
+     */
+    public DrawableWrapperCompat(Drawable drawable) {
+        setDrawable(drawable);
     }
 
     @Override
@@ -218,11 +218,20 @@
         DrawableCompat.setHotspotBounds(mDrawable, left, top, right, bottom);
     }
 
-    public Drawable getWrappedDrawable() {
+    /**
+     * @return the wrapped drawable
+     */
+    @Nullable
+    public Drawable getDrawable() {
         return mDrawable;
     }
 
-    public void setWrappedDrawable(Drawable drawable) {
+    /**
+     * Sets the wrapped drawable.
+     *
+     * @param drawable the wrapped drawable
+     */
+    public void setDrawable(@Nullable Drawable drawable) {
         if (mDrawable != null) {
             mDrawable.setCallback(null);
         }
diff --git a/appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/StateListDrawable.java b/appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/StateListDrawableCompat.java
similarity index 92%
rename from appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/StateListDrawable.java
rename to appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/StateListDrawableCompat.java
index 506a1ce..7e33bca 100644
--- a/appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/StateListDrawable.java
+++ b/appcompat/appcompat-resources/src/main/java/androidx/appcompat/graphics/drawable/StateListDrawableCompat.java
@@ -19,10 +19,8 @@
 import static android.os.Build.VERSION.SDK_INT;
 import static android.os.Build.VERSION_CODES.LOLLIPOP;
 
-import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
 import static androidx.core.content.res.TypedArrayUtils.obtainAttributes;
 
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.res.Resources;
 import android.content.res.Resources.Theme;
@@ -34,7 +32,6 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.RequiresApi;
-import androidx.annotation.RestrictTo;
 import androidx.appcompat.resources.Compatibility;
 import androidx.appcompat.resources.R;
 import androidx.appcompat.widget.ResourceManagerInternal;
@@ -47,13 +44,12 @@
 
 /**
  * Lets you assign a number of graphic images to a single Drawable and swap out the visible item by
- * a string
- * ID value.
- *
- * <p>It can be defined in an XML file with the <code>&lt;selector></code> element.
+ * a string ID value.
+ * <p>
+ * It can be defined in an XML file with the <code>&lt;selector></code> element.
  * Each state Drawable is defined in a nested <code>&lt;item></code> element. For more
- * information, see the guide to <a
- * href="{@docRoot}guide/topics/resources/drawable-resource.html">Drawable Resources</a>.</p>
+ * information, see the guide to
+ * <a href="{@docRoot}guide/topics/resources/drawable-resource.html">Drawable Resources</a>.
  *
  * {@link android.R.attr#visible}
  * {@link android.R.attr#variablePadding}
@@ -71,21 +67,20 @@
  * {@link android.R.attr#state_middle}
  * {@link android.R.attr#state_last}
  * {@link android.R.attr#state_pressed}
- *
+ * <p>
  * Adapted from platform class; altered with API level checks as necessary & uses
- * {@link ResourceManagerInternal} for <code>Drawable</code> inflation.
- *
- * @hide
+ * {@code ResourceManagerInternal} for <code>Drawable</code> inflation.
  */
-@RestrictTo(LIBRARY_GROUP_PREFIX)
-@SuppressLint("RestrictedAPI") // Temporary until we have correct restriction scopes for 1.0
-class StateListDrawable extends DrawableContainer {
-    private static final String TAG = "StateListDrawable";
+public class StateListDrawableCompat extends DrawableContainerCompat {
+    private static final String TAG = "StateListDrawableCompat";
     private static final boolean DEBUG = false;
     private StateListState mStateListState;
     private boolean mMutated;
 
-    StateListDrawable() {
+    /**
+     * Creates an empty state list drawable.
+     */
+    public StateListDrawableCompat() {
         this(null, null);
     }
 
@@ -329,7 +324,7 @@
     static class StateListState extends DrawableContainerState {
         int[][] mStateSets;
 
-        StateListState(StateListState orig, StateListDrawable owner, Resources res) {
+        StateListState(StateListState orig, StateListDrawableCompat owner, Resources res) {
             super(orig, owner, res);
             if (orig != null) {
                 // Perform a shallow copy and rely on mutate() to deep-copy.
@@ -368,13 +363,13 @@
         @NonNull
         @Override
         public Drawable newDrawable() {
-            return new StateListDrawable(this, null);
+            return new StateListDrawableCompat(this, null);
         }
 
         @NonNull
         @Override
         public Drawable newDrawable(Resources res) {
-            return new StateListDrawable(this, res);
+            return new StateListDrawableCompat(this, res);
         }
 
         @Override
@@ -401,7 +396,7 @@
         }
     }
 
-    StateListDrawable(StateListState state, Resources res) {
+    StateListDrawableCompat(StateListState state, Resources res) {
         // Every state list drawable has its own constant state.
         final StateListState newState = new StateListState(state, this, res);
         setConstantState(newState);
@@ -412,7 +407,7 @@
      * This constructor exists so subclasses can avoid calling the default
      * constructor and setting up a StateListDrawable-specific constant state.
      */
-    StateListDrawable(@Nullable StateListState state) {
+    StateListDrawableCompat(@Nullable StateListState state) {
         if (state != null) {
             setConstantState(state);
         }
diff --git a/appcompat/appcompat-resources/src/main/java/androidx/appcompat/widget/DrawableUtils.java b/appcompat/appcompat-resources/src/main/java/androidx/appcompat/widget/DrawableUtils.java
index 30bac6d..360cc38 100644
--- a/appcompat/appcompat-resources/src/main/java/androidx/appcompat/widget/DrawableUtils.java
+++ b/appcompat/appcompat-resources/src/main/java/androidx/appcompat/widget/DrawableUtils.java
@@ -35,7 +35,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.RequiresApi;
 import androidx.annotation.RestrictTo;
-import androidx.appcompat.graphics.drawable.DrawableWrapper;
+import androidx.appcompat.graphics.drawable.DrawableWrapperCompat;
 import androidx.core.graphics.drawable.DrawableCompat;
 import androidx.core.graphics.drawable.WrappedDrawable;
 
@@ -133,8 +133,8 @@
             }
         } else if (drawable instanceof WrappedDrawable) {
             return canSafelyMutateDrawable(((WrappedDrawable) drawable).getWrappedDrawable());
-        } else if (drawable instanceof DrawableWrapper) {
-            return canSafelyMutateDrawable(((DrawableWrapper) drawable).getWrappedDrawable());
+        } else if (drawable instanceof DrawableWrapperCompat) {
+            return canSafelyMutateDrawable(((DrawableWrapperCompat) drawable).getDrawable());
         } else if (drawable instanceof ScaleDrawable) {
             return canSafelyMutateDrawable(((ScaleDrawable) drawable).getDrawable());
         }
diff --git a/appcompat/appcompat/api/api_lint.ignore b/appcompat/appcompat/api/api_lint.ignore
index 6a3c5f2..90541cfd 100644
--- a/appcompat/appcompat/api/api_lint.ignore
+++ b/appcompat/appcompat/api/api_lint.ignore
@@ -25,6 +25,8 @@
 
 ContextFirst: androidx.appcompat.app.AppCompatDelegate#createView(android.view.View, String, android.content.Context, android.util.AttributeSet) parameter #2:
     Context is distinct, so it must be the first argument (method `createView`)
+ContextFirst: androidx.appcompat.app.AppCompatViewInflater#createView(android.view.View, String, android.content.Context, android.util.AttributeSet, boolean, boolean, boolean, boolean) parameter #2:
+    Context is distinct, so it must be the first argument (method `createView`)
 
 
 ExecutorRegistration: androidx.appcompat.app.AppCompatDelegate#create(android.content.Context, android.app.Activity, androidx.appcompat.app.AppCompatCallback):
diff --git a/appcompat/appcompat/api/current.txt b/appcompat/appcompat/api/current.txt
index 6431f1d..0219b45 100644
--- a/appcompat/appcompat/api/current.txt
+++ b/appcompat/appcompat/api/current.txt
@@ -341,6 +341,7 @@
     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 public final android.view.View? createView(android.view.View?, String, android.content.Context, android.util.AttributeSet, boolean, boolean, boolean, boolean);
     method protected android.view.View? createView(android.content.Context!, String!, android.util.AttributeSet!);
   }
 
diff --git a/appcompat/appcompat/api/public_plus_experimental_current.txt b/appcompat/appcompat/api/public_plus_experimental_current.txt
index 6431f1d..0219b45 100644
--- a/appcompat/appcompat/api/public_plus_experimental_current.txt
+++ b/appcompat/appcompat/api/public_plus_experimental_current.txt
@@ -341,6 +341,7 @@
     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 public final android.view.View? createView(android.view.View?, String, android.content.Context, android.util.AttributeSet, boolean, boolean, boolean, boolean);
     method protected android.view.View? createView(android.content.Context!, String!, android.util.AttributeSet!);
   }
 
diff --git a/appcompat/appcompat/api/restricted_current.txt b/appcompat/appcompat/api/restricted_current.txt
index d83d334..5454c84 100644
--- a/appcompat/appcompat/api/restricted_current.txt
+++ b/appcompat/appcompat/api/restricted_current.txt
@@ -365,6 +365,7 @@
     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 public final android.view.View? createView(android.view.View?, String, android.content.Context, android.util.AttributeSet, boolean, boolean, boolean, boolean);
     method protected android.view.View? createView(android.content.Context!, String!, android.util.AttributeSet!);
   }
 
diff --git a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/LocalesConfigChangedUsingInvalidTopLocale.kt b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/LocalesConfigChangedUsingInvalidTopLocale.kt
new file mode 100644
index 0000000..6e943aa
--- /dev/null
+++ b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/LocalesConfigChangedUsingInvalidTopLocale.kt
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.appcompat.app
+
+import androidx.appcompat.testutils.LocalesActivityTestRule
+import androidx.appcompat.testutils.LocalesUtils
+import androidx.appcompat.testutils.LocalesUtils.assertConfigurationLocalesEquals
+import androidx.core.os.LocaleListCompat
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.LargeTest
+import androidx.test.filters.SdkSuppress
+import org.junit.After
+import org.junit.Assert
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@LargeTest
+@RunWith(AndroidJUnit4::class)
+// TODO(b/218430372): Modify SdkSuppress annotation in tests for backward compatibility of
+// setApplicationLocales
+@SdkSuppress(minSdkVersion = 24, maxSdkVersion = 32)
+class LocalesConfigChangedUsingInvalidTopLocale() {
+
+    var CUSTOM_LOCALES_INVALID_LOCALES_AT_TOP = LocaleListCompat.forLanguageTags("XX,hi,es")
+    var CUSTOM_LOCALES_AFTER_REARRANGEMENT = LocaleListCompat.forLanguageTags("hi,XX,es")
+
+    @get:Rule
+    val activityRule: LocalesActivityTestRule<LocalesUpdateActivity> =
+        LocalesActivityTestRule(
+            LocalesUpdateActivity::class.java,
+            initialTouchMode = false,
+            // Let the test method launch its own activity so that we can ensure it's RESUMED.
+            launchActivity = false
+        )
+
+    @Test
+    fun testInvalidLocaleDoesNotRecreateActivityInLoop() {
+        val initialActivity = activityRule.launchActivity(null)
+        // initial locales of a new activity will be the same as system locales.
+        var systemLocales = LocalesUpdateActivity.getConfigLocales(
+            initialActivity.resources.configuration
+        )
+
+        LocalesUtils.setLocalesAndWaitForRecreate(
+            initialActivity,
+            CUSTOM_LOCALES_INVALID_LOCALES_AT_TOP
+        )
+        // Wait for locales to get applied.
+        Thread.sleep(/* millis = */ 2000)
+
+        // record activity state at the end of locales application process.
+        val localesActivity2 = activityRule.activity
+
+        // wait for 2 seconds and record activity again.
+        Thread.sleep(/* millis = */ 2000)
+        val localesActivity3 = activityRule.activity
+
+        // Assert that activity has not been recreated since the recreation by
+        // setApplicationLocales i.e. it is not stuck in a recreation loop.
+        Assert.assertEquals(localesActivity3, localesActivity2)
+
+        // After activity recreation framework rearranges input custom locales and brings forwards
+        // the most suitable locale. Hence, in the new expected locales the invalid locale that
+        // was at the first position in the input locales should be moved to a later position.
+        // In this case "XX,hi,es" is rearranged to "hi,XX,es"
+        var expectedConfigLocalesAfterRearrangement =
+            LocalesUpdateActivity.overlayCustomAndSystemLocales(
+                CUSTOM_LOCALES_AFTER_REARRANGEMENT,
+                systemLocales
+            )
+
+        // Assert that the current Activity has the new adjusted locales.
+        assertConfigurationLocalesEquals(
+            expectedConfigLocalesAfterRearrangement,
+            localesActivity3.resources.configuration
+        )
+    }
+
+    @After
+    fun teardown() {
+        // Clean up
+        activityRule.runOnUiThread {
+            AppCompatDelegate.setApplicationLocales(LocaleListCompat.getEmptyLocaleList())
+        }
+    }
+}
diff --git a/appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatViewInflater.java b/appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatViewInflater.java
index d874545..c646dfa 100644
--- a/appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatViewInflater.java
+++ b/appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatViewInflater.java
@@ -95,7 +95,12 @@
 
     private final Object[] mConstructorArgs = new Object[2];
 
-    final View createView(View parent, final String name, @NonNull Context context,
+    /**
+     * Creates AppCompat version of the views.
+     */
+    @Nullable
+    public final View createView(@Nullable View parent, @NonNull final String name,
+            @NonNull Context context,
             @NonNull AttributeSet attrs, boolean inheritContext,
             boolean readAndroidTheme, boolean readAppTheme, boolean wrapContext) {
         final Context originalContext = context;
diff --git a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/DropDownListView.java b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/DropDownListView.java
index 561672f..7575f3c 100644
--- a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/DropDownListView.java
+++ b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/DropDownListView.java
@@ -37,7 +37,7 @@
 import androidx.annotation.OptIn;
 import androidx.annotation.RequiresApi;
 import androidx.appcompat.R;
-import androidx.appcompat.graphics.drawable.DrawableWrapper;
+import androidx.appcompat.graphics.drawable.DrawableWrapperCompat;
 import androidx.core.graphics.drawable.DrawableCompat;
 import androidx.core.os.BuildCompat;
 import androidx.core.view.ViewPropertyAnimatorCompat;
@@ -392,7 +392,7 @@
         }
     }
 
-    private static class GateKeeperDrawable extends DrawableWrapper {
+    private static class GateKeeperDrawable extends DrawableWrapperCompat {
         private boolean mEnabled;
 
         GateKeeperDrawable(Drawable drawable) {
diff --git a/asynclayoutinflater/asynclayoutinflater/api/api_lint.ignore b/asynclayoutinflater/asynclayoutinflater/api/api_lint.ignore
new file mode 100644
index 0000000..c599fc2
--- /dev/null
+++ b/asynclayoutinflater/asynclayoutinflater/api/api_lint.ignore
@@ -0,0 +1,5 @@
+// Baseline format: 1.0
+ContextFirst: androidx.asynclayoutinflater.view.AppCompatFactory2#onCreateView(String, android.content.Context, android.util.AttributeSet) parameter #1:
+    Context is distinct, so it must be the first argument (method `onCreateView`)
+ContextFirst: androidx.asynclayoutinflater.view.AppCompatFactory2#onCreateView(android.view.View, String, android.content.Context, android.util.AttributeSet) parameter #2:
+    Context is distinct, so it must be the first argument (method `onCreateView`)
diff --git a/asynclayoutinflater/asynclayoutinflater/api/current.txt b/asynclayoutinflater/asynclayoutinflater/api/current.txt
index 31ea2c7..32c043c 100644
--- a/asynclayoutinflater/asynclayoutinflater/api/current.txt
+++ b/asynclayoutinflater/asynclayoutinflater/api/current.txt
@@ -1,6 +1,12 @@
 // Signature format: 4.0
 package androidx.asynclayoutinflater.view {
 
+  public class AppCompatFactory2 implements android.view.LayoutInflater.Factory2 {
+    ctor public AppCompatFactory2();
+    method public android.view.View? onCreateView(android.view.View?, String, android.content.Context, android.util.AttributeSet);
+    method public android.view.View? onCreateView(String, android.content.Context, android.util.AttributeSet);
+  }
+
   public final class AsyncLayoutInflater {
     ctor public AsyncLayoutInflater(android.content.Context);
     method @Deprecated @UiThread public void inflate(@LayoutRes int, android.view.ViewGroup?, androidx.asynclayoutinflater.view.AsyncLayoutInflater.OnInflateFinishedListener);
diff --git a/asynclayoutinflater/asynclayoutinflater/api/public_plus_experimental_current.txt b/asynclayoutinflater/asynclayoutinflater/api/public_plus_experimental_current.txt
index 31ea2c7..32c043c 100644
--- a/asynclayoutinflater/asynclayoutinflater/api/public_plus_experimental_current.txt
+++ b/asynclayoutinflater/asynclayoutinflater/api/public_plus_experimental_current.txt
@@ -1,6 +1,12 @@
 // Signature format: 4.0
 package androidx.asynclayoutinflater.view {
 
+  public class AppCompatFactory2 implements android.view.LayoutInflater.Factory2 {
+    ctor public AppCompatFactory2();
+    method public android.view.View? onCreateView(android.view.View?, String, android.content.Context, android.util.AttributeSet);
+    method public android.view.View? onCreateView(String, android.content.Context, android.util.AttributeSet);
+  }
+
   public final class AsyncLayoutInflater {
     ctor public AsyncLayoutInflater(android.content.Context);
     method @Deprecated @UiThread public void inflate(@LayoutRes int, android.view.ViewGroup?, androidx.asynclayoutinflater.view.AsyncLayoutInflater.OnInflateFinishedListener);
diff --git a/asynclayoutinflater/asynclayoutinflater/api/restricted_current.txt b/asynclayoutinflater/asynclayoutinflater/api/restricted_current.txt
index 31ea2c7..32c043c 100644
--- a/asynclayoutinflater/asynclayoutinflater/api/restricted_current.txt
+++ b/asynclayoutinflater/asynclayoutinflater/api/restricted_current.txt
@@ -1,6 +1,12 @@
 // Signature format: 4.0
 package androidx.asynclayoutinflater.view {
 
+  public class AppCompatFactory2 implements android.view.LayoutInflater.Factory2 {
+    ctor public AppCompatFactory2();
+    method public android.view.View? onCreateView(android.view.View?, String, android.content.Context, android.util.AttributeSet);
+    method public android.view.View? onCreateView(String, android.content.Context, android.util.AttributeSet);
+  }
+
   public final class AsyncLayoutInflater {
     ctor public AsyncLayoutInflater(android.content.Context);
     method @Deprecated @UiThread public void inflate(@LayoutRes int, android.view.ViewGroup?, androidx.asynclayoutinflater.view.AsyncLayoutInflater.OnInflateFinishedListener);
diff --git a/asynclayoutinflater/asynclayoutinflater/build.gradle b/asynclayoutinflater/asynclayoutinflater/build.gradle
index cbb041d..a559503 100644
--- a/asynclayoutinflater/asynclayoutinflater/build.gradle
+++ b/asynclayoutinflater/asynclayoutinflater/build.gradle
@@ -9,11 +9,11 @@
     api("androidx.annotation:annotation:1.1.0")
     api("androidx.core:core:1.1.0")
     constraints {
-        implementation("androidx.appcompat:appcompat:1.1.0") // Optional dependency via compile-only
+        implementation(project(":appcompat:appcompat")) // Optional dependency via compile-only
     }
-    compileOnly("androidx.appcompat:appcompat:1.1.0")
+    compileOnly(project(":appcompat:appcompat"))
 
-    androidTestImplementation("androidx.appcompat:appcompat:1.1.0")
+    androidTestImplementation(project(":appcompat:appcompat"))
     androidTestImplementation(libs.testCore)
     androidTestImplementation(libs.testRunner)
     androidTestImplementation(libs.testRules)
@@ -31,5 +31,8 @@
 }
 
 android {
+    buildTypes.all {
+        consumerProguardFiles("proguard-rules.pro")
+    }
     namespace "androidx.asynclayoutinflater"
 }
diff --git a/asynclayoutinflater/asynclayoutinflater/proguard-rules.pro b/asynclayoutinflater/asynclayoutinflater/proguard-rules.pro
new file mode 100644
index 0000000..9928140
--- /dev/null
+++ b/asynclayoutinflater/asynclayoutinflater/proguard-rules.pro
@@ -0,0 +1,11 @@
+# Ignore missing classes from optional AppCompat dependency.
+-dontwarn androidx.appcompat.app.AppCompatActivity
+-dontwarn androidx.appcompat.app.AppCompatCallback
+-dontwarn androidx.appcompat.app.AppCompatDelegate
+-dontwarn androidx.appcompat.app.AppCompatViewInflater
+-dontwarn androidx.appcompat.widget.VectorEnabledTintResources
+-dontwarn androidx.appcompat.R
+-dontwarn android.support.v7.app.AppCompatActivity
+-dontwarn android.support.v7.app.AppCompatViewInflater
+-dontwarn android.support.v7.appcompat.R$styleable
+-dontwarn android.support.v7.widget.VectorEnabledTintResources
\ No newline at end of file
diff --git a/asynclayoutinflater/asynclayoutinflater/src/androidTest/java/androidx/asynclayoutinflater/view/AsyncLayoutInflaterTest.java b/asynclayoutinflater/asynclayoutinflater/src/androidTest/java/androidx/asynclayoutinflater/view/AsyncLayoutInflaterTest.java
index b29028c..9adfa28 100644
--- a/asynclayoutinflater/asynclayoutinflater/src/androidTest/java/androidx/asynclayoutinflater/view/AsyncLayoutInflaterTest.java
+++ b/asynclayoutinflater/asynclayoutinflater/src/androidTest/java/androidx/asynclayoutinflater/view/AsyncLayoutInflaterTest.java
@@ -15,6 +15,7 @@
  */
 package androidx.asynclayoutinflater.view;
 
+import android.os.Build;
 import android.os.Looper;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -23,6 +24,7 @@
 import androidx.test.ext.junit.rules.ActivityScenarioRule;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.MediumTest;
+import androidx.test.filters.SdkSuppress;
 
 import com.google.common.util.concurrent.SettableFuture;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
@@ -75,6 +77,7 @@
     }
 
     @Test
+    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.LOLLIPOP)
     public void correctAsyncInflaterView_forButton() throws Exception {
         SettableFuture<View> asyncInflatedViewFuture = SettableFuture.create();
         mAsyncLayoutInflater.inflateWithOriginalFactory(R.layout.test_button, null,
diff --git a/asynclayoutinflater/asynclayoutinflater/src/main/java/androidx/asynclayoutinflater/view/AppCompatFactory2.java b/asynclayoutinflater/asynclayoutinflater/src/main/java/androidx/asynclayoutinflater/view/AppCompatFactory2.java
new file mode 100644
index 0000000..03c6586
--- /dev/null
+++ b/asynclayoutinflater/asynclayoutinflater/src/main/java/androidx/asynclayoutinflater/view/AppCompatFactory2.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package androidx.asynclayoutinflater.view;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.R;
+import androidx.appcompat.app.AppCompatViewInflater;
+import androidx.appcompat.widget.VectorEnabledTintResources;
+/**
+ * Factory for inflating views in AppCompat activity. This is used when Async inflater is created
+ * with AppCompat context.
+ */
+public class AppCompatFactory2 implements LayoutInflater.Factory2 {
+    private static final String TAG = "AppCompatFactory2";
+    private AppCompatViewInflater mAppCompatViewInflater;
+    /**
+     * Creates view using {@link AppCompatViewInflater}.
+     */
+    @Nullable
+    @Override
+    public View onCreateView(@Nullable View parent, @NonNull String name, @NonNull Context context,
+            @NonNull AttributeSet attrs) {
+        return createView(parent, name, context, attrs);
+    }
+    /**
+     * Creates view using {@link AppCompatViewInflater}.
+     */
+    @Nullable
+    @Override
+    public View onCreateView(@NonNull String name, @NonNull Context context,
+            @NonNull AttributeSet attrs) {
+        return createView(/* parent= */ null, name, context, attrs);
+    }
+    View createView(View parent, final String name, @NonNull Context context,
+            @NonNull AttributeSet attrs) {
+        if (mAppCompatViewInflater == null) {
+            TypedArray a = context.obtainStyledAttributes(R.styleable.AppCompatTheme);
+            String viewInflaterClassName = a.getString(
+                    R.styleable.AppCompatTheme_viewInflaterClass);
+            if (viewInflaterClassName == null) {
+                // Set to null (the default in all AppCompat themes). Create the base inflater
+                // (no reflection)
+                mAppCompatViewInflater = new AppCompatViewInflater();
+            } else {
+                try {
+                    Class<?> viewInflaterClass = context.getClassLoader().loadClass(
+                            viewInflaterClassName);
+                    mAppCompatViewInflater =
+                            (AppCompatViewInflater) viewInflaterClass
+                                    .getDeclaredConstructor()
+                                    .newInstance();
+                } catch (Throwable t) {
+                    Log.i(TAG, "Failed to instantiate custom view inflater " + viewInflaterClassName
+                            + ". Falling back to default.", t);
+                    mAppCompatViewInflater = new AppCompatViewInflater();
+                }
+            }
+        }
+        return mAppCompatViewInflater.createView(parent, name, context, attrs,
+                /* inheritContext= */ false,
+                /* isPreLollipop= */ false,
+                true, /* Read read app:theme as a fallback at all times for legacy reasons */
+                VectorEnabledTintResources.shouldBeUsed() /* Only tint wrap the context if
+                enabled */);
+    }
+}
diff --git a/asynclayoutinflater/asynclayoutinflater/src/main/java/androidx/asynclayoutinflater/view/AsyncLayoutInflater.java b/asynclayoutinflater/asynclayoutinflater/src/main/java/androidx/asynclayoutinflater/view/AsyncLayoutInflater.java
index 698bdc2..5d2d9be 100644
--- a/asynclayoutinflater/asynclayoutinflater/src/main/java/androidx/asynclayoutinflater/view/AsyncLayoutInflater.java
+++ b/asynclayoutinflater/asynclayoutinflater/src/main/java/androidx/asynclayoutinflater/view/AsyncLayoutInflater.java
@@ -16,8 +16,8 @@
 
 package androidx.asynclayoutinflater.view;
 
-import android.app.Activity;
 import android.content.Context;
+import android.os.Build;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
@@ -32,8 +32,6 @@
 import androidx.annotation.Nullable;
 import androidx.annotation.UiThread;
 import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.app.AppCompatCallback;
-import androidx.appcompat.app.AppCompatDelegate;
 import androidx.core.util.Pools.SynchronizedPool;
 
 import java.util.concurrent.ArrayBlockingQueue;
@@ -71,6 +69,7 @@
  */
 public final class AsyncLayoutInflater {
     private static final String TAG = "AsyncLayoutInflater";
+    private static final boolean IS_POST_LOLLIPOP = Build.VERSION.SDK_INT >= 21;
     private static boolean sAppCompatPresent;
     static {
         try {
@@ -91,12 +90,8 @@
         mInflater = new BasicInflater(context);
         mHandler = new Handler(Looper.myLooper(), mHandlerCallback);
         mInflateThread = InflateThread.getInstance();
-        if (sAppCompatPresent && context instanceof AppCompatActivity) {
-            AppCompatDelegate delegate = AppCompatDelegate.create((Activity) context,
-                    (AppCompatCallback) context);
-            if (delegate instanceof LayoutInflater.Factory2) {
-                mInflater.setFactory2((LayoutInflater.Factory2) delegate);
-            }
+        if (sAppCompatPresent && context instanceof AppCompatActivity && IS_POST_LOLLIPOP) {
+            mInflater.setFactory2(new AppCompatFactory2());
         }
     }
 
diff --git a/buildSrc-tests/src/test/kotlin/androidx/build/AndroidXPluginTestContext.kt b/buildSrc-tests/src/test/kotlin/androidx/build/AndroidXPluginTestContext.kt
index 5e08ae5..3f36a64 100644
--- a/buildSrc-tests/src/test/kotlin/androidx/build/AndroidXPluginTestContext.kt
+++ b/buildSrc-tests/src/test/kotlin/androidx/build/AndroidXPluginTestContext.kt
@@ -19,6 +19,8 @@
 import androidx.build.AndroidXPluginTestContext.Companion.wrap
 import androidx.testutils.gradle.ProjectSetupRule
 import java.io.File
+import java.lang.AssertionError
+import java.util.zip.ZipInputStream
 import net.saff.checkmark.Checkmark.Companion.check
 import net.saff.checkmark.Checkmark.Companion.checks
 import org.gradle.testkit.runner.BuildResult
@@ -47,6 +49,8 @@
     }
 }
 
+typealias GradleRunAction = (GradleRunner) -> BuildResult
+
 /**
  * Context for tests of the AndroidX plugins.  Entry point is [pluginTest], and the values
  *
@@ -64,7 +68,12 @@
     // Gradle sometimes canonicalizes this path, so we have to or things don't match up.
     val supportRoot: File = setup.rootDir.canonicalFile
 
-    fun runGradle(vararg args: String): BuildResult {
+    private val defaultBuildAction: GradleRunAction = { it.build() }
+
+    fun runGradle(
+        vararg args: String,
+        buildAction: GradleRunAction = defaultBuildAction
+    ): BuildResult {
         // Empty environment so that the host environment does not leak through
         val env = mapOf<String, String>()
         return GradleRunner.create().withProjectDir(supportRoot)
@@ -73,7 +82,30 @@
                 "-P$ALLOW_MISSING_LINT_CHECKS_PROJECT=true",
                 *args
             )
-            .withEnvironment(env).withEnvironment(env).build()
+            .withEnvironment(env).withEnvironment(env).let { buildAction(it) }.also {
+                checkNoClassloaderErrors(it)
+            }
+    }
+
+    private fun checkNoClassloaderErrors(result: BuildResult) {
+        // We're seeing b/237103195 flakily.  When we do, let's grab additional debugging info.
+        val className = "androidx.build.gradle.ExtensionsKt"
+        if (result.output.contains("java.lang.ClassNotFoundException: $className")) {
+            buildString {
+                appendLine("classloader error START")
+                append(result.output)
+                appendLine("classloader error END")
+                appendLine("Contents of public.jar:")
+                buildJars.publicJar.let { jar ->
+                    ZipInputStream(jar.inputStream()).use {
+                        while (true) {
+                            val entry = it.nextEntry ?: return@use
+                            appendLine(entry.name)
+                        }
+                    }
+                }
+            }.let { throw AssertionError(it) }
+        }
     }
 
     fun AndroidXSelfTestProject.checkConfigurationSucceeds() {
diff --git a/buildSrc-tests/src/test/kotlin/androidx/build/AndroidXPluginTestContextTest.kt b/buildSrc-tests/src/test/kotlin/androidx/build/AndroidXPluginTestContextTest.kt
new file mode 100644
index 0000000..e3e4d66
--- /dev/null
+++ b/buildSrc-tests/src/test/kotlin/androidx/build/AndroidXPluginTestContextTest.kt
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.build
+
+import net.saff.checkmark.Checkmark.Companion.check
+import org.gradle.testkit.runner.internal.DefaultBuildResult
+import org.junit.Test
+
+class AndroidXPluginTestContextTest {
+    @Test
+    fun useBuildAction() = pluginTest {
+        runGradle("") { buildResult("fake output!") }.check {
+            it.output == "fake output!"
+        }
+    }
+
+    @Test
+    fun betterDebuggingForClasspathIssues() = pluginTest {
+        thrown {
+            runGradle("") {
+                val className = "androidx.build.gradle.ExtensionsKt"
+                buildResult("java.lang.ClassNotFoundException: $className")
+            }
+        }!!.check {
+            // Since we're faking this error, we expect that the class is actually there in the jar
+            it.message!!.contains("androidx/build/gradle/ExtensionsKt.class")
+        }
+    }
+
+    private fun buildResult(output: String) = DefaultBuildResult(output, listOf())
+
+    private fun thrown(action: () -> Unit): Throwable? {
+        try {
+            action()
+        } catch (e: Throwable) {
+            return e
+        }
+        return null
+    }
+}
\ No newline at end of file
diff --git a/buildSrc-tests/src/test/kotlin/androidx/build/BuildJars.kt b/buildSrc-tests/src/test/kotlin/androidx/build/BuildJars.kt
index ba9f088..2962064 100644
--- a/buildSrc-tests/src/test/kotlin/androidx/build/BuildJars.kt
+++ b/buildSrc-tests/src/test/kotlin/androidx/build/BuildJars.kt
@@ -30,7 +30,7 @@
     private fun findJar(name: String) = outBuildSrc.resolve("$name/build/libs/$name.jar")
     val privateJar = findJar("private")
     val pluginsJar = findJar("plugins")
-    private val publicJar = findJar("public")
+    val publicJar = findJar("public")
     private val jetpadIntegrationJar = findJar("jetpad-integration")
 
     fun classpathEntries(): String {
@@ -38,6 +38,7 @@
         //              first test.  Hopefully, b/239066130 will allow us to drop these checks
 
         waitForFileToExist(privateJar)
+        waitForFileToExist(pluginsJar)
         waitForFileToExist(publicJar)
         waitForFileToExist(jetpadIntegrationJar)
 
diff --git a/buildSrc-tests/src/test/kotlin/androidx/build/dependencyTracker/ChangeInfoGitClientTest.kt b/buildSrc-tests/src/test/kotlin/androidx/build/dependencyTracker/ChangeInfoGitClientTest.kt
index 3de3588..0e37d85 100644
--- a/buildSrc-tests/src/test/kotlin/androidx/build/dependencyTracker/ChangeInfoGitClientTest.kt
+++ b/buildSrc-tests/src/test/kotlin/androidx/build/dependencyTracker/ChangeInfoGitClientTest.kt
@@ -18,13 +18,13 @@
 
 import androidx.build.gitclient.ChangeInfoGitClient
 import androidx.build.gitclient.GitCommitRange
+import com.google.gson.JsonSyntaxException
+import java.io.File
 import junit.framework.TestCase.assertEquals
 import org.gradle.api.GradleException
-import org.json.simple.parser.ParseException
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.io.File
 
 @RunWith(JUnit4::class)
 class ChangeInfoGitClientTest {
@@ -216,15 +216,9 @@
         )
     }
 
-    @Test
+    @Test(expected = JsonSyntaxException::class)
     fun findChangedFilesSince_malformedJson() {
-        var threw = false
-        try {
-            checkChangedFiles("{", listOf())
-        } catch (e: ParseException) {
-            threw = true
-        }
-        assertEquals("Did not detect malformed json", threw, true)
+        checkChangedFiles("{", listOf())
     }
 
     fun checkChangedFiles(config: String, expectedFiles: List<String>) {
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXComposeImplPlugin.kt b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXComposeImplPlugin.kt
index 998c6ad..46f55a3 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXComposeImplPlugin.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXComposeImplPlugin.kt
@@ -161,6 +161,8 @@
                     error.add("MutableCollectionMutableState")
                     error.add("UnnecessaryComposedModifier")
                     error.add("FrequentlyChangedStateReadInComposition")
+                    error.add("ReturnFromAwaitPointerEventScope")
+                    error.add("UseOfNonLambdaOffsetOverload")
 
                     // Paths we want to enable ListIterator checks for - for higher level
                     // libraries it won't have a noticeable performance impact, and we don't want
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
index 54cf195..6d34274 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
@@ -55,12 +55,19 @@
 import com.android.build.gradle.TestedExtension
 import com.android.build.gradle.internal.tasks.AnalyticsRecordingTask
 import com.android.build.gradle.internal.tasks.ListingFileRedirectTask
+import java.io.File
+import java.time.Duration
+import java.util.Locale
+import java.util.concurrent.ConcurrentHashMap
+import javax.inject.Inject
 import org.gradle.api.GradleException
-import org.gradle.api.JavaVersion.VERSION_1_8
 import org.gradle.api.JavaVersion.VERSION_11
+import org.gradle.api.JavaVersion.VERSION_1_8
 import org.gradle.api.Plugin
 import org.gradle.api.Project
 import org.gradle.api.Task
+import org.gradle.api.artifacts.repositories.IvyArtifactRepository
+import org.gradle.api.component.SoftwareComponentFactory
 import org.gradle.api.file.DuplicatesStrategy
 import org.gradle.api.plugins.JavaPlugin
 import org.gradle.api.plugins.JavaPluginExtension
@@ -73,25 +80,18 @@
 import org.gradle.api.tasks.testing.Test
 import org.gradle.api.tasks.testing.logging.TestExceptionFormat
 import org.gradle.api.tasks.testing.logging.TestLogEvent
+import org.gradle.kotlin.dsl.KotlinClosure1
 import org.gradle.kotlin.dsl.create
 import org.gradle.kotlin.dsl.extra
 import org.gradle.kotlin.dsl.findByType
 import org.gradle.kotlin.dsl.getByType
+import org.gradle.kotlin.dsl.register
 import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension
 import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
 import org.jetbrains.kotlin.gradle.plugin.KotlinBasePluginWrapper
 import org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
-import java.io.File
-import java.time.Duration
-import java.util.Locale
-import java.util.concurrent.ConcurrentHashMap
-import javax.inject.Inject
-import org.gradle.api.component.SoftwareComponentFactory
-import org.gradle.api.artifacts.repositories.IvyArtifactRepository
-import org.gradle.kotlin.dsl.KotlinClosure1
-import org.gradle.kotlin.dsl.register
 import org.jetbrains.kotlin.gradle.targets.native.KotlinNativeHostTestRun
+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile
 import org.jetbrains.kotlin.gradle.testing.KotlinTaskTestRun
 
@@ -869,7 +869,6 @@
         const val CREATE_LIBRARY_BUILD_INFO_FILES_TASK = "createLibraryBuildInfoFiles"
         const val CREATE_AGGREGATE_BUILD_INFO_FILES_TASK = "createAggregateBuildInfoFiles"
         const val GENERATE_TEST_CONFIGURATION_TASK = "GenerateTestConfiguration"
-        const val REPORT_LIBRARY_METRICS_TASK = "reportLibraryMetrics"
         const val ZIP_TEST_CONFIGS_WITH_APKS_TASK = "zipTestConfigsWithApks"
         const val ZIP_CONSTRAINED_TEST_CONFIGS_WITH_APKS_TASK = "zipConstrainedTestConfigsWithApks"
 
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/LintConfiguration.kt b/buildSrc/private/src/main/kotlin/androidx/build/LintConfiguration.kt
index 26234ab..f41fa12 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/LintConfiguration.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/LintConfiguration.kt
@@ -177,7 +177,9 @@
         if (task.name.startsWith("updateLintBaseline")) {
             task.doLast {
                 task.outputs.files.find { it.name == "lint-baseline.xml" }?.let { file ->
-                    file.writeText(removeLineAndColumnAttributes(file.readText()))
+                    if (file.exists()) {
+                        file.writeText(removeLineAndColumnAttributes(file.readText()))
+                    }
                 }
             }
         }
@@ -226,9 +228,6 @@
         disable.add("ReservedSystemPermission")
         disable.add("SystemPermissionTypo")
 
-        // Reenable after b/235251897 is resolved
-        disable.add("IllegalExperimentalApiUsage")
-
         // Disable dependency checks that suggest to change them. We want libraries to be
         // intentional with their dependency version bumps.
         disable.add("KtxExtensionAvailable")
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/ListTaskOutputsTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/ListTaskOutputsTask.kt
index 2952d1a..afc0024 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/ListTaskOutputsTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/ListTaskOutputsTask.kt
@@ -42,6 +42,9 @@
     init {
         group = "Help"
         outputs.upToDateWhen { false }
+        notCompatibleWithConfigurationCache(
+            "This task uses project object to inspect outputs of all tasks"
+        )
     }
 
     fun setOutput(f: File) {
@@ -122,37 +125,6 @@
     "generateReleaseProtos",
     // Release APKs
     "copyReleaseApk",
-    // b/223733695
-    "pixel2api31DebugAndroidTest",
-    "pixel2api31ReleaseAndroidTest",
-    "pixel2api31WithExpandProjectionDebugAndroidTest",
-    "pixel2api31WithNullAwareTypeConverterDebugAndroidTest",
-    "pixel2api31WithoutExpandProjectionDebugAndroidTest",
-    "pixel2api31WithKaptDebugAndroidTest",
-    "pixel2api31WithKspDebugAndroidTest",
-    "pixel2api31TargetSdk29DebugAndroidTest",
-    "pixel2api31TargetSdk30DebugAndroidTest",
-    "pixel2api31TargetSdkLatestDebugAndroidTest",
-    "pixel2api30DebugAndroidTest",
-    "pixel2api30ReleaseAndroidTest",
-    "pixel2api30WithExpandProjectionDebugAndroidTest",
-    "pixel2api30WithNullAwareTypeConverterDebugAndroidTest",
-    "pixel2api30WithoutExpandProjectionDebugAndroidTest",
-    "pixel2api30WithKaptDebugAndroidTest",
-    "pixel2api30WithKspDebugAndroidTest",
-    "pixel2api30TargetSdk29DebugAndroidTest",
-    "pixel2api30TargetSdk30DebugAndroidTest",
-    "pixel2api30TargetSdkLatestDebugAndroidTest",
-    "pixel2api29DebugAndroidTest",
-    "pixel2api29ReleaseAndroidTest",
-    "pixel2api29WithExpandProjectionDebugAndroidTest",
-    "pixel2api29WithNullAwareTypeConverterDebugAndroidTest",
-    "pixel2api29WithoutExpandProjectionDebugAndroidTest",
-    "pixel2api29WithKaptDebugAndroidTest",
-    "pixel2api29WithKspDebugAndroidTest",
-    "pixel2api29TargetSdk29DebugAndroidTest",
-    "pixel2api29TargetSdk30DebugAndroidTest",
-    "pixel2api29TargetSdkLatestDebugAndroidTest",
 )
 
 val taskTypesKnownToDuplicateOutputs = setOf(
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/ReportLibraryMetricsTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/ReportLibraryMetricsTask.kt
index 8e66f69..4b5556e 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/ReportLibraryMetricsTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/ReportLibraryMetricsTask.kt
@@ -16,7 +16,9 @@
 
 package androidx.build
 
+import com.google.gson.Gson
 import com.jakewharton.dex.DexParser.Companion.toDexParser
+import java.io.File
 import org.gradle.api.DefaultTask
 import org.gradle.api.Project
 import org.gradle.api.file.ConfigurableFileCollection
@@ -27,8 +29,6 @@
 import org.gradle.api.tasks.OutputFile
 import org.gradle.api.tasks.TaskAction
 import org.gradle.api.tasks.TaskProvider
-import org.json.simple.JSONObject
-import java.io.File
 
 private const val BYTECODE_SIZE = "bytecode_size"
 private const val METHOD_COUNT = "method_count"
@@ -57,20 +57,19 @@
     fun reportLibraryMetrics() {
         val file = outputFile.get()
         file.parentFile.mkdirs()
-        val json = JSONObject()
-
         val jarFiles = getJarFiles()
+        val map = mutableMapOf<String, Any>()
         val bytecodeSize = getBytecodeSize(jarFiles)
         if (bytecodeSize > 0L) {
-            json[BYTECODE_SIZE] = bytecodeSize
+            map[BYTECODE_SIZE] = bytecodeSize
         }
 
         val methodCount = getMethodCount(jarFiles)
         if (methodCount > 0) {
-            json[METHOD_COUNT] = methodCount
+            map[METHOD_COUNT] = methodCount
         }
 
-        file.writeText(json.toJSONString())
+        file.writeText(Gson().toJson(map))
     }
 
     private fun getJarFiles(): List<File> {
@@ -97,10 +96,7 @@
 }
 
 fun Project.configureReportLibraryMetricsTask(): TaskProvider<ReportLibraryMetricsTask> {
-    val task = tasks.register(
-        AndroidXImplPlugin.REPORT_LIBRARY_METRICS_TASK,
-        ReportLibraryMetricsTask::class.java
-    )
+    val task = tasks.register("reportLibraryMetrics", ReportLibraryMetricsTask::class.java)
     task.configure {
         val outputDir = project.rootProject.getLibraryMetricsDirectory()
         it.outputFile.set(
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/gitclient/ChangeInfoGitClient.kt b/buildSrc/private/src/main/kotlin/androidx/build/gitclient/ChangeInfoGitClient.kt
index ab175b1..d27fbb9 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/gitclient/ChangeInfoGitClient.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/gitclient/ChangeInfoGitClient.kt
@@ -16,11 +16,9 @@
 
 package androidx.build.gitclient
 
-import org.gradle.api.GradleException
-import org.json.simple.JSONArray
-import org.json.simple.JSONObject
-import org.json.simple.parser.JSONParser
+import com.google.gson.Gson
 import java.io.File
+import org.gradle.api.GradleException
 
 /**
  * A git client based on changeinfo files and manifest files created by the build server.
@@ -37,21 +35,40 @@
     /**
      * The file containing the information about which changes are new in this build
      */
-    private val changeInfo: String,
+    changeInfoText: String,
     /**
      * The file containing version information
      */
     private val versionInfo: String
 ) : GitClient {
 
-    private val changeInfoParsed: JSONObject
-
-    init {
-       val changeInfoParser = JSONParser()
-       changeInfoParsed = changeInfoParser.parse(changeInfo) as JSONObject
+    private val changeInfo: ChangeInfo by lazy {
+        val gson = Gson()
+        gson.fromJson(changeInfoText, ChangeInfo::class.java)
     }
 
-    private fun parseSupportVersion(config: String): String? {
+    private data class ChangeInfo(
+        val changes: List<ChangeEntry>?
+    )
+    private data class ChangeEntry(
+        val project: String,
+        val revisions: List<Revisions>?
+    )
+    private data class Revisions(
+        val fileInfos: List<FileInfo>?
+    )
+    private data class FileInfo(
+        val path: String?,
+        val oldPath: String?,
+        val status: String
+    )
+
+    private val changesInThisRepo: List<ChangeEntry>
+        get() {
+            return changeInfo.changes?.filter { it.project == mainProject } ?: emptyList()
+        }
+
+    private fun parseSupportVersion(config: String): String {
         val revisionRegex = Regex("revision=\"([^\"]*)\"")
         for (line in config.split("\n")) {
             if (line.contains("path=\"frameworks/support\"")) {
@@ -64,20 +81,6 @@
         throw GradleException("Could not identify frameworks/support version from text '$config'")
     }
 
-    private val changesInThisRepo: List<JSONObject>
-        get() {
-          val allChanges: JSONArray? = changeInfoParsed.get("changes") as? JSONArray
-          if (allChanges == null) {
-              return listOf()
-          } else {
-              return allChanges.map({ change ->
-                  change as JSONObject
-              }).filter({ change ->
-                  change.get("project") == mainProject
-              })
-          }
-      }
-
     /**
      * Finds changed file paths
      */
@@ -95,17 +98,20 @@
         val fileList = mutableListOf<String>()
         val fileSet = mutableSetOf<String>()
         for (change in changesInThisRepo) {
-            val revisions = change.get("revisions") as? JSONArray ?: listOf()
+            val revisions = change.revisions ?: listOf()
             for (revision in revisions) {
-                val fileInfos = (revision as JSONObject).get("fileInfos") as? JSONArray ?: listOf()
+                val fileInfos = revision.fileInfos ?: listOf()
                 for (fileInfo in fileInfos) {
-                    for (pathKey in listOf("oldPath", "path")) { // path and oldPath list files
-                        val path = (fileInfo as JSONObject).get(pathKey)?.toString()
-                        if (path != null) {
-                            if (!fileSet.contains(path)) {
-                                fileList.add(path)
-                                fileSet.add(path)
-                            }
+                    fileInfo.oldPath?.let { path ->
+                        if (!fileSet.contains(path)) {
+                            fileList.add(path)
+                            fileSet.add(path)
+                        }
+                    }
+                    fileInfo.path?.let { path ->
+                        if (!fileSet.contains(path)) {
+                            fileList.add(path)
+                            fileSet.add(path)
                         }
                     }
                 }
@@ -119,7 +125,7 @@
      * If this were supported, it would:
      * Finds the most recently submitted change before any pending changes being tested
      */
-    override fun findPreviousSubmittedChange(): String? {
+    override fun findPreviousSubmittedChange(): String {
         // findChangedFilesSince doesn't need this information, so
         // this is unsupported at the moment.
         // For now we just return a non-null string to signify that there was no error
@@ -142,13 +148,14 @@
         if (gitCommitRange.untilInclusive != "HEAD") {
             throw UnsupportedOperationException(
                 "ChangeInfoGitClient only supports untilInclusive = HEAD, " +
-                "not ${gitCommitRange.untilInclusive}"
+                    "not ${gitCommitRange.untilInclusive}"
             )
         }
-        var latestCommit: String? = parseSupportVersion(versionInfo)
-        if (latestCommit != null) {
-            return listOf(Commit("_CommitSHA:$latestCommit", fullProjectDir.toString()))
-        }
-        return listOf()
+        return listOf(
+            Commit(
+                "_CommitSHA:${parseSupportVersion(versionInfo)}",
+                fullProjectDir.toString()
+            )
+        )
     }
 }
diff --git a/buildSrc/repos.gradle b/buildSrc/repos.gradle
index 8b0890b..9b5077d 100644
--- a/buildSrc/repos.gradle
+++ b/buildSrc/repos.gradle
@@ -50,20 +50,6 @@
             excludeGroupByRegex "androidx.databinding.*"
         }
     }
-    handler.ivy {
-        // TODO: maybe we can move this no-group ivy repo directly into prebuilts/androidx/external
-        // once https://youtrack.jetbrains.com/issue/KT-35049 gets resolved */
-        url("${repos.prebuiltsRoot}/androidx/external/no-group")
-        patternLayout {
-            artifact("[artifact]/[revision]/[artifact]-[revision].[ext]")
-        }
-        metadataSources {
-            it.artifact()
-        }
-        content {
-            includeGroup("")
-        }
-    }
     handler.maven {
         url("${repos.prebuiltsRoot}/androidx/external")
         metadataSources {
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraPipe.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraPipe.kt
index f092b49..0f41232 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraPipe.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraPipe.kt
@@ -46,11 +46,6 @@
  * the [CameraGraph] interface.
  */
 public class CameraPipe(config: Config) {
-
-    @Deprecated("threadConfig should be specified on config.")
-    @Suppress("UNUSED_PARAMETER")
-    public constructor(config: Config, threadConfig: ThreadConfig) : this(config)
-
     private val debugId = cameraPipeIds.incrementAndGet()
     private val component: CameraPipeComponent = DaggerCameraPipeComponent.builder()
         .cameraPipeConfigModule(CameraPipeConfigModule(config))
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/SurfaceRequestTest.kt b/camera/camera-core/src/androidTest/java/androidx/camera/core/SurfaceRequestTest.kt
index e2b0f0f..6ff346a 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/SurfaceRequestTest.kt
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/SurfaceRequestTest.kt
@@ -16,6 +16,7 @@
 package androidx.camera.core
 
 import android.graphics.Rect
+import android.util.Range
 import android.util.Size
 import android.view.Surface
 import androidx.camera.core.impl.DeferrableSurface
@@ -65,6 +66,21 @@
     }
 
     @Test
+    fun canRetrieveExpectedFrameRate() {
+        val resolution = Size(640, 480)
+        val expectedFrameRate = Range<Int>(12, 30)
+        val request = createNewRequest(resolution, expectedFrameRate = expectedFrameRate)
+        Truth.assertThat(request.expectedFrameRate).isEqualTo(expectedFrameRate)
+    }
+
+    @Test
+    fun expectedFrameRateIsNull_whenNotSet() {
+        val resolution = Size(640, 480)
+        val request = createNewRequest(resolution)
+        Truth.assertThat(request.expectedFrameRate).isNull()
+    }
+
+    @Test
     @Suppress("UNCHECKED_CAST")
     fun setWillNotProvideSurface_resultsInWILL_NOT_PROVIDE_SURFACE() {
         val request = createNewRequest(FAKE_SIZE)
@@ -314,9 +330,10 @@
 
     private fun createNewRequest(
         size: Size,
+        expectedFrameRate: Range<Int>? = null,
         autoCleanup: Boolean = true
     ): SurfaceRequest {
-        val request = SurfaceRequest(size, FakeCamera(), false)
+        val request = SurfaceRequest(size, FakeCamera(), false, expectedFrameRate)
         if (autoCleanup) {
             surfaceRequests.add(request)
         }
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/SurfaceRequest.java b/camera/camera-core/src/main/java/androidx/camera/core/SurfaceRequest.java
index e6306cc..374f3a2b 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/SurfaceRequest.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/SurfaceRequest.java
@@ -21,6 +21,7 @@
 import android.graphics.Rect;
 import android.graphics.SurfaceTexture;
 import android.hardware.camera2.CameraCharacteristics;
+import android.util.Range;
 import android.util.Size;
 import android.view.Display;
 import android.view.Surface;
@@ -67,6 +68,9 @@
     private final Object mLock = new Object();
 
     private final Size mResolution;
+
+    @Nullable
+    private final Range<Integer> mExpectedFrameRate;
     private final boolean mRGBA8888Required;
 
     private final CameraInternal mCamera;
@@ -107,10 +111,25 @@
             @NonNull Size resolution,
             @NonNull CameraInternal camera,
             boolean isRGBA8888Required) {
+        this(resolution, camera, isRGBA8888Required, /*expectedFrameRate=*/null);
+    }
+
+    /**
+     * Creates a new surface request with the given resolution, {@link Camera}, and an optional
+     * expected frame rate.
+     * @hide
+     */
+    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+    public SurfaceRequest(
+            @NonNull Size resolution,
+            @NonNull CameraInternal camera,
+            boolean isRGBA8888Required,
+            @Nullable Range<Integer> expectedFrameRate) {
         super();
         mResolution = resolution;
         mCamera = camera;
         mRGBA8888Required = isRGBA8888Required;
+        mExpectedFrameRate = expectedFrameRate;
 
         // To ensure concurrency and ordering, operations are chained. Completion can only be
         // triggered externally by the top-level completer (mSurfaceCompleter). The other future
@@ -242,7 +261,7 @@
     /**
      * Returns the resolution of the requested {@link Surface}.
      *
-     * The surface which fulfills this request must have the resolution specified here in
+     * <p>The surface which fulfills this request must have the resolution specified here in
      * order to fulfill the resource requirements of the camera. Fulfillment of the request
      * with a surface of a different resolution may cause the {@code resultListener} passed to
      * {@link #provideSurface(Surface, Executor, Consumer)} to be invoked with a {@link Result}
@@ -257,6 +276,33 @@
     }
 
     /**
+     * Returns the expected rate at which frames will be produced into the provided {@link Surface}.
+     *
+     * <p>This information can be used to configure components that can be optimized by knowing
+     * the frame rate. For example, {@link android.media.MediaCodec} can be configured with the
+     * correct bitrate calculated from the frame rate.
+     *
+     * <p>The range may represent a variable frame rate, in which case {@link Range#getUpper()}
+     * and {@link Range#getLower()} will be different values. This is commonly used by
+     * auto-exposure algorithms to ensure a scene is exposed correctly in varying lighting
+     * conditions. The frame rate may also be fixed, in which case {@link Range#getUpper()} will
+     * be equivalent to {@link Range#getLower()}.
+     *
+     * <p>This method may also return {@code null} if no information about the frame rate can be
+     * determined. In this case, no assumptions should be made about what the actual frame rate
+     * will be.
+     *
+     * @return The expected frame rate range or {@code null} if no frame rate information is
+     * available.
+     * @hide
+     */
+    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+    @Nullable
+    public Range<Integer> getExpectedFrameRate() {
+        return mExpectedFrameRate;
+    }
+
+    /**
      * Returns the {@link Camera} which is requesting a {@link Surface}.
      *
      * @hide
diff --git a/camera/integration-tests/coretestapp/build.gradle b/camera/integration-tests/coretestapp/build.gradle
index 7fef5d8..3b85cb8 100644
--- a/camera/integration-tests/coretestapp/build.gradle
+++ b/camera/integration-tests/coretestapp/build.gradle
@@ -65,6 +65,7 @@
     implementation(project(":camera:camera-camera2-pipe-integration"))
     implementation(project(":camera:camera-core"))
     implementation(project(":camera:camera-lifecycle"))
+    implementation(project(":camera:camera-mlkit-vision"))
     implementation(project(":camera:camera-video"))
     // Needed because AGP enforces same version between main and androidTest classpaths
     implementation(project(":concurrent:concurrent-futures"))
diff --git a/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/MLKitBarcodeTest.kt b/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/MLKitBarcodeTest.kt
index 9921e84..7f0e32e 100644
--- a/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/MLKitBarcodeTest.kt
+++ b/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/MLKitBarcodeTest.kt
@@ -23,8 +23,9 @@
 import androidx.camera.camera2.Camera2Config
 import androidx.camera.core.CameraSelector
 import androidx.camera.core.ImageAnalysis
-import androidx.camera.core.impl.utils.executor.CameraXExecutors
+import androidx.camera.core.impl.utils.executor.CameraXExecutors.ioExecutor
 import androidx.camera.lifecycle.ProcessCameraProvider
+import androidx.camera.mlkit.vision.MlKitAnalyzer
 import androidx.camera.testing.CameraUtil
 import androidx.camera.testing.LabTestRule
 import androidx.camera.testing.fakes.FakeLifecycleOwner
@@ -35,7 +36,6 @@
 import com.google.mlkit.vision.barcode.BarcodeScannerOptions
 import com.google.mlkit.vision.barcode.BarcodeScanning
 import com.google.mlkit.vision.barcode.common.Barcode.FORMAT_QR_CODE
-import com.google.mlkit.vision.common.InputImage
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
 import kotlinx.coroutines.Dispatchers
@@ -68,16 +68,18 @@
     val labTest: LabTestRule = LabTestRule()
 
     companion object {
-        private const val DETECT_TIMEOUT = 5_000L
+        private const val DETECT_TIMEOUT = 10_000L
         private const val TAG = "MLKitVisionTest"
         private val size480p = Size(640, 480)
         private val size720p = Size(1280, 720)
+
         @JvmStatic
         @Parameterized.Parameters
         fun data() = listOf(size480p, size720p)
     }
 
     private val context: Context = ApplicationProvider.getApplicationContext()
+
     // For MK Kit Barcode scanner
     private lateinit var barcodeScanner: BarcodeScanner
     private var imageResolution: Size = resolution
@@ -146,36 +148,19 @@
 
     private fun assertBarcodeDetect(imageAnalysis: ImageAnalysis) {
         val latchForBarcodeDetect = CountDownLatch(2)
-
-        imageAnalysis.setAnalyzer(
-            CameraXExecutors.ioExecutor()
-        ) { imageProxy ->
-            imageResolution = Size(imageProxy.image!!.width, imageProxy.image!!.height)
-            imageRotation = imageProxy.imageInfo.rotationDegrees
-            barcodeScanner.process(
-                InputImage.fromMediaImage(
-                    imageProxy.image!!,
-                    imageProxy.imageInfo.rotationDegrees
-                )
-            )
-                .addOnSuccessListener { barcodes ->
-                    barcodes.forEach {
-                        if ("Hi, CamX!" == it.displayValue) {
-                            latchForBarcodeDetect.countDown()
-                        }
-                        Log.d(TAG, "barcode display value: {${it.displayValue}} ")
-                    }
+        val mlKitAnalyzer = MlKitAnalyzer(
+            listOf(barcodeScanner),
+            ImageAnalysis.COORDINATE_SYSTEM_ORIGINAL,
+            ioExecutor()
+        ) { result ->
+            result.getValue(barcodeScanner)?.forEach {
+                if ("Hi, CamX!" == it.displayValue) {
+                    latchForBarcodeDetect.countDown()
                 }
-                .addOnFailureListener { exception ->
-                    Log.e(TAG, "processImage onFailure: $exception")
-                }
-                // When the image is from CameraX analysis use case, must call image.close() on
-                // received images when finished using them. Otherwise, new images may not be
-                // received or the camera may stall.
-                .addOnCompleteListener {
-                    imageProxy.close()
-                }
+                Log.d(TAG, "barcode display value: {${it.displayValue}} ")
+            }
         }
+        imageAnalysis.setAnalyzer(ioExecutor(), mlKitAnalyzer)
 
         // Verify it is the CameraX lab test environment and can detect qr-code.
         assertWithMessage(
diff --git a/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/stresstest/ImageCaptureStressTest.kt b/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/stresstest/ImageCaptureStressTest.kt
new file mode 100644
index 0000000..6192486
--- /dev/null
+++ b/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/stresstest/ImageCaptureStressTest.kt
@@ -0,0 +1,258 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.camera.integration.core.stresstest
+
+import android.Manifest
+import android.content.Context
+import androidx.camera.camera2.Camera2Config
+import androidx.camera.integration.core.CameraXActivity.BIND_IMAGE_CAPTURE
+import androidx.camera.integration.core.CameraXActivity.BIND_PREVIEW
+import androidx.camera.integration.core.takePictureAndWaitForImageSavedIdle
+import androidx.camera.integration.core.util.StressTestUtil
+import androidx.camera.integration.core.util.StressTestUtil.LARGE_STRESS_TEST_REPEAT_COUNT
+import androidx.camera.integration.core.util.StressTestUtil.STRESS_TEST_OPERATION_REPEAT_COUNT
+import androidx.camera.integration.core.util.StressTestUtil.launchCameraXActivityAndWaitForPreviewReady
+import androidx.camera.integration.core.waitForViewfinderIdle
+import androidx.camera.lifecycle.ProcessCameraProvider
+import androidx.camera.testing.CameraUtil
+import androidx.camera.testing.CoreAppTestUtil
+import androidx.camera.testing.LabTestRule
+import androidx.camera.testing.StressTestRule
+import androidx.lifecycle.Lifecycle
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.filters.LargeTest
+import androidx.test.filters.SdkSuppress
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.rule.GrantPermissionRule
+import androidx.test.uiautomator.UiDevice
+import androidx.testutils.RepeatRule
+import java.util.concurrent.TimeUnit
+import kotlin.random.Random
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.runBlocking
+import kotlinx.coroutines.withContext
+import org.junit.After
+import org.junit.Assume
+import org.junit.Before
+import org.junit.ClassRule
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
+
+@LargeTest
+@RunWith(Parameterized::class)
+@SdkSuppress(minSdkVersion = 21)
+class ImageCaptureStressTest(val cameraId: String) {
+    private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
+
+    @get:Rule
+    val useCamera = CameraUtil.grantCameraPermissionAndPreTest(
+        CameraUtil.PreTestCameraIdList(Camera2Config.defaultConfig())
+    )
+
+    @get:Rule
+    val permissionRule: GrantPermissionRule =
+        GrantPermissionRule.grant(
+            Manifest.permission.WRITE_EXTERNAL_STORAGE,
+        )
+
+    @get:Rule
+    val labTest: LabTestRule = LabTestRule()
+
+    @get:Rule
+    val repeatRule = RepeatRule()
+
+    private val context = ApplicationProvider.getApplicationContext<Context>()
+
+    private lateinit var cameraProvider: ProcessCameraProvider
+
+    companion object {
+        @ClassRule
+        @JvmField
+        val stressTest = StressTestRule()
+
+        @JvmStatic
+        @get:Parameterized.Parameters(name = "cameraId = {0}")
+        val parameters: Collection<String>
+            get() = CameraUtil.getBackwardCompatibleCameraIdListOrThrow()
+    }
+
+    @Before
+    fun setup(): Unit = runBlocking {
+        Assume.assumeTrue(CameraUtil.deviceHasCamera())
+        CoreAppTestUtil.assumeCompatibleDevice()
+        // Clear the device UI and check if there is no dialog or lock screen on the top of the
+        // window before start the test.
+        CoreAppTestUtil.prepareDeviceUI(InstrumentationRegistry.getInstrumentation())
+        // Use the natural orientation throughout these tests to ensure the activity isn't
+        // recreated unexpectedly. This will also freeze the sensors until
+        // mDevice.unfreezeRotation() in the tearDown() method. Any simulated rotations will be
+        // explicitly initiated from within the test.
+        device.setOrientationNatural()
+
+        cameraProvider = ProcessCameraProvider.getInstance(context)[10000, TimeUnit.MILLISECONDS]
+    }
+
+    @After
+    fun tearDown(): Unit = runBlocking {
+        if (::cameraProvider.isInitialized) {
+            withContext(Dispatchers.Main) {
+                cameraProvider.unbindAll()
+                cameraProvider.shutdown()[10000, TimeUnit.MILLISECONDS]
+            }
+        }
+
+        // Unfreeze rotation so the device can choose the orientation via its own policy. Be nice
+        // to other tests :)
+        device.unfreezeRotation()
+        device.pressHome()
+        device.waitForIdle(StressTestUtil.HOME_TIMEOUT_MS)
+    }
+
+    @LabTestRule.LabTestOnly
+    @Test
+    @RepeatRule.Repeat(times = LARGE_STRESS_TEST_REPEAT_COUNT)
+    fun pauseResumeActivityRepeatedly_checkImageCaptureInEachTime() {
+        val useCaseCombination = BIND_PREVIEW or BIND_IMAGE_CAPTURE
+
+        // Launches CameraXActivity and wait for the preview ready.
+        val activityScenario =
+            launchCameraXActivityAndWaitForPreviewReady(cameraId, useCaseCombination)
+
+        // Pauses, resumes the activity, and then checks whether ImageCapture can capture images
+        // successfully.
+        with(activityScenario) {
+            use {
+                repeat(STRESS_TEST_OPERATION_REPEAT_COUNT) {
+                    // Go through pause/resume then check again for view to get frames then idle.
+                    moveToState(Lifecycle.State.CREATED)
+                    moveToState(Lifecycle.State.RESUMED)
+                    waitForViewfinderIdle()
+
+                    takePictureAndWaitForImageSavedIdle()
+                }
+            }
+        }
+    }
+
+    @LabTestRule.LabTestOnly
+    @Test
+    @RepeatRule.Repeat(times = LARGE_STRESS_TEST_REPEAT_COUNT)
+    fun pauseResumeActivityRepeatedly_takePictureInEachTime_withRandomDelay() {
+        val useCaseCombination = BIND_PREVIEW or BIND_IMAGE_CAPTURE
+
+        // Launches CameraXActivity and wait for the preview ready.
+        val activityScenario =
+            launchCameraXActivityAndWaitForPreviewReady(cameraId, useCaseCombination)
+
+        // Pauses, resumes the activity, and then checks whether ImageCapture can capture images
+        // successfully with random delay.
+        with(activityScenario) {
+            use {
+                repeat(STRESS_TEST_OPERATION_REPEAT_COUNT) {
+                    // Go through pause/resume then check again for view to get frames then idle.
+                    moveToState(Lifecycle.State.CREATED)
+                    moveToState(Lifecycle.State.RESUMED)
+                    waitForViewfinderIdle()
+
+                    randomDelaySeconds()
+                    takePictureAndWaitForImageSavedIdle()
+                }
+            }
+        }
+    }
+
+    @LabTestRule.LabTestOnly
+    @Test
+    @RepeatRule.Repeat(times = LARGE_STRESS_TEST_REPEAT_COUNT)
+    fun pauseResumeActivityRepeatedly_thenTakePicture() {
+        val useCaseCombination = BIND_PREVIEW or BIND_IMAGE_CAPTURE
+
+        // Launches CameraXActivity and wait for the preview ready.
+        val activityScenario =
+            launchCameraXActivityAndWaitForPreviewReady(cameraId, useCaseCombination)
+
+        // Pauses and resumes the activity repeatedly, and then checks whether ImageCapture can
+        // capture images successfully.
+        with(activityScenario) {
+            use {
+                repeat(STRESS_TEST_OPERATION_REPEAT_COUNT) {
+                    // Go through pause/resume then check again for view to get frames then idle.
+                    moveToState(Lifecycle.State.CREATED)
+                    moveToState(Lifecycle.State.RESUMED)
+                    waitForViewfinderIdle()
+                }
+
+                takePictureAndWaitForImageSavedIdle()
+            }
+        }
+    }
+
+    @LabTestRule.LabTestOnly
+    @Test
+    @RepeatRule.Repeat(times = LARGE_STRESS_TEST_REPEAT_COUNT)
+    fun launchActivity_thenTakeMultiplePictures() {
+        val useCaseCombination = BIND_PREVIEW or BIND_IMAGE_CAPTURE
+
+        // Launches CameraXActivity and wait for the preview ready.
+        val activityScenario =
+            launchCameraXActivityAndWaitForPreviewReady(cameraId, useCaseCombination)
+
+        with(activityScenario) {
+            use {
+                // Checks whether multiple images can be captured successfully
+                repeat(STRESS_TEST_OPERATION_REPEAT_COUNT) {
+                    takePictureAndWaitForImageSavedIdle()
+                }
+            }
+        }
+    }
+
+    @LabTestRule.LabTestOnly
+    @Test
+    @RepeatRule.Repeat(times = LARGE_STRESS_TEST_REPEAT_COUNT)
+    fun launchActivity_thenTakeMultiplePictures_withRandomDelay() {
+        val useCaseCombination = BIND_PREVIEW or BIND_IMAGE_CAPTURE
+
+        // Launches CameraXActivity and wait for the preview ready.
+        val activityScenario =
+            launchCameraXActivityAndWaitForPreviewReady(cameraId, useCaseCombination)
+
+        with(activityScenario) {
+            use {
+                // Checks whether multiple images can be captured successfully with random delay
+                repeat(STRESS_TEST_OPERATION_REPEAT_COUNT) {
+                    randomDelaySeconds()
+                    takePictureAndWaitForImageSavedIdle()
+                }
+            }
+        }
+    }
+
+    /**
+     * Randomly delay for seconds between 1 and the specified number. Default is 3 seconds.
+     */
+    private fun randomDelaySeconds(maxDelaySeconds: Int = 3) = runBlocking {
+        require(maxDelaySeconds > 0) {
+            "The specified max delay seconds value should be larger than 1."
+        }
+        val randomDelayDuration = (Random.nextInt(maxDelaySeconds) + 1).toLong()
+        delay(TimeUnit.SECONDS.toMillis(randomDelayDuration))
+    }
+}
\ No newline at end of file
diff --git a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/ImageCaptureExtenderValidationTest.kt b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/ImageCaptureExtenderValidationTest.kt
index c792dbc..8590255 100644
--- a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/ImageCaptureExtenderValidationTest.kt
+++ b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/ImageCaptureExtenderValidationTest.kt
@@ -27,6 +27,8 @@
 import androidx.camera.extensions.ExtensionsManager
 import androidx.camera.extensions.internal.ExtensionVersion
 import androidx.camera.extensions.internal.Version
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_CAMERA_ID
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_EXTENSION_MODE
 import androidx.camera.integration.extensions.util.ExtensionsTestUtil
 import androidx.camera.integration.extensions.utils.CameraSelectorUtil
 import androidx.camera.lifecycle.ProcessCameraProvider
@@ -203,8 +205,8 @@
 
         val intent = ApplicationProvider.getApplicationContext<Context>().packageManager
             .getLaunchIntentForPackage(BASIC_SAMPLE_PACKAGE)?.apply {
-                putExtra(CameraExtensionsActivity.INTENT_EXTRA_CAMERA_ID, cameraId)
-                putExtra(CameraExtensionsActivity.INTENT_EXTRA_EXTENSION_MODE, extensionMode)
+                putExtra(INTENT_EXTRA_KEY_CAMERA_ID, cameraId)
+                putExtra(INTENT_EXTRA_KEY_EXTENSION_MODE, extensionMode)
                 flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
             }
 
diff --git a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/ImageCaptureTest.kt b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/ImageCaptureTest.kt
index 4e4dc81..8c8262c 100644
--- a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/ImageCaptureTest.kt
+++ b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/ImageCaptureTest.kt
@@ -20,6 +20,9 @@
 import android.content.Context
 import android.content.Intent
 import androidx.camera.camera2.Camera2Config
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_CAMERA_ID
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_DELETE_CAPTURED_IMAGE
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_EXTENSION_MODE
 import androidx.camera.integration.extensions.util.ExtensionsTestUtil
 import androidx.camera.testing.CameraUtil
 import androidx.camera.testing.CameraUtil.PreTestCameraIdList
@@ -91,9 +94,9 @@
     fun takePictureWithExtensionMode() {
         val intent = ApplicationProvider.getApplicationContext<Context>().packageManager
             .getLaunchIntentForPackage(BASIC_SAMPLE_PACKAGE)?.apply {
-                putExtra(CameraExtensionsActivity.INTENT_EXTRA_CAMERA_ID, cameraId)
-                putExtra(CameraExtensionsActivity.INTENT_EXTRA_EXTENSION_MODE, extensionMode)
-                putExtra(CameraExtensionsActivity.INTENT_EXTRA_DELETE_CAPTURED_IMAGE, true)
+                putExtra(INTENT_EXTRA_KEY_CAMERA_ID, cameraId)
+                putExtra(INTENT_EXTRA_KEY_EXTENSION_MODE, extensionMode)
+                putExtra(INTENT_EXTRA_KEY_DELETE_CAPTURED_IMAGE, true)
                 flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
             }
 
diff --git a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/LifecycleStatusChangeStressTest.kt b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/LifecycleStatusChangeStressTest.kt
index 99709d8..63893a5 100644
--- a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/LifecycleStatusChangeStressTest.kt
+++ b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/LifecycleStatusChangeStressTest.kt
@@ -20,6 +20,9 @@
 import android.content.Context
 import android.content.Intent
 import androidx.camera.camera2.Camera2Config
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_CAMERA_ID
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_DELETE_CAPTURED_IMAGE
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_EXTENSION_MODE
 import androidx.camera.integration.extensions.util.ExtensionsTestUtil
 import androidx.camera.integration.extensions.util.ExtensionsTestUtil.STRESS_TEST_OPERATION_REPEAT_COUNT
 import androidx.camera.integration.extensions.util.ExtensionsTestUtil.VERIFICATION_TARGET_IMAGE_CAPTURE
@@ -212,9 +215,9 @@
     private fun launchActivityAndRetrieveIdlingResources() {
         val intent = ApplicationProvider.getApplicationContext<Context>().packageManager
             .getLaunchIntentForPackage(BASIC_SAMPLE_PACKAGE)?.apply {
-                putExtra(CameraExtensionsActivity.INTENT_EXTRA_CAMERA_ID, cameraId)
-                putExtra(CameraExtensionsActivity.INTENT_EXTRA_EXTENSION_MODE, extensionMode)
-                putExtra(CameraExtensionsActivity.INTENT_EXTRA_DELETE_CAPTURED_IMAGE, true)
+                putExtra(INTENT_EXTRA_KEY_CAMERA_ID, cameraId)
+                putExtra(INTENT_EXTRA_KEY_EXTENSION_MODE, extensionMode)
+                putExtra(INTENT_EXTRA_KEY_DELETE_CAPTURED_IMAGE, true)
                 flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
             }
 
diff --git a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/PreviewTest.kt b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/PreviewTest.kt
index ab34c76..28ea3620 100644
--- a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/PreviewTest.kt
+++ b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/PreviewTest.kt
@@ -20,6 +20,8 @@
 import android.content.Context
 import android.content.Intent
 import androidx.camera.camera2.Camera2Config
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_CAMERA_ID
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_EXTENSION_MODE
 import androidx.camera.integration.extensions.util.ExtensionsTestUtil
 import androidx.camera.testing.CameraUtil
 import androidx.camera.testing.CameraUtil.PreTestCameraIdList
@@ -89,8 +91,8 @@
     fun previewWithExtensionModeCanEnterStreamingState() {
         val intent = ApplicationProvider.getApplicationContext<Context>().packageManager
             .getLaunchIntentForPackage(BASIC_SAMPLE_PACKAGE)?.apply {
-                putExtra(CameraExtensionsActivity.INTENT_EXTRA_CAMERA_ID, cameraId)
-                putExtra(CameraExtensionsActivity.INTENT_EXTRA_EXTENSION_MODE, extensionMode)
+                putExtra(INTENT_EXTRA_KEY_CAMERA_ID, cameraId)
+                putExtra(INTENT_EXTRA_KEY_EXTENSION_MODE, extensionMode)
                 flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
             }
 
diff --git a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/SwitchAvailableModesStressTest.kt b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/SwitchAvailableModesStressTest.kt
index ee00f4b..e03c34a 100644
--- a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/SwitchAvailableModesStressTest.kt
+++ b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/SwitchAvailableModesStressTest.kt
@@ -21,6 +21,9 @@
 import android.content.Intent
 import androidx.camera.camera2.Camera2Config
 import androidx.camera.extensions.ExtensionMode
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_CAMERA_ID
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_DELETE_CAPTURED_IMAGE
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_EXTENSION_MODE
 import androidx.camera.integration.extensions.util.ExtensionsTestUtil
 import androidx.camera.integration.extensions.util.ExtensionsTestUtil.STRESS_TEST_OPERATION_REPEAT_COUNT
 import androidx.camera.testing.CameraUtil
@@ -157,9 +160,9 @@
     private fun launchActivityAndRetrieveIdlingResources() {
         val intent = ApplicationProvider.getApplicationContext<Context>().packageManager
             .getLaunchIntentForPackage(BASIC_SAMPLE_PACKAGE)?.apply {
-                putExtra(CameraExtensionsActivity.INTENT_EXTRA_CAMERA_ID, cameraId)
-                putExtra(CameraExtensionsActivity.INTENT_EXTRA_EXTENSION_MODE, ExtensionMode.NONE)
-                putExtra(CameraExtensionsActivity.INTENT_EXTRA_DELETE_CAPTURED_IMAGE, true)
+                putExtra(INTENT_EXTRA_KEY_CAMERA_ID, cameraId)
+                putExtra(INTENT_EXTRA_KEY_EXTENSION_MODE, ExtensionMode.NONE)
+                putExtra(INTENT_EXTRA_KEY_DELETE_CAPTURED_IMAGE, true)
                 flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
             }
 
diff --git a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/SwitchCameraStressTest.kt b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/SwitchCameraStressTest.kt
index 4e75c94..0d4225a 100644
--- a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/SwitchCameraStressTest.kt
+++ b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/SwitchCameraStressTest.kt
@@ -22,6 +22,9 @@
 import androidx.camera.camera2.Camera2Config
 import androidx.camera.core.CameraSelector
 import androidx.camera.extensions.ExtensionMode
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_CAMERA_ID
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_DELETE_CAPTURED_IMAGE
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_EXTENSION_MODE
 import androidx.camera.integration.extensions.util.ExtensionsTestUtil
 import androidx.camera.integration.extensions.util.ExtensionsTestUtil.STRESS_TEST_OPERATION_REPEAT_COUNT
 import androidx.camera.testing.CameraUtil
@@ -175,9 +178,9 @@
     private fun launchActivityAndRetrieveIdlingResources() {
         val intent = ApplicationProvider.getApplicationContext<Context>().packageManager
             .getLaunchIntentForPackage(BASIC_SAMPLE_PACKAGE)?.apply {
-                putExtra(CameraExtensionsActivity.INTENT_EXTRA_CAMERA_ID, "0")
-                putExtra(CameraExtensionsActivity.INTENT_EXTRA_EXTENSION_MODE, extensionMode)
-                putExtra(CameraExtensionsActivity.INTENT_EXTRA_DELETE_CAPTURED_IMAGE, true)
+                putExtra(INTENT_EXTRA_KEY_CAMERA_ID, "0")
+                putExtra(INTENT_EXTRA_KEY_EXTENSION_MODE, extensionMode)
+                putExtra(INTENT_EXTRA_KEY_DELETE_CAPTURED_IMAGE, true)
                 flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
             }
 
diff --git a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/camera2extensions/Camera2ExtensionsActivityTest.kt b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/camera2extensions/Camera2ExtensionsActivityTest.kt
index ad26829..83bfe24 100644
--- a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/camera2extensions/Camera2ExtensionsActivityTest.kt
+++ b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/camera2extensions/Camera2ExtensionsActivityTest.kt
@@ -21,14 +21,14 @@
 import android.content.Intent
 import androidx.camera.camera2.Camera2Config
 import androidx.camera.integration.extensions.Camera2ExtensionsActivity
-import androidx.camera.integration.extensions.INTENT_EXTRA_CAMERA_ID
-import androidx.camera.integration.extensions.INTENT_EXTRA_EXTENSION_MODE
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_CAMERA_ID
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_EXTENSION_MODE
 import androidx.camera.integration.extensions.util.Camera2ExtensionsTestUtil
-import androidx.camera.integration.extensions.util.Camera2ExtensionsTestUtil.isCamera2ExtensionModeSupported
 import androidx.camera.integration.extensions.util.EXTENSIONS_TEST_APP_PACKAGE
 import androidx.camera.integration.extensions.util.waitForCaptureSessionConfiguredIdle
 import androidx.camera.integration.extensions.util.waitForImageSavedIdle
 import androidx.camera.integration.extensions.util.waitForPreviewIdle
+import androidx.camera.integration.extensions.utils.Camera2ExtensionsUtil.isCamera2ExtensionModeSupported
 import androidx.camera.testing.CameraUtil
 import androidx.camera.testing.CoreAppTestUtil
 import androidx.camera.testing.LabTestRule
@@ -210,8 +210,8 @@
         assumeTrue(isCamera2ExtensionModeSupported(context, cameraId, extensionMode))
         val intent = context.packageManager
             .getLaunchIntentForPackage(EXTENSIONS_TEST_APP_PACKAGE)!!.apply {
-                putExtra(INTENT_EXTRA_CAMERA_ID, cameraId)
-                putExtra(INTENT_EXTRA_EXTENSION_MODE, extensionMode)
+                putExtra(INTENT_EXTRA_KEY_CAMERA_ID, cameraId)
+                putExtra(INTENT_EXTRA_KEY_EXTENSION_MODE, extensionMode)
                 setClassName(context, Camera2ExtensionsActivity::class.java.name)
                 flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
             }
diff --git a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/util/Camera2ExtensionsTestUtil.kt b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/util/Camera2ExtensionsTestUtil.kt
index d2195a8..4fdc8be 100644
--- a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/util/Camera2ExtensionsTestUtil.kt
+++ b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/util/Camera2ExtensionsTestUtil.kt
@@ -16,10 +16,8 @@
 
 package androidx.camera.integration.extensions.util
 
-import android.content.Context
-import android.hardware.camera2.CameraExtensionCharacteristics
-import android.hardware.camera2.CameraManager
 import androidx.annotation.RequiresApi
+import androidx.camera.integration.extensions.utils.Camera2ExtensionsUtil.AVAILABLE_CAMERA2_EXTENSION_MODES
 import androidx.camera.testing.CameraUtil
 
 @RequiresApi(31)
@@ -32,33 +30,9 @@
     fun getAllCameraIdExtensionModeCombinations(): List<Array<Any>> =
         arrayListOf<Array<Any>>().apply {
             CameraUtil.getBackwardCompatibleCameraIdListOrThrow().forEach { cameraId ->
-                AVAILABLE_EXTENSION_MODES.forEach { mode ->
+                AVAILABLE_CAMERA2_EXTENSION_MODES.forEach { mode ->
                     add(arrayOf(cameraId, mode))
                 }
             }
         }
-
-    @JvmStatic
-    fun isCamera2ExtensionModeSupported(
-        context: Context,
-        cameraId: String,
-        extensionMode: Int
-    ): Boolean {
-        val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
-        val extensionCharacteristics = cameraManager.getCameraExtensionCharacteristics(cameraId)
-        return extensionCharacteristics.supportedExtensions.contains(extensionMode)
-    }
-
-    /**
-     * Camera2 extension modes
-     */
-    @Suppress("DEPRECATION") // EXTENSION_BEAUTY
-    @JvmStatic
-    val AVAILABLE_EXTENSION_MODES = arrayOf(
-        CameraExtensionCharacteristics.EXTENSION_AUTOMATIC,
-        CameraExtensionCharacteristics.EXTENSION_BEAUTY,
-        CameraExtensionCharacteristics.EXTENSION_BOKEH,
-        CameraExtensionCharacteristics.EXTENSION_HDR,
-        CameraExtensionCharacteristics.EXTENSION_NIGHT,
-    )
 }
\ No newline at end of file
diff --git a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/Camera2ExtensionsActivity.kt b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/Camera2ExtensionsActivity.kt
index c284eb7..4fc6206 100644
--- a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/Camera2ExtensionsActivity.kt
+++ b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/Camera2ExtensionsActivity.kt
@@ -22,18 +22,24 @@
 import android.content.Intent
 import android.graphics.SurfaceTexture
 import android.hardware.camera2.CameraAccessException
+import android.hardware.camera2.CameraCaptureSession
 import android.hardware.camera2.CameraCharacteristics
 import android.hardware.camera2.CameraDevice
 import android.hardware.camera2.CameraExtensionCharacteristics
 import android.hardware.camera2.CameraExtensionSession
 import android.hardware.camera2.CameraManager
+import android.hardware.camera2.CameraMetadata
+import android.hardware.camera2.CaptureFailure
 import android.hardware.camera2.CaptureRequest
 import android.hardware.camera2.params.ExtensionSessionConfiguration
 import android.hardware.camera2.params.OutputConfiguration
+import android.hardware.camera2.params.SessionConfiguration
+import android.hardware.camera2.params.SessionConfiguration.SESSION_REGULAR
 import android.media.ImageReader
 import android.net.Uri
 import android.os.Bundle
 import android.os.Handler
+import android.os.HandlerThread
 import android.os.Looper
 import android.util.Log
 import android.util.Size
@@ -45,13 +51,24 @@
 import android.view.ViewStub
 import android.widget.Button
 import android.widget.FrameLayout
+import android.widget.ImageButton
 import android.widget.Toast
 import androidx.annotation.RequiresApi
 import androidx.annotation.VisibleForTesting
 import androidx.appcompat.app.AppCompatActivity
 import androidx.camera.core.impl.utils.futures.Futures
-import androidx.camera.integration.extensions.utils.Camera2ExtensionsUtil.getExtensionModeStringFromId
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_CAMERA_ID
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_ERROR_CODE
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_EXTENSION_MODE
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_IMAGE_ROTATION_DEGREES
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_IMAGE_URI
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_REQUEST_CODE
+import androidx.camera.integration.extensions.ValidationErrorCode.ERROR_CODE_EXTENSION_MODE_NOT_SUPPORT
+import androidx.camera.integration.extensions.ValidationErrorCode.ERROR_CODE_NONE
+import androidx.camera.integration.extensions.ValidationErrorCode.ERROR_CODE_SAVE_IMAGE_FAILED
+import androidx.camera.integration.extensions.utils.Camera2ExtensionsUtil.getCamera2ExtensionModeStringFromId
 import androidx.camera.integration.extensions.utils.Camera2ExtensionsUtil.getLensFacingCameraId
+import androidx.camera.integration.extensions.utils.Camera2ExtensionsUtil.isCamera2ExtensionModeSupported
 import androidx.camera.integration.extensions.utils.Camera2ExtensionsUtil.pickPreviewResolution
 import androidx.camera.integration.extensions.utils.Camera2ExtensionsUtil.pickStillImageResolution
 import androidx.camera.integration.extensions.utils.FileUtil
@@ -73,6 +90,7 @@
 import java.util.concurrent.atomic.AtomicLong
 import kotlin.coroutines.resume
 import kotlin.coroutines.resumeWithException
+import kotlinx.coroutines.CancellableContinuation
 import kotlinx.coroutines.Deferred
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.asCoroutineDispatcher
@@ -86,14 +104,6 @@
 private const val EXTENSION_MODE_INVALID = -1
 private const val FRAMES_UNTIL_VIEW_IS_READY = 10
 
-// Launch the activity with the specified camera id.
-@VisibleForTesting
-const val INTENT_EXTRA_CAMERA_ID = "camera_id"
-
-// Launch the activity with the specified extension mode.
-@VisibleForTesting
-const val INTENT_EXTRA_EXTENSION_MODE = "extension_mode"
-
 @RequiresApi(31)
 class Camera2ExtensionsActivity : AppCompatActivity() {
 
@@ -105,9 +115,11 @@
     private var cameraDevice: CameraDevice? = null
 
     /**
-     * The current camera extension session.
+     * The current camera capture session. Use Any type to store it because it might be either a
+     * CameraCaptureSession instance if current is in normal mode, or, it might be a
+     * CameraExtensionSession instance if current is in Camera2 extension mode.
      */
-    private var cameraExtensionSession: CameraExtensionSession? = null
+    private var cameraCaptureSession: Any? = null
 
     private var currentCameraId = "0"
 
@@ -198,6 +210,21 @@
         }
     }
 
+    private val captureCallbacksNormalMode = object : CameraCaptureSession.CaptureCallback() {
+        override fun onCaptureStarted(
+            session: CameraCaptureSession,
+            request: CaptureRequest,
+            timestamp: Long,
+            frameNumber: Long
+        ) {
+            if (receivedCaptureProcessStartedCount.getAndIncrement() >=
+                FRAMES_UNTIL_VIEW_IS_READY && !captureProcessStartedIdlingResource.isIdleNow
+            ) {
+                captureProcessStartedIdlingResource.decrement()
+            }
+        }
+    }
+
     private var restartOnStart = false
 
     private var activityStopped = false
@@ -237,6 +264,33 @@
 
     private lateinit var sessionImageUriSet: SessionMediaUriSet
 
+    /**
+     * Stores the request code passed from the caller activity.
+     */
+    private var requestCode = -1
+
+    /**
+     * This will be true if the activity is called by other activity to request capturing an image.
+     */
+    private var isRequestMode = false
+
+    /**
+     * The result intent that saves the image capture request results.
+     */
+    private lateinit var result: Intent
+
+    private var extensionModeEnabled = true
+
+    /**
+     * A [HandlerThread] used for normal mode camera capture operations
+     */
+    private val normalModeCaptureThread = HandlerThread("CameraThread").apply { start() }
+
+    /**
+     * [Handler] corresponding to [normalModeCaptureThread]
+     */
+    private val normalModeCaptureHandler = Handler(normalModeCaptureThread.looper)
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         Log.d(TAG, "onCreate()")
@@ -265,8 +319,16 @@
 
         // Gets params from extra bundle
         intent.extras?.let { bundle ->
-            currentCameraId = bundle.getString(INTENT_EXTRA_CAMERA_ID, currentCameraId)
-            currentExtensionMode = bundle.getInt(INTENT_EXTRA_EXTENSION_MODE, currentExtensionMode)
+            currentCameraId = bundle.getString(INTENT_EXTRA_KEY_CAMERA_ID, currentCameraId)
+            currentExtensionMode =
+                bundle.getInt(INTENT_EXTRA_KEY_EXTENSION_MODE, currentExtensionMode)
+
+            requestCode = bundle.getInt(INTENT_EXTRA_KEY_REQUEST_CODE, -1)
+            isRequestMode = requestCode != -1
+
+            if (isRequestMode) {
+                setupForRequestMode()
+            }
         }
 
         updateExtensionInfo()
@@ -275,6 +337,100 @@
         setupUiControl()
     }
 
+    private fun setupForRequestMode() {
+        result = Intent()
+        result.putExtra(INTENT_EXTRA_KEY_EXTENSION_MODE, currentExtensionMode)
+        result.putExtra(INTENT_EXTRA_KEY_ERROR_CODE, ERROR_CODE_NONE)
+        setResult(requestCode, result)
+
+        if (!isCamera2ExtensionModeSupported(this, currentCameraId, currentExtensionMode)) {
+            result.putExtra(INTENT_EXTRA_KEY_ERROR_CODE, ERROR_CODE_EXTENSION_MODE_NOT_SUPPORT)
+            finish()
+            return
+        }
+
+        val lensFacing = cameraManager.getCameraCharacteristics(
+                currentCameraId)[CameraCharacteristics.LENS_FACING]
+
+        supportActionBar?.title = resources.getString(R.string.camera2_extensions_validator)
+        supportActionBar!!.subtitle =
+            "Camera $currentCameraId [${getLensFacingString(lensFacing!!)}][${
+                getCamera2ExtensionModeStringFromId(currentExtensionMode)
+            }]"
+
+        findViewById<Button>(R.id.PhotoToggle).visibility = View.INVISIBLE
+        findViewById<Button>(R.id.Switch).visibility = View.INVISIBLE
+
+        setExtensionToggleButtonResource()
+        findViewById<ImageButton>(R.id.ExtensionToggle).apply {
+            visibility = View.VISIBLE
+            setOnClickListener {
+                val cameraId = currentCameraId
+                val extensionMode = currentExtensionMode
+                restartPreview = true
+
+                lifecycleScope.launch(cameraTaskDispatcher) {
+                    extensionModeEnabled = !extensionModeEnabled
+
+                    if (cameraCaptureSession == null) {
+                        setupAndStartPreview(cameraId, extensionMode)
+                    } else {
+                        closeCaptureSessionAsync()
+                    }
+
+                    val extensionEnabled = extensionModeEnabled
+
+                    lifecycleScope.launch(Dispatchers.Main) {
+                        setExtensionToggleButtonResource()
+                        if (extensionEnabled) {
+                            Toast.makeText(
+                                this@Camera2ExtensionsActivity,
+                                "Effect is enabled!",
+                                Toast.LENGTH_SHORT
+                            ).show()
+                        } else {
+
+                            Toast.makeText(
+                                this@Camera2ExtensionsActivity,
+                                "Effect is disabled!",
+                                Toast.LENGTH_SHORT
+                            ).show()
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    @Suppress("DEPRECATION") // EXTENSION_BEAUTY
+    private fun setExtensionToggleButtonResource() {
+        val extensionToggleButton: ImageButton = findViewById(R.id.ExtensionToggle)
+
+        if (!extensionModeEnabled) {
+            extensionToggleButton.setImageResource(R.drawable.outline_block)
+            return
+        }
+
+        val resourceId = when (currentExtensionMode) {
+            CameraExtensionCharacteristics.EXTENSION_HDR -> R.drawable.outline_hdr_on
+            CameraExtensionCharacteristics.EXTENSION_BOKEH -> R.drawable.outline_portrait
+            CameraExtensionCharacteristics.EXTENSION_NIGHT -> R.drawable.outline_bedtime
+            CameraExtensionCharacteristics.EXTENSION_BEAUTY ->
+                R.drawable.outline_face_retouching_natural
+            CameraExtensionCharacteristics.EXTENSION_AUTOMATIC -> R.drawable.outline_auto_awesome
+            else -> throw IllegalArgumentException("Invalid extension mode!")
+        }
+
+        extensionToggleButton.setImageResource(resourceId)
+    }
+
+    private fun getLensFacingString(lensFacing: Int) = when (lensFacing) {
+        CameraMetadata.LENS_FACING_BACK -> "BACK"
+        CameraMetadata.LENS_FACING_FRONT -> "FRONT"
+        CameraMetadata.LENS_FACING_EXTERNAL -> "EXTERNAL"
+        else -> throw IllegalArgumentException("Invalid lens facing!!")
+    }
+
     private fun isCameraSupportExtensions(cameraId: String): Boolean {
         val characteristics = cameraManager.getCameraExtensionCharacteristics(cameraId)
         return characteristics.supportedExtensions.isNotEmpty()
@@ -283,9 +439,8 @@
     private fun updateExtensionInfo() {
         Log.d(
             TAG,
-            "updateExtensionInfo() - camera Id: $currentCameraId, ${
-                getExtensionModeStringFromId(currentExtensionMode)
-            }"
+            "updateExtensionInfo() - camera Id: $currentCameraId, current extension mode: " +
+                "$currentExtensionMode"
         )
         extensionCharacteristics = cameraManager.getCameraExtensionCharacteristics(currentCameraId)
         supportedExtensionModes.clear()
@@ -330,13 +485,14 @@
 
     private fun setupUiControl() {
         val extensionModeToggleButton = findViewById<Button>(R.id.PhotoToggle)
-        extensionModeToggleButton.text = getExtensionModeStringFromId(currentExtensionMode)
+        extensionModeToggleButton.text = getCamera2ExtensionModeStringFromId(currentExtensionMode)
         extensionModeToggleButton.setOnClickListener {
             enableUiControl(false)
             currentExtensionIdx = (currentExtensionIdx + 1) % supportedExtensionModes.size
             currentExtensionMode = supportedExtensionModes[currentExtensionIdx]
             restartPreview = true
-            extensionModeToggleButton.text = getExtensionModeStringFromId(currentExtensionMode)
+            extensionModeToggleButton.text =
+                getCamera2ExtensionModeStringFromId(currentExtensionMode)
 
             closeCaptureSessionAsync()
         }
@@ -399,6 +555,7 @@
         previewSurface.release()
 
         imageSaveTerminationFuture.addListener({ stillImageReader?.close() }, mainExecutor)
+        normalModeCaptureThread.quitSafely()
         Log.d(TAG, "onDestroy()--")
     }
 
@@ -413,12 +570,21 @@
         lifecycleScope.async(cameraTaskDispatcher) {
             Log.d(TAG, "closeCaptureSession()++")
             resetCaptureSessionConfiguredIdlingResource()
-            try {
-                cameraExtensionSession?.close()
-                cameraExtensionSession = null
-            } catch (e: Exception) {
-                Log.e(TAG, e.toString())
+
+            if (cameraCaptureSession != null) {
+                try {
+                    if (cameraCaptureSession is CameraCaptureSession) {
+                        (cameraCaptureSession as CameraCaptureSession).close()
+                    } else {
+                        (cameraCaptureSession as CameraExtensionSession).close()
+                    }
+
+                    cameraCaptureSession = null
+                } catch (e: Exception) {
+                    Log.e(TAG, e.toString())
+                }
             }
+
             Log.d(TAG, "closeCaptureSession()--")
         }
 
@@ -491,7 +657,7 @@
             if (cameraDevice == null || cameraDevice!!.id != cameraId) {
                 cameraDevice = openCamera(cameraManager, cameraId)
             }
-            cameraExtensionSession = openCaptureSession(extensionMode)
+            cameraCaptureSession = openCaptureSession(extensionMode)
 
             lifecycleScope.launch(Dispatchers.Main) {
                 if (activityStopped) {
@@ -553,7 +719,7 @@
     /**
      * Opens and returns the extensions session (as the result of the suspend coroutine)
      */
-    private suspend fun openCaptureSession(extensionMode: Int): CameraExtensionSession =
+    private suspend fun openCaptureSession(extensionMode: Int): Any =
         suspendCancellableCoroutine { cont ->
             Log.d(TAG, "openCaptureSession")
 
@@ -567,70 +733,157 @@
 
             stillImageReader = setupImageReader()
 
-            val outputConfig = ArrayList<OutputConfiguration>()
-            outputConfig.add(OutputConfiguration(stillImageReader!!.surface))
-            outputConfig.add(OutputConfiguration(previewSurface))
-            val extensionConfiguration = ExtensionSessionConfiguration(
-                extensionMode, outputConfig,
-                cameraTaskDispatcher.asExecutor(), object : CameraExtensionSession.StateCallback() {
-                    override fun onClosed(session: CameraExtensionSession) {
-                        Log.d(TAG, "CaptureSession - onClosed: $session")
+            val outputConfigs = arrayListOf<OutputConfiguration>()
+            outputConfigs.add(OutputConfiguration(stillImageReader!!.surface))
+            outputConfigs.add(OutputConfiguration(previewSurface))
 
-                        lifecycleScope.launch(Dispatchers.Main) {
-                            if (restartPreview) {
-                                restartPreview = false
-
-                                val newExtensionMode = currentExtensionMode
-
-                                lifecycleScope.launch(cameraTaskDispatcher) {
-                                    cameraExtensionSession =
-                                        openCaptureSession(newExtensionMode)
-                                }
-                            }
-                        }
-                    }
-
-                    override fun onConfigured(session: CameraExtensionSession) {
-                        Log.d(TAG, "CaptureSession - onConfigured: $session")
-                        try {
-                            val captureBuilder =
-                                session.device.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW)
-                            captureBuilder.addTarget(previewSurface)
-                            session.setRepeatingRequest(
-                                captureBuilder.build(),
-                                cameraTaskDispatcher.asExecutor(), captureCallbacks
-                            )
-                            cont.resume(session)
-                            runOnUiThread {
-                                enableUiControl(true)
-                                if (!captureSessionConfiguredIdlingResource.isIdleNow) {
-                                    captureSessionConfiguredIdlingResource.decrement()
-                                }
-                            }
-                        } catch (e: CameraAccessException) {
-                            Log.e(TAG, e.toString())
-                            cont.resumeWithException(
-                                RuntimeException("Failed to create capture session.")
-                            )
-                        }
-                    }
-
-                    override fun onConfigureFailed(session: CameraExtensionSession) {
-                        Log.e(TAG, "CaptureSession - onConfigureFailed: $session")
-                        cont.resumeWithException(
-                            RuntimeException("Configure failed when creating capture session.")
-                        )
-                    }
-                }
-            )
-            try {
-                cameraDevice!!.createExtensionSession(extensionConfiguration)
-            } catch (e: CameraAccessException) {
-                Log.e(TAG, e.toString())
-                cont.resumeWithException(RuntimeException("Failed to create capture session."))
+            if (extensionModeEnabled) {
+                createCameraExtensionSession(cont, outputConfigs, extensionMode)
+            } else {
+                createCameraCaptureSession(cont, outputConfigs)
             }
         }
 
+    /**
+     * Creates normal mode CameraCaptureSession
+     */
+    private fun createCameraCaptureSession(
+        cont: CancellableContinuation<Any>,
+        outputConfigs: ArrayList<OutputConfiguration>
+    ) {
+
+        val sessionConfiguration = SessionConfiguration(
+            SESSION_REGULAR,
+            outputConfigs,
+            cameraTaskDispatcher.asExecutor(),
+            object : CameraCaptureSession.StateCallback() {
+                override fun onClosed(session: CameraCaptureSession) {
+                    Log.d(TAG, "CaptureSession - onClosed: $session")
+                    lifecycleScope.launch(Dispatchers.Main) {
+                        if (restartPreview) {
+                            restartPreviewWhenCaptureSessionClosed()
+                        }
+                    }
+                }
+
+                override fun onConfigured(session: CameraCaptureSession) {
+                    Log.d(TAG, "CaptureSession - onConfigured: $session")
+                    setRepeatingRequestWhenCaptureSessionConfigured(cont, session.device, session)
+                    runOnUiThread {
+                        enableUiControl(true)
+                        if (!captureSessionConfiguredIdlingResource.isIdleNow) {
+                            captureSessionConfiguredIdlingResource.decrement()
+                        }
+                    }
+                }
+
+                override fun onConfigureFailed(session: CameraCaptureSession) {
+                    Log.e(TAG, "CaptureSession - onConfigureFailed: $session")
+                    cont.resumeWithException(
+                        RuntimeException("Configure failed when creating capture session.")
+                    )
+                }
+            })
+
+        cameraDevice!!.createCaptureSession(sessionConfiguration)
+    }
+
+    /**
+     * Creates extension mode CameraExtensionSession
+     */
+    private fun createCameraExtensionSession(
+        cont: CancellableContinuation<Any>,
+        outputConfigs: ArrayList<OutputConfiguration>,
+        extensionMode: Int
+    ) {
+        val extensionConfiguration = ExtensionSessionConfiguration(
+            extensionMode, outputConfigs,
+            cameraTaskDispatcher.asExecutor(), object : CameraExtensionSession.StateCallback() {
+                override fun onClosed(session: CameraExtensionSession) {
+                    Log.d(TAG, "Extension CaptureSession - onClosed: $session")
+                    lifecycleScope.launch(Dispatchers.Main) {
+                        if (restartPreview) {
+                            restartPreviewWhenCaptureSessionClosed()
+                        }
+                    }
+                }
+
+                override fun onConfigured(session: CameraExtensionSession) {
+                    Log.d(TAG, "Extension CaptureSession - onConfigured: $session")
+                    setRepeatingRequestWhenCaptureSessionConfigured(cont, session.device, session)
+                    runOnUiThread {
+                        enableUiControl(true)
+                        if (!captureSessionConfiguredIdlingResource.isIdleNow) {
+                            captureSessionConfiguredIdlingResource.decrement()
+                        }
+                    }
+                }
+
+                override fun onConfigureFailed(session: CameraExtensionSession) {
+                    Log.e(TAG, "Extension CaptureSession - onConfigureFailed: $session")
+                    cont.resumeWithException(
+                        RuntimeException("Configure failed when creating capture session.")
+                    )
+                }
+            }
+        )
+        try {
+            cameraDevice!!.createExtensionSession(extensionConfiguration)
+        } catch (e: CameraAccessException) {
+            Log.e(TAG, e.toString())
+            cont.resumeWithException(RuntimeException("Failed to create capture session."))
+        }
+    }
+
+    private fun setRepeatingRequestWhenCaptureSessionConfigured(
+        cont: CancellableContinuation<Any>,
+        device: CameraDevice,
+        captureSession: Any
+    ) {
+        require(
+            captureSession is CameraCaptureSession ||
+                captureSession is CameraExtensionSession
+        ) {
+            "The input capture session must be either a CameraCaptureSession or a" +
+                " CameraExtensionSession instance."
+        }
+
+        try {
+            val captureBuilder = device.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW)
+            captureBuilder.addTarget(previewSurface)
+
+            if (captureSession is CameraCaptureSession) {
+                captureSession.setRepeatingRequest(
+                    captureBuilder.build(),
+                    captureCallbacksNormalMode,
+                    normalModeCaptureHandler
+                )
+            } else {
+                (captureSession as CameraExtensionSession).setRepeatingRequest(
+                    captureBuilder.build(),
+                    cameraTaskDispatcher.asExecutor(), captureCallbacks
+                )
+            }
+            cont.resume(captureSession)
+        } catch (e: CameraAccessException) {
+            Log.e(TAG, e.toString())
+            cont.resumeWithException(
+                RuntimeException("Failed to create capture session.")
+            )
+        }
+    }
+
+    private fun restartPreviewWhenCaptureSessionClosed() {
+        restartPreview = false
+
+        val newExtensionMode = currentExtensionMode
+
+        lifecycleScope.launch(cameraTaskDispatcher) {
+            cameraCaptureSession =
+                openCaptureSession(newExtensionMode)
+        }
+    }
+
     private fun setupImageReader(): ImageReader {
         val (size, format) = pickStillImageResolution(
             extensionCharacteristics,
@@ -647,10 +900,10 @@
      */
     private fun takePicture() = lifecycleScope.launch(cameraTaskDispatcher) {
         Preconditions.checkState(
-            cameraExtensionSession != null,
+            cameraCaptureSession != null,
             "take picture button is only enabled when session is configured successfully"
         )
-        val session = cameraExtensionSession!!
+        val session = cameraCaptureSession!!
 
         var takePictureCompleter: Completer<Any?>? = null
 
@@ -662,7 +915,9 @@
         stillImageReader!!.setOnImageAvailableListener(
             { reader: ImageReader ->
                 lifecycleScope.launch(cameraTaskDispatcher) {
-                    acquireImageAndSave(reader)?.let { sessionImageUriSet.add(it) }
+                    val (imageUri, rotationDegrees) = acquireImageAndSave(reader)
+
+                    imageUri?.let { sessionImageUriSet.add(it) }
 
                     stillImageReader!!.setOnImageAvailableListener(null, null)
                     takePictureCompleter?.set(null)
@@ -672,67 +927,117 @@
                     }
 
                     lifecycleScope.launch(Dispatchers.Main) {
-                        enableUiControl(true)
+                        if (isRequestMode) {
+                            if (imageUri == null) {
+                                result.putExtra(
+                                    INTENT_EXTRA_KEY_ERROR_CODE,
+                                    ERROR_CODE_SAVE_IMAGE_FAILED
+                                )
+                            } else {
+                                result.putExtra(INTENT_EXTRA_KEY_IMAGE_URI, imageUri)
+                                result.putExtra(
+                                    INTENT_EXTRA_KEY_IMAGE_ROTATION_DEGREES,
+                                    rotationDegrees
+                                )
+                            }
+
+                            // Closes the camera, capture session and finish the activity to return
+                            // to the caller activity if activity is in request mode.
+                            closeCaptureSessionAsync().await()
+                            closeCameraAsync().await()
+
+                            finish()
+                        } else {
+                            enableUiControl(true)
+                        }
                     }
                 }
             }, Handler(Looper.getMainLooper())
         )
 
-        val captureBuilder = session.device.createCaptureRequest(
+        val device = if (session is CameraCaptureSession) {
+            session.device
+        } else {
+            (session as CameraExtensionSession).device
+        }
+
+        val captureBuilder = device.createCaptureRequest(
             CameraDevice.TEMPLATE_STILL_CAPTURE
         )
         captureBuilder.addTarget(stillImageReader!!.surface)
 
-        session.capture(
-            captureBuilder.build(),
-            cameraTaskDispatcher.asExecutor(),
-            object : CameraExtensionSession.ExtensionCaptureCallback() {
-                override fun onCaptureFailed(
-                    session: CameraExtensionSession,
-                    request: CaptureRequest
-                ) {
-                    takePictureCompleter?.set(null)
-                    Log.e(TAG, "Failed to take picture.")
-                }
+        if (session is CameraCaptureSession) {
+            session.capture(
+                captureBuilder.build(),
+                object : CameraCaptureSession.CaptureCallback() {
+                    override fun onCaptureFailed(
+                        session: CameraCaptureSession,
+                        request: CaptureRequest,
+                        failure: CaptureFailure
+                    ) {
+                        takePictureCompleter?.set(null)
+                        Log.e(TAG, "Failed to take picture.")
+                    }
+                },
+                normalModeCaptureHandler
+            )
+        } else {
+            (session as CameraExtensionSession).capture(
+                captureBuilder.build(),
+                cameraTaskDispatcher.asExecutor(),
+                object : CameraExtensionSession.ExtensionCaptureCallback() {
+                    override fun onCaptureFailed(
+                        session: CameraExtensionSession,
+                        request: CaptureRequest
+                    ) {
+                        takePictureCompleter?.set(null)
+                        Log.e(TAG, "Failed to take picture.")
+                    }
 
-                override fun onCaptureSequenceCompleted(
-                    session: CameraExtensionSession,
-                    sequenceId: Int
-                ) {
-                    Log.v(TAG, "onCaptureProcessSequenceCompleted: $sequenceId")
+                    override fun onCaptureSequenceCompleted(
+                        session: CameraExtensionSession,
+                        sequenceId: Int
+                    ) {
+                        Log.v(TAG, "onCaptureProcessSequenceCompleted: $sequenceId")
+                    }
                 }
-            }
-        )
+            )
+        }
     }
 
     /**
      * Acquires the latest image from the image reader and save it to the Pictures folder
      */
-    private fun acquireImageAndSave(imageReader: ImageReader): Uri? {
+    private fun acquireImageAndSave(imageReader: ImageReader): Pair<Uri?, Int> {
         var uri: Uri? = null
+        var rotationDegrees = 0
         try {
-            val formatter: Format =
-                SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS", Locale.US)
-            val fileName =
-                "[${formatter.format(Calendar.getInstance().time)}][Camera2]${
-                    getExtensionModeStringFromId(currentExtensionMode)
-                }"
+            val (fileName, suffix) = generateFileName(currentCameraId, currentExtensionMode)
+            val lensFacing = cameraManager.getCameraCharacteristics(
+                currentCameraId
+            )[CameraCharacteristics.LENS_FACING]
 
-            val rotationDegrees = calculateRelativeImageRotationDegrees(
+            rotationDegrees = calculateRelativeImageRotationDegrees(
                 (surfaceRotationToRotationDegrees(display!!.rotation)),
                 cameraSensorRotationDegrees,
-                currentCameraId == backCameraId
+                lensFacing == CameraCharacteristics.LENS_FACING_BACK
             )
 
             imageReader.acquireLatestImage().let { image ->
-                uri = FileUtil.saveImage(
-                    image,
-                    fileName,
-                    ".jpg",
-                    "Pictures/ExtensionsPictures",
-                    contentResolver,
-                    rotationDegrees
-                )
+                uri = if (isRequestMode) {
+                    // Saves as temp file if the activity is called by other validation activity to
+                    // capture a image.
+                    FileUtil.saveImageToTempFile(image, fileName, suffix, null, rotationDegrees)
+                } else {
+                    FileUtil.saveImage(
+                        image,
+                        fileName,
+                        suffix,
+                        "Pictures/ExtensionsPictures",
+                        contentResolver,
+                        rotationDegrees
+                    )
+                }
 
                 image.close()
 
@@ -742,20 +1047,62 @@
                     "Failed to save image."
                 }
 
-                lifecycleScope.launch(Dispatchers.Main) {
-                    Toast.makeText(this@Camera2ExtensionsActivity, msg, Toast.LENGTH_SHORT).show()
+                if (!isRequestMode) {
+                    lifecycleScope.launch(Dispatchers.Main) {
+                        Toast.makeText(this@Camera2ExtensionsActivity, msg, Toast.LENGTH_SHORT)
+                            .show()
+                    }
                 }
             }
         } catch (e: Exception) {
             Log.e(TAG, e.toString())
         }
 
-        return uri
+        return Pair(uri, rotationDegrees)
+    }
+
+    /**
+     * Generate the output file name and suffix depending on whether the image is requested by the
+     * validation activity.
+     */
+    private fun generateFileName(cameraId: String, extensionMode: Int): Pair<String, String> {
+        val fileName: String
+        val suffix: String
+
+        if (isRequestMode) {
+            val lensFacing = cameraManager.getCameraCharacteristics(
+                cameraId
+            )[CameraCharacteristics.LENS_FACING]!!
+            fileName =
+                "[Camera2Extension][Camera-$cameraId][${getLensFacingStringFromInt(lensFacing)}][${
+                    getCamera2ExtensionModeStringFromId(extensionMode)
+                }]${if (extensionModeEnabled) "[Enabled]" else "[Disabled]"}"
+            suffix = ""
+        } else {
+            val formatter: Format =
+                SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS", Locale.US)
+            fileName =
+                "[${formatter.format(Calendar.getInstance().time)}][Camera2]${
+                    getCamera2ExtensionModeStringFromId(extensionMode)
+                }"
+            suffix = ".jpg"
+        }
+
+        return Pair(fileName, suffix)
+    }
+
+    private fun getLensFacingStringFromInt(lensFacing: Int): String = when (lensFacing) {
+        CameraMetadata.LENS_FACING_BACK -> "BACK"
+        CameraMetadata.LENS_FACING_FRONT -> "FRONT"
+        CameraMetadata.LENS_FACING_EXTERNAL -> "EXTERNAL"
+        else -> throw IllegalArgumentException("Invalid lens facing!!")
     }
 
     override fun onCreateOptionsMenu(menu: Menu): Boolean {
-        val inflater = menuInflater
-        inflater.inflate(R.menu.main_menu_camera2_extensions_activity, menu)
+        if (!isRequestMode) {
+            val inflater = menuInflater
+            inflater.inflate(R.menu.main_menu_camera2_extensions_activity, menu)
+        }
 
         return true
     }
diff --git a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/CameraExtensionsActivity.java b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/CameraExtensionsActivity.java
index 47d80f8..fb4355d 100644
--- a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/CameraExtensionsActivity.java
+++ b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/CameraExtensionsActivity.java
@@ -15,6 +15,13 @@
  */
 package androidx.camera.integration.extensions;
 
+import static androidx.camera.integration.extensions.CameraDirection.BACKWARD;
+import static androidx.camera.integration.extensions.CameraDirection.FORWARD;
+import static androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_CAMERA_DIRECTION;
+import static androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_CAMERA_ID;
+import static androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_DELETE_CAPTURED_IMAGE;
+import static androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_EXTENSION_MODE;
+
 import android.content.ContentValues;
 import android.content.Intent;
 import android.content.pm.PackageInfo;
@@ -88,30 +95,6 @@
 public class CameraExtensionsActivity extends AppCompatActivity
         implements ActivityCompat.OnRequestPermissionsResultCallback {
 
-    /**
-     * The camera with the specified camera id will be opened if the intent used to launch the
-     * activity includes the information.
-     */
-    @VisibleForTesting
-    static final String INTENT_EXTRA_CAMERA_ID = "camera_id";
-    /**
-     * The specified extension mode will be tried to be enabled if the intent used to launch the
-     * activity includes the information.
-     */
-    @VisibleForTesting
-    static final String INTENT_EXTRA_EXTENSION_MODE = "extension_mode";
-    /**
-     * The captured image will be deleted automatically if the intent used to launch the activity
-     * includes the setting as true.
-     */
-    @VisibleForTesting
-    static final String INTENT_EXTRA_DELETE_CAPTURED_IMAGE = "delete_captured_image";
-
-    // Possible values for this intent key: "BACKWARD" or "FORWARD".
-    private static final String INTENT_EXTRA_CAMERA_DIRECTION = "camera_direction";
-    private static final String BACKWARD = "BACKWARD";
-    private static final String FORWARD = "FORWARD";
-
     private static final String TAG = "CameraExtensionActivity";
     private static final int PERMISSIONS_REQUEST_CODE = 42;
 
@@ -358,13 +341,13 @@
 
         mInitializationIdlingResource.increment();
 
-        String cameraId = getIntent().getStringExtra(INTENT_EXTRA_CAMERA_ID);
+        String cameraId = getIntent().getStringExtra(INTENT_EXTRA_KEY_CAMERA_ID);
         if (cameraId != null) {
             mCurrentCameraSelector = CameraSelectorUtil.createCameraSelectorById(cameraId);
         }
 
         // Get params from adb extra string for the e2e test cases.
-        String cameraDirection = getIntent().getStringExtra(INTENT_EXTRA_CAMERA_DIRECTION);
+        String cameraDirection = getIntent().getStringExtra(INTENT_EXTRA_KEY_CAMERA_DIRECTION);
         if (cameraDirection != null) {
             if (cameraDirection.equals(BACKWARD)) {
                 mCurrentCameraSelector = CameraSelector.DEFAULT_BACK_CAMERA;
@@ -375,10 +358,10 @@
                         "The camera " + cameraDirection + " is unavailable.");
             }
         }
-        mCurrentExtensionMode = getIntent().getIntExtra(INTENT_EXTRA_EXTENSION_MODE,
+        mCurrentExtensionMode = getIntent().getIntExtra(INTENT_EXTRA_KEY_EXTENSION_MODE,
                 mCurrentExtensionMode);
 
-        mDeleteCapturedImage = getIntent().getBooleanExtra(INTENT_EXTRA_DELETE_CAPTURED_IMAGE,
+        mDeleteCapturedImage = getIntent().getBooleanExtra(INTENT_EXTRA_KEY_DELETE_CAPTURED_IMAGE,
                 mDeleteCapturedImage);
 
         StrictMode.VmPolicy policy =
diff --git a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/Constants.kt b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/Constants.kt
new file mode 100644
index 0000000..992c130
--- /dev/null
+++ b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/Constants.kt
@@ -0,0 +1,190 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.camera.integration.extensions
+
+/**
+ * Invalid extension mode
+ */
+const val INVALID_EXTENSION_MODE = -1
+
+/**
+ * Invalid lens facing
+ */
+const val INVALID_LENS_FACING = -1
+
+/**
+ * Intent extra keys to pass necessary information between the caller and callee activities.
+ */
+object IntentExtraKey {
+    /**
+     * Launches the activity with the specified direction of camera.
+     *
+     * Possible values for this intent key are listed in [CameraDirection]
+     */
+    const val INTENT_EXTRA_KEY_CAMERA_DIRECTION = "camera_direction"
+
+    /**
+     * Launches the activity with the specified lens facing of camera.
+     *
+     * Possible values for this intent key: [CameraMetadata#LENS_FACING_BACK] or
+     * [CameraMetadata#LENS_FACING_FRONT].
+     */
+    const val INTENT_EXTRA_KEY_LENS_FACING = "LensFacing"
+
+    /**
+     * Launches the activity with the specified id of camera.
+     */
+    const val INTENT_EXTRA_KEY_CAMERA_ID = "camera_id"
+
+    /**
+     * Launches the activity with the specified extension mode.
+     */
+    const val INTENT_EXTRA_KEY_EXTENSION_MODE = "extension_mode"
+
+    /**
+     * The captured image will be deleted automatically if the intent used to launch the activity
+     * includes the setting as true.
+     */
+    const val INTENT_EXTRA_KEY_DELETE_CAPTURED_IMAGE = "delete_captured_image"
+
+    /**
+     * Launches the activity for the specified test type.
+     *
+     * Possible values for this intent key are listed in [ExtensionTestType]
+     */
+    const val INTENT_EXTRA_KEY_TEST_TYPE = "TestType"
+
+    /**
+     * Used to pass the test results across activities.
+     *
+     * The test results are passed via a extension mode to test result map. The extension mode
+     * might be CameraX or Camera2 extension modes. The test result might be one of the test result
+     * value listed in [TestResultType]
+     */
+    const val INTENT_EXTRA_KEY_RESULT_MAP = "ResultMap"
+
+    /**
+     * Used to pass the test result to the caller activity.
+     *
+     * The test result might be one of the test result value listed in [TestResultType].
+     */
+    const val INTENT_EXTRA_KEY_TEST_RESULT = "TestResult"
+
+    /**
+     * Used to pass the captured image Uri to the caller activity.
+     */
+    const val INTENT_EXTRA_KEY_IMAGE_URI = "ImageUri"
+
+    /**
+     * Used to pass the rotation degrees fo the captured image to the caller activity to show the
+     * image in correct orientation.
+     */
+    const val INTENT_EXTRA_KEY_IMAGE_ROTATION_DEGREES = "ImageRotationDegrees"
+
+    /**
+     * Used to pass the request code to the callee activity.
+     */
+    const val INTENT_EXTRA_KEY_REQUEST_CODE = "RequestCode"
+
+    /**
+     * Used to pass the error code to the caller activity.
+     */
+    const val INTENT_EXTRA_KEY_ERROR_CODE = "ErrorCode"
+}
+
+/**
+ * Camera directions
+ */
+object CameraDirection {
+    /**
+     * Backward direction
+     */
+    const val BACKWARD = "BACKWARD"
+
+    /**
+     * Forward direction
+     */
+    const val FORWARD = "FORWARD"
+}
+
+/**
+ * Error Codes for validation activity results
+ */
+object ValidationErrorCode {
+    /**
+     * No error
+     */
+    const val ERROR_CODE_NONE = 0
+
+    /**
+     * Failed to bind the use cases to the lifecycle owner
+     */
+    const val ERROR_CODE_BIND_TO_LIFECYCLE_FAILED = 1
+
+    /**
+     * The specified extension mode is not supported
+     */
+    const val ERROR_CODE_EXTENSION_MODE_NOT_SUPPORT = 2
+
+    /**
+     * Failed to take picture
+     */
+    const val ERROR_CODE_TAKE_PICTURE_FAILED = 3
+
+    /**
+     * Failed to save the captured image
+     */
+    const val ERROR_CODE_SAVE_IMAGE_FAILED = 4
+}
+
+/**
+ * Extension test types.
+ */
+object ExtensionTestType {
+    const val TEST_TYPE_CAMERAX_EXTENSION = "CameraX Extension"
+    const val TEST_TYPE_CAMERA2_EXTENSION = "Camera2 Extension"
+}
+
+/**
+ * Test result types
+ */
+object TestResultType {
+    /**
+     * Extension mode is not supported on the camera device
+     */
+    const val TEST_RESULT_NOT_SUPPORTED = -1
+
+    /**
+     * Not tested yet
+     */
+    const val TEST_RESULT_NOT_TESTED = 0
+
+    /**
+     * Only part of the tests are tested
+     */
+    const val TEST_RESULT_PARTIALLY_TESTED = 1
+
+    /**
+     * All tests have been run and all passed
+     */
+    const val TEST_RESULT_PASSED = 2
+
+    /**
+     * All tests have been run and some items are failed
+     */
+    const val TEST_RESULT_FAILED = 3
+}
diff --git a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/utils/Camera2ExtensionsUtil.kt b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/utils/Camera2ExtensionsUtil.kt
index 7d9f688..9fbc9fc 100644
--- a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/utils/Camera2ExtensionsUtil.kt
+++ b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/utils/Camera2ExtensionsUtil.kt
@@ -17,6 +17,7 @@
 package androidx.camera.integration.extensions.utils
 
 import android.annotation.SuppressLint
+import android.content.Context
 import android.graphics.ImageFormat
 import android.graphics.Point
 import android.graphics.SurfaceTexture
@@ -38,18 +39,44 @@
 object Camera2ExtensionsUtil {
 
     /**
+     * Camera2 extension modes
+     */
+    @Suppress("DEPRECATION") // EXTENSION_BEAUTY
+    @RequiresApi(31)
+    @JvmStatic
+    val AVAILABLE_CAMERA2_EXTENSION_MODES = arrayOf(
+        CameraExtensionCharacteristics.EXTENSION_AUTOMATIC,
+        CameraExtensionCharacteristics.EXTENSION_BEAUTY,
+        CameraExtensionCharacteristics.EXTENSION_BOKEH,
+        CameraExtensionCharacteristics.EXTENSION_HDR,
+        CameraExtensionCharacteristics.EXTENSION_NIGHT,
+    )
+
+    /**
      * Converts extension mode from integer to string.
      */
     @Suppress("DEPRECATION") // EXTENSION_BEAUTY
+    @RequiresApi(31)
     @JvmStatic
-    fun getExtensionModeStringFromId(extension: Int): String {
-        return when (extension) {
-            CameraExtensionCharacteristics.EXTENSION_HDR -> "HDR"
-            CameraExtensionCharacteristics.EXTENSION_NIGHT -> "NIGHT"
-            CameraExtensionCharacteristics.EXTENSION_BOKEH -> "BOKEH"
-            CameraExtensionCharacteristics.EXTENSION_BEAUTY -> "FACE RETOUCH"
-            else -> "AUTO"
-        }
+    fun getCamera2ExtensionModeStringFromId(extension: Int): String = when (extension) {
+        CameraExtensionCharacteristics.EXTENSION_HDR -> "HDR"
+        CameraExtensionCharacteristics.EXTENSION_NIGHT -> "NIGHT"
+        CameraExtensionCharacteristics.EXTENSION_BOKEH -> "BOKEH"
+        CameraExtensionCharacteristics.EXTENSION_BEAUTY -> "FACE RETOUCH"
+        CameraExtensionCharacteristics.EXTENSION_AUTOMATIC -> "AUTO"
+        else -> throw IllegalArgumentException("Invalid extension mode id!")
+    }
+
+    @Suppress("DEPRECATION") // EXTENSION_BEAUTY
+    @RequiresApi(31)
+    @JvmStatic
+    fun getCamera2ExtensionModeIdFromString(mode: String): Int = when (mode) {
+        "HDR" -> CameraExtensionCharacteristics.EXTENSION_HDR
+        "NIGHT" -> CameraExtensionCharacteristics.EXTENSION_NIGHT
+        "BOKEH" -> CameraExtensionCharacteristics.EXTENSION_BOKEH
+        "FACE RETOUCH" -> CameraExtensionCharacteristics.EXTENSION_BEAUTY
+        "AUTO" -> CameraExtensionCharacteristics.EXTENSION_AUTOMATIC
+        else -> throw IllegalArgumentException("Invalid extension mode string!")
     }
 
     /**
@@ -74,6 +101,19 @@
         throw IllegalArgumentException("Can't find camera of lens facing $lensFacing")
     }
 
+    @SuppressLint("ClassVerificationFailure")
+    @RequiresApi(31)
+    @JvmStatic
+    fun isCamera2ExtensionModeSupported(
+        context: Context,
+        cameraId: String,
+        extensionMode: Int
+    ): Boolean {
+        val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
+        val extensionCharacteristics = cameraManager.getCameraExtensionCharacteristics(cameraId)
+        return extensionCharacteristics.supportedExtensions.contains(extensionMode)
+    }
+
     /**
      * Picks a preview resolution that is both close/same as the display size and supported by camera
      * and extensions.
diff --git a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/utils/FileUtil.kt b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/utils/FileUtil.kt
index dbc661d..0bdb22e 100644
--- a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/utils/FileUtil.kt
+++ b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/utils/FileUtil.kt
@@ -25,7 +25,6 @@
 import android.provider.MediaStore
 import android.util.Log
 import androidx.camera.core.impl.utils.Exif
-import androidx.core.net.toFile
 import androidx.core.net.toUri
 import java.io.File
 import java.io.FileInputStream
@@ -63,12 +62,8 @@
 
         // Saves the image to the temp file
         val tempFileUri =
-            saveImageToTempFile(image, fileNamePrefix, fileNameSuffix) ?: return null
-
-        // Updates Exif rotation tag info
-        val exif = Exif.createFromFile(tempFileUri.toFile())
-        exif.rotate(rotationDegrees)
-        exif.save()
+            saveImageToTempFile(image, fileNamePrefix, fileNameSuffix, null, rotationDegrees)
+                ?: return null
 
         val contentValues = ContentValues().apply {
             put(MediaStore.MediaColumns.DISPLAY_NAME, fileName)
@@ -93,7 +88,8 @@
         image: Image,
         prefix: String,
         suffix: String,
-        cacheDir: File? = null
+        cacheDir: File? = null,
+        rotationDegrees: Int = 0
     ): Uri? {
         val tempFile = File.createTempFile(
             prefix,
@@ -118,6 +114,11 @@
         outputStream.write(byteArray)
         outputStream.close()
 
+        // Updates Exif rotation tag info
+        val exif = Exif.createFromFile(tempFile)
+        exif.rotate(rotationDegrees)
+        exif.save()
+
         return tempFile.toUri()
     }
 
diff --git a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/CameraValidationResultActivity.kt b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/CameraValidationResultActivity.kt
index 8affa96..1c72820 100644
--- a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/CameraValidationResultActivity.kt
+++ b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/CameraValidationResultActivity.kt
@@ -32,21 +32,33 @@
 import androidx.appcompat.app.AppCompatActivity
 import androidx.camera.extensions.ExtensionsManager
 import androidx.camera.integration.extensions.CameraExtensionsActivity
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_CAMERA_ID
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_LENS_FACING
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_REQUEST_CODE
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_RESULT_MAP
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_TEST_TYPE
 import androidx.camera.integration.extensions.R
-import androidx.camera.integration.extensions.validation.TestResults.Companion.TEST_RESULT_NOT_SUPPORTED
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_NOT_SUPPORTED
 import androidx.camera.lifecycle.ProcessCameraProvider
 import androidx.concurrent.futures.await
 import androidx.core.app.ActivityCompat
 import androidx.lifecycle.lifecycleScope
 import kotlinx.coroutines.launch
 
+/**
+ * Activity to list all supported CameraX/Camera2 Extensions and camera ids combination items.
+ *
+ * Clicking a list item will launch the CameraValidationResultActivity to list the supported
+ * extension modes of the selected item.
+ */
 class CameraValidationResultActivity : AppCompatActivity() {
     private lateinit var cameraProvider: ProcessCameraProvider
     private lateinit var extensionsManager: ExtensionsManager
     private lateinit var adapter: BaseAdapter
     private lateinit var testResults: TestResults
     private lateinit var cameraLensFacingMap: LinkedHashMap<String, Int>
-    private lateinit var cameraExtensionResultMap: LinkedHashMap<String, LinkedHashMap<Int, Int>>
+    private lateinit var cameraExtensionResultMap: LinkedHashMap<Pair<String, String>,
+        LinkedHashMap<Int, Int>>
     private val extensionValidationActivityRequestCode =
         ExtensionValidationResultActivity::class.java.hashCode() % 1000
 
@@ -54,7 +66,7 @@
         super.onCreate(savedInstanceState)
         setContentView(R.layout.full_listview)
 
-        supportActionBar?.title = "${resources.getString(R.string.extensions_validator)}"
+        supportActionBar?.title = resources.getString(R.string.extensions_validator)
         initialize()
     }
 
@@ -89,8 +101,8 @@
             listView.adapter = adapter
             listView.onItemClickListener =
                 AdapterView.OnItemClickListener { _, _, position, _ ->
-                    val cameraId = cameraExtensionResultMap.keys.elementAt(position)
-                    if (!isAnyExtensionModeSupported(cameraId)) {
+                    val (testType, cameraId) = cameraExtensionResultMap.keys.elementAt(position)
+                    if (!isAnyExtensionModeSupported(testType, cameraId)) {
                         Toast.makeText(
                             this@CameraValidationResultActivity,
                             "No extension mode is supported by the camera!",
@@ -104,12 +116,16 @@
                         ExtensionValidationResultActivity::class.java
                     )
                     intent.putExtra(
+                        INTENT_EXTRA_KEY_TEST_TYPE,
+                        testType
+                    )
+                    intent.putExtra(
                         INTENT_EXTRA_KEY_CAMERA_ID,
                         cameraId
                     )
                     intent.putExtra(
                         INTENT_EXTRA_KEY_LENS_FACING,
-                        cameraLensFacingMap[cameraExtensionResultMap.keys.elementAt(position)]
+                        cameraLensFacingMap[cameraId]
                     )
                     intent.putExtra(
                         INTENT_EXTRA_KEY_RESULT_MAP,
@@ -138,8 +154,8 @@
         textView.visibility = View.VISIBLE
     }
 
-    private fun isAnyExtensionModeSupported(cameraId: String): Boolean {
-        cameraExtensionResultMap[cameraId]?.forEach {
+    private fun isAnyExtensionModeSupported(testType: String, cameraId: String): Boolean {
+        cameraExtensionResultMap[Pair(testType, cameraId)]?.forEach {
             if (it.value != TEST_RESULT_NOT_SUPPORTED) {
                 return true
             }
@@ -155,8 +171,9 @@
             return
         }
 
-        val cameraId = data?.getStringExtra(INTENT_EXTRA_KEY_CAMERA_ID)!!
-        val extensionTestResultMap = cameraExtensionResultMap[cameraId]
+        val testType = data?.getStringExtra(INTENT_EXTRA_KEY_TEST_TYPE)!!
+        val cameraId = data.getStringExtra(INTENT_EXTRA_KEY_CAMERA_ID)!!
+        val extensionTestResultMap = cameraExtensionResultMap[Pair(testType, cameraId)]
 
         @Suppress("UNCHECKED_CAST")
         val map = data.getSerializableExtra(INTENT_EXTRA_KEY_RESULT_MAP) as HashMap<Int, Int>
@@ -213,17 +230,5 @@
             CameraMetadata.LENS_FACING_EXTERNAL -> "EXTERNAL"
             else -> throw IllegalArgumentException("Invalid lens facing!!")
         }
-
-        const val INVALID_LENS_FACING = -1
-
-        const val INTENT_EXTRA_KEY_CAMERA_ID = "CameraId"
-        const val INTENT_EXTRA_KEY_LENS_FACING = "LensFacing"
-        const val INTENT_EXTRA_KEY_EXTENSION_MODE = "ExtensionMode"
-        const val INTENT_EXTRA_KEY_RESULT_MAP = "ResultMap"
-        const val INTENT_EXTRA_KEY_TEST_RESULT = "TestResult"
-        const val INTENT_EXTRA_KEY_IMAGE_URI = "ImageUri"
-        const val INTENT_EXTRA_KEY_IMAGE_ROTATION_DEGREES = "ImageRotationDegrees"
-        const val INTENT_EXTRA_KEY_REQUEST_CODE = "RequestCode"
-        const val INTENT_EXTRA_KEY_ERROR_CODE = "ErrorCode"
     }
 }
diff --git a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/CameraValidationResultAdapter.kt b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/CameraValidationResultAdapter.kt
index 43520df..f04a081 100644
--- a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/CameraValidationResultAdapter.kt
+++ b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/CameraValidationResultAdapter.kt
@@ -22,24 +22,26 @@
 import android.widget.BaseAdapter
 import android.widget.TextView
 import androidx.camera.integration.extensions.R
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_FAILED
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_NOT_SUPPORTED
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_NOT_TESTED
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_PARTIALLY_TESTED
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_PASSED
 import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.getLensFacingStringFromInt
-import androidx.camera.integration.extensions.validation.TestResults.Companion.TEST_RESULT_FAILED
-import androidx.camera.integration.extensions.validation.TestResults.Companion.TEST_RESULT_NOT_SUPPORTED
-import androidx.camera.integration.extensions.validation.TestResults.Companion.TEST_RESULT_NOT_TESTED
-import androidx.camera.integration.extensions.validation.TestResults.Companion.TEST_RESULT_PARTIALLY_TESTED
-import androidx.camera.integration.extensions.validation.TestResults.Companion.TEST_RESULT_PASSED
 
 class CameraValidationResultAdapter constructor(
     private val layoutInflater: LayoutInflater,
     private val cameraLensFacingMap: LinkedHashMap<String, Int>,
-    private val cameraExtensionResultMap: LinkedHashMap<String, LinkedHashMap<Int, Int>>
+    private val cameraExtensionResultMap: LinkedHashMap<Pair<String, String>,
+        LinkedHashMap<Int, Int>>
 ) : BaseAdapter() {
 
     override fun getCount(): Int {
         return cameraExtensionResultMap.size
     }
 
-    override fun getItem(position: Int): MutableMap.MutableEntry<String, LinkedHashMap<Int, Int>> {
+    override fun getItem(position: Int): MutableMap.MutableEntry<Pair<String, String>,
+        LinkedHashMap<Int, Int>> {
         return cameraExtensionResultMap.entries.elementAt(position)
     }
 
@@ -56,8 +58,9 @@
         }
 
         val item = getItem(position)
+        val (testType, cameraId) = item.key
 
-        val testResult = getTestResult(item.key)
+        val testResult = getTestResult(testType, cameraId)
         var backgroundResource = 0
         var iconResource = 0
 
@@ -72,8 +75,8 @@
         }
 
         val padding = 10
-        val lensFacingName = cameraLensFacingMap[item.key]?.let { getLensFacingStringFromInt(it) }
-        textView.text = "Camera ${item.key} [$lensFacingName]"
+        val lensFacingName = cameraLensFacingMap[cameraId]?.let { getLensFacingStringFromInt(it) }
+        textView.text = "[$testType][$cameraId][$lensFacingName]"
         textView.setPadding(padding, 0, padding, 0)
         textView.compoundDrawablePadding = padding
         textView.setBackgroundResource(backgroundResource)
@@ -81,12 +84,12 @@
         return textView
     }
 
-    private fun getTestResult(cameraId: String): Int {
+    private fun getTestResult(testType: String, cameraId: String): Int {
         var notTestedCount = 0
         var passCount = 0
         var failCount = 0
 
-        cameraExtensionResultMap[cameraId]?.forEach {
+        cameraExtensionResultMap[Pair(testType, cameraId)]?.forEach {
             if (it.value == TEST_RESULT_NOT_TESTED) {
                 notTestedCount++
             } else if (it.value == TEST_RESULT_PASSED) {
diff --git a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/ExtensionValidationResultActivity.kt b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/ExtensionValidationResultActivity.kt
index 89dbe9f..8c835c1 100644
--- a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/ExtensionValidationResultActivity.kt
+++ b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/ExtensionValidationResultActivity.kt
@@ -25,24 +25,33 @@
 import android.widget.ListView
 import android.widget.Toast
 import androidx.appcompat.app.AppCompatActivity
+import androidx.camera.integration.extensions.ExtensionTestType.TEST_TYPE_CAMERAX_EXTENSION
+import androidx.camera.integration.extensions.INVALID_EXTENSION_MODE
+import androidx.camera.integration.extensions.INVALID_LENS_FACING
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_CAMERA_ID
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_EXTENSION_MODE
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_LENS_FACING
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_REQUEST_CODE
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_RESULT_MAP
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_TEST_RESULT
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_TEST_TYPE
 import androidx.camera.integration.extensions.R
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_CAMERA_ID
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_EXTENSION_MODE
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_LENS_FACING
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_REQUEST_CODE
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_RESULT_MAP
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_TEST_RESULT
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INVALID_LENS_FACING
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_NOT_SUPPORTED
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_NOT_TESTED
 import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.getLensFacingStringFromInt
-import androidx.camera.integration.extensions.validation.TestResults.Companion.INVALID_EXTENSION_MODE
-import androidx.camera.integration.extensions.validation.TestResults.Companion.TEST_RESULT_NOT_SUPPORTED
-import androidx.camera.integration.extensions.validation.TestResults.Companion.TEST_RESULT_NOT_TESTED
 import androidx.core.app.ActivityCompat
 
+/**
+ * Activity to list all supported extension modes of the specified camera device.
+ *
+ * Clicking a list item will launch the ImageValidationActivity to trigger the image taking and
+ * validation flow.
+ */
 class ExtensionValidationResultActivity : AppCompatActivity() {
     private val extensionTestResultMap = linkedMapOf<Int, Int>()
     private val result = Intent()
     private var lensFacing = INVALID_LENS_FACING
+    private lateinit var testType: String
     private lateinit var cameraId: String
     private lateinit var adapter: BaseAdapter
     private val imageValidationActivityRequestCode =
@@ -53,6 +62,7 @@
         super.onCreate(savedInstanceState)
         setContentView(R.layout.full_listview)
 
+        testType = intent.getStringExtra(INTENT_EXTRA_KEY_TEST_TYPE)!!
         cameraId = intent.getStringExtra(INTENT_EXTRA_KEY_CAMERA_ID)!!
         lensFacing = intent.getIntExtra(INTENT_EXTRA_KEY_LENS_FACING, INVALID_LENS_FACING)
 
@@ -62,16 +72,21 @@
             extensionTestResultMap[it.key] = it.value
         }
 
+        result.putExtra(INTENT_EXTRA_KEY_TEST_TYPE, testType)
         result.putExtra(INTENT_EXTRA_KEY_CAMERA_ID, cameraId)
         result.putExtra(INTENT_EXTRA_KEY_RESULT_MAP, extensionTestResultMap)
         val requestCode = intent.getIntExtra(INTENT_EXTRA_KEY_REQUEST_CODE, -1)
         setResult(requestCode, result)
 
-        supportActionBar?.title = "${resources.getString(R.string.extensions_validator)}"
+        supportActionBar?.title = if (testType == TEST_TYPE_CAMERAX_EXTENSION) {
+            resources.getString(R.string.camerax_extensions_validator)
+        } else {
+            resources.getString(R.string.camera2_extensions_validator)
+        }
         supportActionBar!!.subtitle = "Camera $cameraId [${getLensFacingStringFromInt(lensFacing)}]"
 
         val layoutInflater = getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
-        adapter = ExtensionValidationResultAdapter(layoutInflater, extensionTestResultMap)
+        adapter = ExtensionValidationResultAdapter(testType, layoutInflater, extensionTestResultMap)
 
         val listView = findViewById<ListView>(R.id.listView)
         listView.adapter = adapter
@@ -85,6 +100,7 @@
                 }
 
                 startCaptureValidationActivity(
+                    testType,
                     cameraId,
                     extensionTestResultMap.keys.elementAt(position)
                 )
@@ -109,8 +125,9 @@
         }
     }
 
-    private fun startCaptureValidationActivity(cameraId: String, mode: Int) {
+    private fun startCaptureValidationActivity(testType: String, cameraId: String, mode: Int) {
         val intent = Intent(this, ImageValidationActivity::class.java)
+        intent.putExtra(INTENT_EXTRA_KEY_TEST_TYPE, testType)
         intent.putExtra(INTENT_EXTRA_KEY_CAMERA_ID, cameraId)
         intent.putExtra(INTENT_EXTRA_KEY_LENS_FACING, lensFacing)
         intent.putExtra(INTENT_EXTRA_KEY_EXTENSION_MODE, mode)
diff --git a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/ExtensionValidationResultAdapter.kt b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/ExtensionValidationResultAdapter.kt
index b759d3b..f340d8d 100644
--- a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/ExtensionValidationResultAdapter.kt
+++ b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/ExtensionValidationResultAdapter.kt
@@ -22,12 +22,12 @@
 import android.widget.BaseAdapter
 import android.widget.TextView
 import androidx.camera.integration.extensions.R
-import androidx.camera.integration.extensions.utils.ExtensionModeUtil.getExtensionModeStringFromId
-import androidx.camera.integration.extensions.validation.TestResults.Companion.TEST_RESULT_FAILED
-import androidx.camera.integration.extensions.validation.TestResults.Companion.TEST_RESULT_NOT_SUPPORTED
-import androidx.camera.integration.extensions.validation.TestResults.Companion.TEST_RESULT_PASSED
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_FAILED
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_NOT_SUPPORTED
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_PASSED
 
 class ExtensionValidationResultAdapter constructor(
+    private val testType: String,
     private val layoutInflater: LayoutInflater,
     private val extensionResultMap: LinkedHashMap<Int, Int>
 ) : BaseAdapter() {
@@ -68,7 +68,7 @@
         }
 
         val padding = 10
-        textView.text = getExtensionModeStringFromId(item.key)
+        textView.text = TestResults.getExtensionModeStringFromId(testType, item.key)
         textView.setPadding(padding, 0, padding, 0)
         textView.compoundDrawablePadding = padding
         textView.setBackgroundResource(backgroundResource)
diff --git a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/ImageCaptureActivity.kt b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/ImageCaptureActivity.kt
index 013ef13..4c3611d 100644
--- a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/ImageCaptureActivity.kt
+++ b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/ImageCaptureActivity.kt
@@ -49,20 +49,25 @@
 import androidx.camera.core.impl.utils.executor.CameraXExecutors
 import androidx.camera.extensions.ExtensionMode
 import androidx.camera.extensions.ExtensionsManager
+import androidx.camera.integration.extensions.INVALID_EXTENSION_MODE
+import androidx.camera.integration.extensions.INVALID_LENS_FACING
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_CAMERA_ID
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_ERROR_CODE
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_EXTENSION_MODE
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_IMAGE_ROTATION_DEGREES
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_IMAGE_URI
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_LENS_FACING
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_REQUEST_CODE
 import androidx.camera.integration.extensions.R
+import androidx.camera.integration.extensions.ValidationErrorCode.ERROR_CODE_BIND_TO_LIFECYCLE_FAILED
+import androidx.camera.integration.extensions.ValidationErrorCode.ERROR_CODE_EXTENSION_MODE_NOT_SUPPORT
+import androidx.camera.integration.extensions.ValidationErrorCode.ERROR_CODE_NONE
+import androidx.camera.integration.extensions.ValidationErrorCode.ERROR_CODE_SAVE_IMAGE_FAILED
+import androidx.camera.integration.extensions.ValidationErrorCode.ERROR_CODE_TAKE_PICTURE_FAILED
 import androidx.camera.integration.extensions.utils.CameraSelectorUtil.createCameraSelectorById
 import androidx.camera.integration.extensions.utils.ExtensionModeUtil.getExtensionModeStringFromId
 import androidx.camera.integration.extensions.utils.FileUtil
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_CAMERA_ID
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_ERROR_CODE
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_EXTENSION_MODE
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_IMAGE_ROTATION_DEGREES
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_IMAGE_URI
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_LENS_FACING
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_REQUEST_CODE
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INVALID_LENS_FACING
 import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.getLensFacingStringFromInt
-import androidx.camera.integration.extensions.validation.TestResults.Companion.INVALID_EXTENSION_MODE
 import androidx.camera.lifecycle.ProcessCameraProvider
 import androidx.camera.view.PreviewView
 import androidx.concurrent.futures.await
@@ -76,6 +81,11 @@
 
 private const val TAG = "ImageCaptureActivity"
 
+/**
+ * Activity to capture a image in CameraX extension modes.
+ *
+ * This activity will return the saved image URI to the caller activity.
+ */
 class ImageCaptureActivity : AppCompatActivity() {
 
     private var extensionMode = INVALID_EXTENSION_MODE
@@ -116,7 +126,7 @@
         val requestCode = intent.getIntExtra(INTENT_EXTRA_KEY_REQUEST_CODE, -1)
         setResult(requestCode, result)
 
-        supportActionBar?.title = "${resources.getString(R.string.extensions_validator)}"
+        supportActionBar?.title = resources.getString(R.string.camerax_extensions_validator)
         supportActionBar!!.subtitle =
             "Camera $cameraId [${getLensFacingStringFromInt(lensFacing)}]" +
                 "[${getExtensionModeStringFromId(extensionMode)}]"
@@ -185,7 +195,7 @@
 
             Log.d(TAG, "Extension mode is $extensionMode (enabled: $extensionEnabled)")
         } catch (e: IllegalArgumentException) {
-            result.putExtra(INTENT_EXTRA_KEY_ERROR_CODE, ERROR_CODE_BIND_FAIL)
+            result.putExtra(INTENT_EXTRA_KEY_ERROR_CODE, ERROR_CODE_BIND_TO_LIFECYCLE_FAILED)
             Log.e(
                 TAG,
                 "Failed to bind use cases with ${getExtensionModeStringFromId(extensionMode)}"
@@ -219,9 +229,9 @@
                 ContextCompat.getMainExecutor(this),
                 object : ImageCapture.OnImageCapturedCallback() {
                     override fun onCaptureSuccess(image: ImageProxy) {
-                        val filenamePrefix =
-                            "[Camera-$cameraId][${getLensFacingStringFromInt(lensFacing)}]" +
-                                "[${getExtensionModeStringFromId(extensionMode)}]"
+                        val filenamePrefix = "[CameraXExtension][Camera-$cameraId][${
+                            getLensFacingStringFromInt(lensFacing)
+                        }][${getExtensionModeStringFromId(extensionMode)}]"
                         val filename = if (extensionEnabled) {
                             "$filenamePrefix[Enabled]"
                         } else {
@@ -456,12 +466,4 @@
 
         extensionToggleButton.setImageResource(resourceId)
     }
-
-    companion object {
-        const val ERROR_CODE_NONE = 0
-        const val ERROR_CODE_BIND_FAIL = 1
-        const val ERROR_CODE_EXTENSION_MODE_NOT_SUPPORT = 2
-        const val ERROR_CODE_TAKE_PICTURE_FAILED = 3
-        const val ERROR_CODE_SAVE_IMAGE_FAILED = 4
-    }
 }
diff --git a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/ImageValidationActivity.kt b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/ImageValidationActivity.kt
index 2782d05..ce6bd3b 100644
--- a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/ImageValidationActivity.kt
+++ b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/ImageValidationActivity.kt
@@ -20,6 +20,7 @@
 import android.content.Intent
 import android.content.res.Configuration
 import android.net.Uri
+import android.os.Build
 import android.os.Bundle
 import android.provider.MediaStore
 import android.util.Log
@@ -33,29 +34,32 @@
 import android.widget.ImageView
 import android.widget.Toast
 import androidx.appcompat.app.AppCompatActivity
+import androidx.camera.integration.extensions.Camera2ExtensionsActivity
+import androidx.camera.integration.extensions.ExtensionTestType.TEST_TYPE_CAMERA2_EXTENSION
+import androidx.camera.integration.extensions.ExtensionTestType.TEST_TYPE_CAMERAX_EXTENSION
+import androidx.camera.integration.extensions.INVALID_EXTENSION_MODE
+import androidx.camera.integration.extensions.INVALID_LENS_FACING
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_CAMERA_ID
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_ERROR_CODE
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_EXTENSION_MODE
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_IMAGE_ROTATION_DEGREES
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_IMAGE_URI
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_LENS_FACING
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_REQUEST_CODE
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_TEST_RESULT
+import androidx.camera.integration.extensions.IntentExtraKey.INTENT_EXTRA_KEY_TEST_TYPE
 import androidx.camera.integration.extensions.R
-import androidx.camera.integration.extensions.utils.ExtensionModeUtil.getExtensionModeStringFromId
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_FAILED
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_NOT_TESTED
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_PASSED
+import androidx.camera.integration.extensions.ValidationErrorCode.ERROR_CODE_BIND_TO_LIFECYCLE_FAILED
+import androidx.camera.integration.extensions.ValidationErrorCode.ERROR_CODE_EXTENSION_MODE_NOT_SUPPORT
+import androidx.camera.integration.extensions.ValidationErrorCode.ERROR_CODE_NONE
+import androidx.camera.integration.extensions.ValidationErrorCode.ERROR_CODE_SAVE_IMAGE_FAILED
+import androidx.camera.integration.extensions.ValidationErrorCode.ERROR_CODE_TAKE_PICTURE_FAILED
 import androidx.camera.integration.extensions.utils.FileUtil.copyTempFileToOutputLocation
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_CAMERA_ID
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_ERROR_CODE
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_EXTENSION_MODE
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_IMAGE_ROTATION_DEGREES
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_IMAGE_URI
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_LENS_FACING
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_REQUEST_CODE
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INTENT_EXTRA_KEY_TEST_RESULT
-import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.INVALID_LENS_FACING
 import androidx.camera.integration.extensions.validation.CameraValidationResultActivity.Companion.getLensFacingStringFromInt
-import androidx.camera.integration.extensions.validation.ImageCaptureActivity.Companion.ERROR_CODE_BIND_FAIL
-import androidx.camera.integration.extensions.validation.ImageCaptureActivity.Companion.ERROR_CODE_EXTENSION_MODE_NOT_SUPPORT
-import androidx.camera.integration.extensions.validation.ImageCaptureActivity.Companion.ERROR_CODE_NONE
-import androidx.camera.integration.extensions.validation.ImageCaptureActivity.Companion.ERROR_CODE_SAVE_IMAGE_FAILED
-import androidx.camera.integration.extensions.validation.ImageCaptureActivity.Companion.ERROR_CODE_TAKE_PICTURE_FAILED
 import androidx.camera.integration.extensions.validation.PhotoFragment.Companion.decodeImageToBitmap
-import androidx.camera.integration.extensions.validation.TestResults.Companion.INVALID_EXTENSION_MODE
-import androidx.camera.integration.extensions.validation.TestResults.Companion.TEST_RESULT_FAILED
-import androidx.camera.integration.extensions.validation.TestResults.Companion.TEST_RESULT_NOT_TESTED
-import androidx.camera.integration.extensions.validation.TestResults.Companion.TEST_RESULT_PASSED
 import androidx.core.app.ActivityCompat
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentActivity
@@ -70,11 +74,18 @@
 
 private const val TAG = "ImageValidationActivity"
 
+/**
+ * Activity to show the captured images of the specified extension mode and validate the results.
+ *
+ * Testers can trigger to take a pictures again and press the PASSED or FAILED button to report the
+ * validation result.
+ */
 class ImageValidationActivity : AppCompatActivity() {
 
     private var extensionMode = INVALID_EXTENSION_MODE
     private val result = Intent()
     private var lensFacing = INVALID_LENS_FACING
+    private lateinit var testType: String
     private lateinit var cameraId: String
     private lateinit var failButton: ImageButton
     private lateinit var passButton: ImageButton
@@ -93,6 +104,7 @@
         super.onCreate(savedInstanceState)
         setContentView(R.layout.image_validation_activity)
 
+        testType = intent?.getStringExtra(INTENT_EXTRA_KEY_TEST_TYPE)!!
         cameraId = intent?.getStringExtra(INTENT_EXTRA_KEY_CAMERA_ID)!!
         lensFacing = intent.getIntExtra(INTENT_EXTRA_KEY_LENS_FACING, INVALID_LENS_FACING)
         extensionMode = intent.getIntExtra(INTENT_EXTRA_KEY_EXTENSION_MODE, INVALID_EXTENSION_MODE)
@@ -102,17 +114,22 @@
         val requestCode = intent.getIntExtra(INTENT_EXTRA_KEY_REQUEST_CODE, -1)
         setResult(requestCode, result)
 
-        supportActionBar?.title = "${resources.getString(R.string.extensions_validator)}"
+        val extensionModeString = TestResults.getExtensionModeStringFromId(testType, extensionMode)
+        supportActionBar?.title = if (testType == TEST_TYPE_CAMERAX_EXTENSION) {
+            resources.getString(R.string.camerax_extensions_validator)
+        } else {
+            resources.getString(R.string.camera2_extensions_validator)
+        }
+
         supportActionBar!!.subtitle =
-            "Camera $cameraId [${getLensFacingStringFromInt(lensFacing)}]" +
-                "[${getExtensionModeStringFromId(extensionMode)}]"
+            "Camera $cameraId [${getLensFacingStringFromInt(lensFacing)}][$extensionModeString]"
 
         viewPager = findViewById(R.id.photo_view_pager)
         photoImageView = findViewById(R.id.photo_image_view)
 
         setupButtonControls()
         setupGestureControls()
-        startCaptureImageActivity(cameraId, extensionMode)
+        startCaptureImageActivity(testType, cameraId, extensionMode)
     }
 
     @Suppress("DEPRECATION")
@@ -126,7 +143,7 @@
         val errorCode = data?.getIntExtra(INTENT_EXTRA_KEY_ERROR_CODE, ERROR_CODE_NONE)
 
         // Returns with error
-        if (errorCode == ERROR_CODE_BIND_FAIL ||
+        if (errorCode == ERROR_CODE_BIND_TO_LIFECYCLE_FAILED ||
             errorCode == ERROR_CODE_EXTENSION_MODE_NOT_SUPPORT ||
             errorCode == ERROR_CODE_TAKE_PICTURE_FAILED ||
             errorCode == ERROR_CODE_SAVE_IMAGE_FAILED
@@ -231,12 +248,17 @@
 
         captureButton = findViewById(R.id.capture_button)
         captureButton.setOnClickListener {
-            startCaptureImageActivity(cameraId, extensionMode)
+            startCaptureImageActivity(testType, cameraId, extensionMode)
         }
     }
 
-    private fun startCaptureImageActivity(cameraId: String, mode: Int) {
-        val intent = Intent(this, ImageCaptureActivity::class.java)
+    private fun startCaptureImageActivity(testType: String, cameraId: String, mode: Int) {
+        val intent =
+            if (Build.VERSION.SDK_INT >= 31 && testType == TEST_TYPE_CAMERA2_EXTENSION) Intent(
+                this,
+                Camera2ExtensionsActivity::class.java
+            ) else Intent(this, ImageCaptureActivity::class.java)
+
         intent.putExtra(INTENT_EXTRA_KEY_CAMERA_ID, cameraId)
         intent.putExtra(INTENT_EXTRA_KEY_LENS_FACING, lensFacing)
         intent.putExtra(INTENT_EXTRA_KEY_EXTENSION_MODE, mode)
diff --git a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/TestResults.kt b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/TestResults.kt
index 1a6fa1b..164478d 100644
--- a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/TestResults.kt
+++ b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/validation/TestResults.kt
@@ -20,6 +20,7 @@
 import android.content.ContentValues
 import android.content.Context
 import android.hardware.camera2.CameraCharacteristics
+import android.os.Build
 import android.os.Environment.DIRECTORY_DOCUMENTS
 import android.provider.MediaStore
 import android.util.Log
@@ -27,6 +28,16 @@
 import androidx.camera.camera2.interop.Camera2CameraInfo
 import androidx.camera.camera2.interop.ExperimentalCamera2Interop
 import androidx.camera.extensions.ExtensionsManager
+import androidx.camera.integration.extensions.ExtensionTestType.TEST_TYPE_CAMERA2_EXTENSION
+import androidx.camera.integration.extensions.ExtensionTestType.TEST_TYPE_CAMERAX_EXTENSION
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_FAILED
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_NOT_SUPPORTED
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_NOT_TESTED
+import androidx.camera.integration.extensions.TestResultType.TEST_RESULT_PASSED
+import androidx.camera.integration.extensions.utils.Camera2ExtensionsUtil.AVAILABLE_CAMERA2_EXTENSION_MODES
+import androidx.camera.integration.extensions.utils.Camera2ExtensionsUtil.getCamera2ExtensionModeIdFromString
+import androidx.camera.integration.extensions.utils.Camera2ExtensionsUtil.getCamera2ExtensionModeStringFromId
+import androidx.camera.integration.extensions.utils.Camera2ExtensionsUtil.isCamera2ExtensionModeSupported
 import androidx.camera.integration.extensions.utils.CameraSelectorUtil.createCameraSelectorById
 import androidx.camera.integration.extensions.utils.ExtensionModeUtil.AVAILABLE_EXTENSION_MODES
 import androidx.camera.integration.extensions.utils.ExtensionModeUtil.getExtensionModeIdFromString
@@ -48,18 +59,30 @@
 private const val TAG = "TestResults"
 
 private const val TEST_RESULTS_FILE_NAME = "TestResult.csv"
-private const val TEST_RESULT_INDEX_CAMERA_ID = 0
-private const val TEST_RESULT_INDEX_EXTENSION_MODE = 1
-private const val TEST_RESULT_INDEX_TEST_RESULT = 2
+private const val TEST_RESULT_INDEX_TEST_TYPE = 0
+private const val TEST_RESULT_INDEX_CAMERA_ID = 1
+private const val TEST_RESULT_INDEX_EXTENSION_MODE = 2
+private const val TEST_RESULT_INDEX_TEST_RESULT = 3
 
 private const val TEST_RESULT_STRING_NOT_SUPPORTED = "NOT_SUPPORTED"
 private const val TEST_RESULT_STRING_NOT_TESTED = "NOT_TESTED"
 private const val TEST_RESULT_STRING_PASSED = "PASSED"
 private const val TEST_RESULT_STRING_FAILED = "FAILED"
 
+/**
+ * A class to load, save and export the test results.
+ */
 class TestResults constructor(private val context: Context) {
+    /**
+     * Camera id to lens facing map.
+     */
     private val cameraLensFacingMap = linkedMapOf<String, Int>()
-    private val cameraExtensionResultMap = linkedMapOf<String, LinkedHashMap<Int, Int>>()
+
+    /**
+     * Pair of <test type, camera id> to list of <extension mode, test result> map.
+     */
+    private val cameraExtensionResultMap =
+        linkedMapOf<Pair<String, String>, LinkedHashMap<Int, Int>>()
 
     fun loadTestResults(
         cameraProvider: ProcessCameraProvider,
@@ -73,22 +96,28 @@
 
     fun getCameraExtensionResultMap() = cameraExtensionResultMap
 
-    fun saveTestResults(cameraExtensionResultMap: LinkedHashMap<String, LinkedHashMap<Int, Int>>) {
+    /**
+     * Saves the test results.
+     *
+     * The input parameter is pair of <test type, camera id> to list of
+     * <extension mode, test result> map.
+     */
+    fun saveTestResults(
+        cameraExtensionResultMap: LinkedHashMap<Pair<String, String>, LinkedHashMap<Int, Int>>
+    ) {
         val testResultsFile = File(context.getExternalFilesDir(null), TEST_RESULTS_FILE_NAME)
         val outputStream = FileOutputStream(testResultsFile)
 
         val headerString = "Camera Id,Extension Mode,Test Result\n"
         outputStream.write(headerString.toByteArray())
 
-        cameraExtensionResultMap.forEach {
-            val cameraId = it.key
-            it.value.forEach {
-                val resultString =
-                    "$cameraId,${getExtensionModeStringFromId(it.key)},${
-                        getTestResultStringFromId(
-                            it.value
-                        )
-                    }\n"
+        cameraExtensionResultMap.forEach { entry ->
+            val (testType, cameraId) = entry.key
+            entry.value.forEach {
+                val (extensionMode, testResult) = it
+                val extensionModeString = getExtensionModeStringFromId(testType, extensionMode)
+                val testResultString = getTestResultStringFromId(testResult)
+                val resultString = "$testType,$cameraId,$extensionModeString,$testResultString\n"
                 outputStream.write(resultString.toByteArray())
             }
         }
@@ -154,8 +183,16 @@
         cameraProvider: ProcessCameraProvider,
         extensionsManager: ExtensionsManager
     ) {
+        val availableCameraIds = mutableListOf<String>()
+
         cameraProvider.availableCameraInfos.forEach {
             val cameraId = Camera2CameraInfo.from(it).cameraId
+            availableCameraIds.add(cameraId)
+            cameraLensFacingMap[cameraId] = cameraProvider.getLensFacingById(cameraId)
+        }
+
+        // Generates CameraX extension test items
+        availableCameraIds.forEach { cameraId ->
             val testResultMap = linkedMapOf<Int, Int>()
 
             AVAILABLE_EXTENSION_MODES.forEach { mode ->
@@ -168,10 +205,25 @@
                     if (isSupported) TEST_RESULT_NOT_TESTED else TEST_RESULT_NOT_SUPPORTED
             }
 
-            if (!testResultMap.isEmpty()) {
-                cameraExtensionResultMap[cameraId] = testResultMap
-                cameraLensFacingMap[cameraId] = cameraProvider.getLensFacingById(cameraId)
+            cameraExtensionResultMap[Pair(TEST_TYPE_CAMERAX_EXTENSION, cameraId)] = testResultMap
+        }
+
+        if (Build.VERSION.SDK_INT < 31) {
+            return
+        }
+
+        // Generates Camera2 extension test items
+        availableCameraIds.forEach { cameraId ->
+            val testResultMap = linkedMapOf<Int, Int>()
+
+            AVAILABLE_CAMERA2_EXTENSION_MODES.forEach { mode ->
+                val isSupported = isCamera2ExtensionModeSupported(context, cameraId, mode)
+
+                testResultMap[mode] =
+                    if (isSupported) TEST_RESULT_NOT_TESTED else TEST_RESULT_NOT_SUPPORTED
             }
+
+            cameraExtensionResultMap[Pair(TEST_TYPE_CAMERA2_EXTENSION, cameraId)] = testResultMap
         }
     }
 
@@ -195,12 +247,16 @@
             }
 
             val values = lineContent.split(",")
-            if (values.size != 3) {
+            if (values.size != 4) {
                 throw IllegalArgumentException("Extensions validation test results parsing error!")
             }
 
-            val extensionResultMap = cameraExtensionResultMap[values[TEST_RESULT_INDEX_CAMERA_ID]]
-            val mode = getExtensionModeIdFromString(values[TEST_RESULT_INDEX_EXTENSION_MODE])
+            val testType = values[TEST_RESULT_INDEX_TEST_TYPE]
+            val cameraId = values[TEST_RESULT_INDEX_CAMERA_ID]
+            val extensionResultMap = cameraExtensionResultMap[Pair(testType, cameraId)]
+            val mode =
+                getExtensionModeIdFromString(testType, values[TEST_RESULT_INDEX_EXTENSION_MODE])
+
             extensionResultMap?.set(
                 mode,
                 getTestResultIdFromString(values[TEST_RESULT_INDEX_TEST_RESULT])
@@ -213,9 +269,9 @@
     @OptIn(ExperimentalCamera2Interop::class)
     private fun ProcessCameraProvider.getLensFacingById(cameraId: String): Int {
         availableCameraInfos.forEach {
-            var camera2CameraInfo = Camera2CameraInfo.from(it)
+            val camera2CameraInfo = Camera2CameraInfo.from(it)
 
-            if (camera2CameraInfo.cameraId.equals(cameraId)) {
+            if (camera2CameraInfo.cameraId == cameraId) {
                 return camera2CameraInfo.getCameraCharacteristic(
                     CameraCharacteristics.LENS_FACING)!!
             }
@@ -239,12 +295,28 @@
     }
 
     companion object {
-        const val INVALID_EXTENSION_MODE = -1
+        fun getExtensionModeStringFromId(testType: String, extensionMode: Int) =
+            if (testType == TEST_TYPE_CAMERAX_EXTENSION) {
+                getExtensionModeStringFromId(extensionMode)
+            } else if (testType == TEST_TYPE_CAMERA2_EXTENSION && Build.VERSION.SDK_INT >= 31) {
+                getCamera2ExtensionModeStringFromId(extensionMode)
+            } else {
+                throw RuntimeException(
+                    "Something went wrong about testType ($testType) and device API level" +
+                        " (${Build.VERSION.SDK_INT})."
+                )
+            }
 
-        const val TEST_RESULT_NOT_SUPPORTED = -1
-        const val TEST_RESULT_NOT_TESTED = 0
-        const val TEST_RESULT_PARTIALLY_TESTED = 1
-        const val TEST_RESULT_PASSED = 2
-        const val TEST_RESULT_FAILED = 3
+        fun getExtensionModeIdFromString(testType: String, extensionModeString: String) =
+            if (testType == TEST_TYPE_CAMERAX_EXTENSION) {
+                getExtensionModeIdFromString(extensionModeString)
+            } else if (testType == TEST_TYPE_CAMERA2_EXTENSION && Build.VERSION.SDK_INT >= 31) {
+                getCamera2ExtensionModeIdFromString(extensionModeString)
+            } else {
+                throw RuntimeException(
+                    "Something went wrong about testType ($testType) and device API level" +
+                        " (${Build.VERSION.SDK_INT})."
+                )
+            }
     }
 }
diff --git a/camera/integration-tests/extensionstestapp/src/main/res/layout/activity_camera_extensions.xml b/camera/integration-tests/extensionstestapp/src/main/res/layout/activity_camera_extensions.xml
index 586c25a..4fd7a30 100644
--- a/camera/integration-tests/extensionstestapp/src/main/res/layout/activity_camera_extensions.xml
+++ b/camera/integration-tests/extensionstestapp/src/main/res/layout/activity_camera_extensions.xml
@@ -83,6 +83,20 @@
         app:layout_constraintEnd_toStartOf="@+id/Picture"
         app:layout_constraintTop_toTopOf="@+id/Picture" />
 
+    <ImageButton
+        android:id="@+id/ExtensionToggle"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="5dp"
+        android:layout_marginTop="1dp"
+        android:background="@android:drawable/btn_default"
+        android:scaleType="fitCenter"
+        android:src="@drawable/outline_block"
+        android:translationZ="1dp"
+        android:visibility="gone"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
     <TextView
         android:id="@+id/frameInfo"
         android:layout_width="wrap_content"
diff --git a/camera/integration-tests/extensionstestapp/src/main/res/values/donottranslate-strings.xml b/camera/integration-tests/extensionstestapp/src/main/res/values/donottranslate-strings.xml
index f8a3be6..5b812c7 100644
--- a/camera/integration-tests/extensionstestapp/src/main/res/values/donottranslate-strings.xml
+++ b/camera/integration-tests/extensionstestapp/src/main/res/values/donottranslate-strings.xml
@@ -16,6 +16,8 @@
 
 <resources>
     <string name="extensions_app">Extensions App</string>
-    <string name="extensions_validator">Extensions Validator</string>
+    <string name="extensions_validator">Camera Extensions Validator</string>
+    <string name="camerax_extensions_validator">CameraX Extensions Validator</string>
+    <string name="camera2_extensions_validator">Camera2 Extensions Validator</string>
     <string name="error_msg_no_camera_support_extension">No camera supports any extension modes!</string>
 </resources>
diff --git a/car/app/app/build.gradle b/car/app/app/build.gradle
index 599407f..a261df3 100644
--- a/car/app/app/build.gradle
+++ b/car/app/app/build.gradle
@@ -114,25 +114,15 @@
 class ProtocolApiTask extends DefaultTask {
     private final WorkerExecutor workerExecutor
 
-    @Input
-    public Provider<List<File> > classpath = project.provider({
-        FileCollection dependencyClasspath = getLibraryVariant().getCompileClasspath(null)
-
-        def resolvedClasspath = new ArrayList<File>()
-        resolvedClasspath.addAll(getLibraryExtension().bootClasspath)
-        resolvedClasspath.addAll(dependencyClasspath)
-        resolvedClasspath
-    })
-
-    @Input
-    public Provider<List<File> > sourceDirs = project.provider({
-       List<File> resolvedSourceDirs = new ArrayList<File>()
-       for (ConfigurableFileTree fileTree : getLibraryVariant().getSourceFolders(SourceKind
-               .JAVA)) {
-           resolvedSourceDirs.add(fileTree.getDir())
-       }
-       resolvedSourceDirs
-    })
+    @Classpath
+    public FileCollection metalavaClasspath
+    @Classpath
+    public FileCollection bootClasspath
+    @Classpath
+    public FileCollection dependencyClasspath
+    @InputFiles
+    @PathSensitive(PathSensitivity.RELATIVE)
+    public FileCollection sourceDirs
 
     @Inject
     ProtocolApiTask(WorkerExecutor workerExecutor) {
@@ -140,30 +130,12 @@
     }
 
     @Internal
-    def getLibraryVariant() {
-        LibraryExtension extension = getLibraryExtension()
-        LibraryApiTaskConfig config = new LibraryApiTaskConfig(extension)
-        return config.library.libraryVariants.find({
-            it.name == Release.DEFAULT_PUBLISH_CONFIG
-        })
-    }
-
-    @Internal
-    def getLibraryExtension() {
-        return project.extensions.findByType(LibraryExtension.class)
-    }
-
-    @Internal
     def runMetalava(List<String> additionalArgs) {
-        FileCollection metalavaClasspath = MetalavaRunnerKt.getMetalavaClasspath(project)
-
-        List<File> classpath = classpath.get()
-        List<File> sourceDirs = sourceDirs.get().findAll{ it -> it.exists() }
         List<String> standardArgs = [
                 "--classpath",
-                classpath.join(File.pathSeparator),
+                (bootClasspath.files + dependencyClasspath.files).join(File.pathSeparator),
                 '--source-path',
-                sourceDirs.join(File.pathSeparator),
+                sourceDirs.filter { it.exists() }.join(File.pathSeparator),
                 '--format=v4',
                 '--output-kotlin-nulls=yes',
                 '--quiet'
@@ -186,12 +158,6 @@
         super(workerExecutor)
     }
 
-    @InputFiles
-    @PathSensitive(PathSensitivity.RELATIVE)
-    def getInputSource() {
-        return sourceDirs.get() // Re-run on source changes
-    }
-
     @OutputFile
     File generatedApi
 
@@ -423,6 +389,34 @@
 
 LibraryExtension library = project.extensions.getByType(LibraryExtension.class)
 
+def getLibraryExtension() {
+    return project.extensions.findByType(LibraryExtension.class)
+}
+
+def getLibraryVariant() {
+    LibraryExtension extension = getLibraryExtension()
+    return extension.libraryVariants.find({
+        it.name == Release.DEFAULT_PUBLISH_CONFIG
+    })
+}
+
+public FileCollection getSourceCollection() {
+    def taskDependencies = new ArrayList<Object>()
+    def sourceFiles = project.provider {
+        getLibraryVariant().getSourceFolders(SourceKind.JAVA).collect { folder ->
+            for (builtBy in folder.builtBy) {
+                taskDependencies.add(builtBy)
+            }
+            folder.dir
+        }
+    }
+    def sourceCollection = project.files(sourceFiles)
+    for (dep in taskDependencies) {
+        sourceCollection.builtBy(dep)
+    }
+    return sourceCollection
+}
+
 // afterEvaluate required to read extension properties
 afterEvaluate {
     task writeCarApiLevelFile(type: ApiLevelFileWriterTask) {
@@ -441,32 +435,45 @@
         resources.setIncludes(includes)
     }
 
+    FileCollection sourceCollection = getSourceCollection()
+    FileCollection dependencyClasspath = getLibraryVariant().getCompileClasspath(null)
+    FileCollection metalavaClasspath = MetalavaRunnerKt.getMetalavaClasspath(project)
+    FileCollection bootClasspath = project.files(getLibraryExtension().bootClasspath)
+
     ProtocolLocation projectProtocolLocation = new ProtocolLocation(project)
-    task generateProtocolApi(type: GenerateProtocolApiTask) {
-        description = "Generate an API signature file for the classes annotated with @CarProtocol"
-        generatedApi = projectProtocolLocation.generatedApi
-        dependsOn(assemble)
+    tasks.register("generateProtocolApi", GenerateProtocolApiTask) { task ->
+        task.description = "Generate an API signature file for the classes annotated with @CarProtocol"
+        task.generatedApi = projectProtocolLocation.generatedApi
+        task.dependsOn(assemble)
+        task.sourceDirs = sourceCollection
+        task.dependencyClasspath = dependencyClasspath
+        task.metalavaClasspath = metalavaClasspath
+        task.bootClasspath = bootClasspath
     }
-    task checkProtocolApiCompat(type: CheckProtocolApiCompatibilityTask) {
-        description = "Check for BREAKING changes to the protocol API"
-        previousApi = projectProtocolLocation.previousApi
-        generatedApi = projectProtocolLocation.generatedApi
-        dependsOn(generateProtocolApi)
+    tasks.register("checkProtocolApiCompat", CheckProtocolApiCompatibilityTask) { task ->
+        task.description = "Check for BREAKING changes to the protocol API"
+        task.previousApi = projectProtocolLocation.previousApi
+        task.generatedApi = projectProtocolLocation.generatedApi
+        task.dependsOn(generateProtocolApi)
+        task.sourceDirs = sourceCollection
+        task.dependencyClasspath = dependencyClasspath
+        task.metalavaClasspath = metalavaClasspath
+        task.bootClasspath = bootClasspath
     }
-    task checkProtocolApi(type: CheckProtocolApiTask) {
-        description = "Check for changes to the protocol API"
-        generatedApi = projectProtocolLocation.generatedApi
-        previousApi = projectProtocolLocation.previousApi
-        currentApi = projectProtocolLocation.currentApi
-        dependsOn(checkProtocolApiCompat)
+    tasks.register("checkProtocolApi", CheckProtocolApiTask) { task ->
+        task.description = "Check for changes to the protocol API"
+        task.generatedApi = projectProtocolLocation.generatedApi
+        task.previousApi = projectProtocolLocation.previousApi
+        task.currentApi = projectProtocolLocation.currentApi
+        task.dependsOn(checkProtocolApiCompat)
     }
-    task updateProtocolApi(type: UpdateProtocolApiTask) {
-        description = "Update protocol API signature file for current Car API level to reflect" +
+    tasks.register("updateProtocolApi", UpdateProtocolApiTask) { task ->
+        task.description = "Update protocol API signature file for current Car API level to reflect" +
                 "the current state of the protocol API in the source tree."
-        protocolDir = projectProtocolLocation.protocolDir
-        generatedApi = projectProtocolLocation.generatedApi
-        currentApi = projectProtocolLocation.currentApi
-        dependsOn(checkProtocolApiCompat)
+        task.protocolDir = projectProtocolLocation.protocolDir
+        task.generatedApi = projectProtocolLocation.generatedApi
+        task.currentApi = projectProtocolLocation.currentApi
+        task.dependsOn(checkProtocolApiCompat)
     }
     EnableCachingKt.cacheEvenIfNoOutputs(checkProtocolApi)
     EnableCachingKt.cacheEvenIfNoOutputs(checkProtocolApiCompat)
diff --git a/car/app/app/src/main/java/androidx/car/app/connection/CarConnectionTypeLiveData.java b/car/app/app/src/main/java/androidx/car/app/connection/CarConnectionTypeLiveData.java
index 79f30f9..f8f6a3c 100644
--- a/car/app/app/src/main/java/androidx/car/app/connection/CarConnectionTypeLiveData.java
+++ b/car/app/app/src/main/java/androidx/car/app/connection/CarConnectionTypeLiveData.java
@@ -28,8 +28,11 @@
 import android.content.IntentFilter;
 import android.database.Cursor;
 import android.net.Uri;
+import android.os.Build;
 import android.util.Log;
 
+import androidx.annotation.DoNotInline;
+import androidx.annotation.RequiresApi;
 import androidx.annotation.VisibleForTesting;
 import androidx.car.app.connection.CarConnection.ConnectionType;
 import androidx.lifecycle.LiveData;
@@ -60,8 +63,15 @@
 
     @Override
     public void onActive() {
-        mContext.registerReceiver(mBroadcastReceiver,
-                new IntentFilter(ACTION_CAR_CONNECTION_UPDATED));
+        // TODO(b/240576633): Replace this entire if-block with a call to
+        //  ContextCompat#registerReceiver once it's released in androidx.core
+        IntentFilter filter = new IntentFilter(ACTION_CAR_CONNECTION_UPDATED);
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+            Api33Impl.registerExportedReceiver(mContext, mBroadcastReceiver, filter);
+        } else {
+            mContext.registerReceiver(mBroadcastReceiver, filter);
+        }
+
         queryForState();
     }
 
@@ -117,4 +127,17 @@
             queryForState();
         }
     }
+
+    @RequiresApi(33)
+    static class Api33Impl {
+        private Api33Impl() {
+            // Not instantiable
+        }
+
+        @DoNotInline
+        static void registerExportedReceiver(Context context, BroadcastReceiver broadcastReceiver,
+                IntentFilter intentFilter) {
+            context.registerReceiver(broadcastReceiver, intentFilter, Context.RECEIVER_EXPORTED);
+        }
+    }
 }
diff --git a/car/app/app/src/test/java/androidx/car/app/connection/CarConnectionTypeLiveDataTest.java b/car/app/app/src/test/java/androidx/car/app/connection/CarConnectionTypeLiveDataTest.java
index ae02a8e..9262c44 100644
--- a/car/app/app/src/test/java/androidx/car/app/connection/CarConnectionTypeLiveDataTest.java
+++ b/car/app/app/src/test/java/androidx/car/app/connection/CarConnectionTypeLiveDataTest.java
@@ -31,6 +31,7 @@
 import android.database.Cursor;
 import android.database.MatrixCursor;
 import android.net.Uri;
+import android.os.Build;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
@@ -38,6 +39,7 @@
 import androidx.test.core.app.ApplicationProvider;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InOrder;
@@ -45,6 +47,7 @@
 import org.mockito.MockitoAnnotations;
 import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
 import org.robolectric.annotation.internal.DoNotInstrument;
 import org.robolectric.shadows.ShadowApplication;
 import org.robolectric.shadows.ShadowLooper;
@@ -77,12 +80,30 @@
     }
 
     @Test
-    public void observe_registersBroadcastReceiver() {
-        assertThat(shadowOf(mApplication).getRegisteredReceivers()).hasSize(1);
+    @Config(sdk = Build.VERSION_CODES.S_V2)
+    public void observe_belowT_registersBroadcastReceiverWithNoFlags() {
+        shadowOf(mApplication).clearRegisteredReceivers();
 
         mCarConnectionTypeLiveData.observeForever(mMockObserver);
 
-        assertThat(shadowOf(mApplication).getRegisteredReceivers()).hasSize(2);
+        ShadowApplication.Wrapper registeredReceiver =
+                shadowOf(mApplication).getRegisteredReceivers().get(0);
+        assertThat(registeredReceiver.broadcastReceiver).isNotNull();
+        assertThat(registeredReceiver.flags).isEqualTo(0);
+    }
+
+    @Test
+    @Config(sdk = Build.VERSION_CODES.TIRAMISU)
+    @Ignore // TODO(b/240591692): Remove @Ignore once Robolectric supports SDK 33
+    public void observe_tAndAbove_registersBroadcastReceiverWithFlags() {
+        shadowOf(mApplication).clearRegisteredReceivers();
+
+        mCarConnectionTypeLiveData.observeForever(mMockObserver);
+
+        ShadowApplication.Wrapper registeredReceiver =
+                shadowOf(mApplication).getRegisteredReceivers().get(0);
+        assertThat(registeredReceiver.broadcastReceiver).isNotNull();
+        assertThat(registeredReceiver.flags).isEqualTo(Context.RECEIVER_EXPORTED);
     }
 
     @Test
diff --git a/compose/animation/animation-core-lint/src/test/java/androidx/compose/animation/core/lint/UnrememberedAnimatableDetectorTest.kt b/compose/animation/animation-core-lint/src/test/java/androidx/compose/animation/core/lint/UnrememberedAnimatableDetectorTest.kt
index ce267e4..f18c818 100644
--- a/compose/animation/animation-core-lint/src/test/java/androidx/compose/animation/core/lint/UnrememberedAnimatableDetectorTest.kt
+++ b/compose/animation/animation-core-lint/src/test/java/androidx/compose/animation/core/lint/UnrememberedAnimatableDetectorTest.kt
@@ -40,64 +40,6 @@
     override fun getIssues(): MutableList<Issue> =
         mutableListOf(UnrememberedAnimatableDetector.UnrememberedAnimatable)
 
-    // Simplified Animatable.kt stubs
-    private val AnimatableStub = compiledStub(
-        filename = "Animatable.kt",
-        filepath = "androidx/compose/animation/core",
-        checksum = 0xfbab86fa,
-        """
-            package androidx.compose.animation.core
-
-            class Animatable<T, V>(
-                initialValue: T,
-                val typeConverter: V? = null
-            )
-
-            fun Animatable(initialValue: Float): Animatable<Float, Any> = Animatable(initialValue)
-        """,
-"""
-        META-INF/main.kotlin_module:
-        H4sIAAAAAAAAAHWLuwrCQBBFR6IIo9UWIiIIKRQs1sYfEMt0CraySYY4sI+w
-        D/DzXVGrYHG5cDgHAAoAGOVNvg94xJWyrXfcPmXjTO8CSWXZqMjOisWVbafp
-        pnSi049WEQ+4+V9l4knMP76qNeVgi8tB4JONbEjghQyZmnz2drgeeIll51X/
-        4CaI6dlp9xZnOI4UoijuVSxhDy8wojKE3QAAAA==
-        """,
-        """
-        androidx/compose/animation/core/Animatable.class:
-        H4sIAAAAAAAAAI1SW08TQRT+ZrvdtmsLSwUpeENFbQuyaHwgQky8xKRJQQJN
-        X4gPQzvitNtdsjNt8MXwN3z1F2iiIfHBEB/9UcYz23qjPpjNzrnMmfN95/Lt
-        ++cvAO7jHkOVh+04ku0jvxX1DiMlfB7KHtcyCskTC/9RYvL9QGTAGDY2Gg/q
-        HT7gfsDDA//5fke09HrzH76H4y4G76wvA5vB2ZCh1A8ZbpfHH417Kk2GXLnR
-        WG80E32xHsUHfkfo/ZjLUFEFYaSTEpS/1Q8CQ56wU+VKMw8Hros0zjEU9OtD
-        8SQKByLWImYojiPlUcBEDhYmGWz9SiqG5fr/d4xA86YyyYMmD/qCoflfBdbq
-        3UgHMvQ7g54vQ2IX8sB/Kl7yfqCJsdJxv6WjeJPHXRGvD8vKuMRzhlp8IHTj
-        78qmy5V/DSNdrlAHqTHJOfUTdFNo3qYCyGf1BinaFGaONAPrkutIGmuVtPZd
-        hhenx55rlSzXytLvnR6T4pROj6t2lm4YCeZZ96zV1OO5ouPZ89ba6XHRzVpe
-        et4usTX29Z1jec7OzB+2S3ly83Y242UNCC0pa9BPgwYN7Xd3V7qa9mBXHoRc
-        92Nq7sWdfqhlT9TCgVSSIh79XgSa35OoTUGTdRmKrX5vX8QNk8XMPWqZAcXS
-        2CPn4tlc2zzmPUHt/CtpYVfzVneTH46eubtRP26JZ9IYc6MczTE2uEuzSpvO
-        omhWjKwKWRbmUSXpkD9HMkWSBktyiaxtujetd6snyFeXP8H7kLxZpnMiubHp
-        c+iljTtkLQyjMUUYSLTzFMcS7U/MLFZI5qyEDsF6BnSadAO6QUkM0cnL6Tdv
-        aQc2q0vLJ7gwRPaHHLMJhSLBIiHgUEqbADIEPYvSiL5PGQ14uvoR3vtfzJ3E
-        6SSM88OAEeMhu7kzHRl6U1hNZJk6CdTo9iK9u7SHVA2Xa7hCJ66aY6GGa7i+
-        B6ZwA4t7cBWKCjcVbincVjivUFDIKMwqlBQmfgAHXc93GwUAAA==
-        """,
-        """
-        androidx/compose/animation/core/AnimatableKt.class:
-        H4sIAAAAAAAAAJVRTW/TQBB9a+eDuKF1w1frAoVyoRJi08KJIKQKKVKECRKt
-        eslpE6+iTezdyl5HPeYncUQcUM78KMSsGykSXKi1np33/Ha88+bX7x8/AbzF
-        EcMroZPcqOSaT0x2ZQrJhVaZsMpoYnLJzyooxqn8ZJtgDOFMLARPhZ7yL+OZ
-        nBDrMwQbHQN/2T+O/79wj+Hidifex5tL9FMjbC/++1a9D1T2RWzyKZ9JO86F
-        0gUV1MZWFQs+NHZYpmmvjToaATy0GNpKK6tEeinSkvpgfYbdeG5sqjT/LK1I
-        6PdU1ssWPhnIXKiTbO4Sj/hr5bIuZckJw5vVMgxWy8Db8wIvbNJLYLWMItqj
-        7U6t43W9KvpddtoIaxFhd/SUxnI7+8Bwd0O8nluG2keTUAs7sdJyWGZjmV/c
-        DKcTm4nrMFcOr8nWuZpqYcuc8oOvpbYqkwO9UIWiz2cb12jQ56bMJ7Kv3LH9
-        tfTyHyFOyNEa3EMyZzF8HBDihJnz7eg7gm/ONzym2KjIFp5QbN8IsEUZ8LTS
-        NHG4Vt2p8LMqRnhO+zvXPum3R/AH2BkgpIjdATq4N8B9PBiBFXiIRyPUC7f2
-        CuxXa+sP0YZpjAsDAAA=
-        """
-    )
-
     // Simplified Animatable Color function stub, from androidx.compose.animation
     private val AnimatableColorStub = compiledStub(
         filename = "SingleValueAnimation.kt",
@@ -226,7 +168,7 @@
                 }
             """
             ),
-            AnimatableStub,
+            Stubs.Animatable,
             AnimatableColorStub,
             Stubs.Color,
             Stubs.Composable,
@@ -390,7 +332,7 @@
                 }
             """
             ),
-            AnimatableStub,
+            Stubs.Animatable,
             AnimatableColorStub,
             Stubs.Color,
             Stubs.Composable,
@@ -503,7 +445,7 @@
                 }
             """
             ),
-            AnimatableStub,
+            Stubs.Animatable,
             AnimatableColorStub,
             Stubs.Color,
             Stubs.Composable,
diff --git a/compose/animation/animation-core/api/current.ignore b/compose/animation/animation-core/api/current.ignore
index b3efd42..af0a929 100644
--- a/compose/animation/animation-core/api/current.ignore
+++ b/compose/animation/animation-core/api/current.ignore
@@ -1,4 +1,24 @@
 // Baseline format: 1.0
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateDpAsState(float, androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.Dp>, kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Dp,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateDpAsState has changed return type from androidx.compose.runtime.State<androidx.compose.ui.unit.Dp> to androidx.compose.runtime.State<? extends androidx.compose.ui.unit.Dp>
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateFloatAsState(float, androidx.compose.animation.core.AnimationSpec<java.lang.Float>, float, kotlin.jvm.functions.Function1<? super java.lang.Float,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateFloatAsState has changed return type from androidx.compose.runtime.State<java.lang.Float> to androidx.compose.runtime.State<? extends java.lang.Float>
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateIntAsState(int, androidx.compose.animation.core.AnimationSpec<java.lang.Integer>, kotlin.jvm.functions.Function1<? super java.lang.Integer,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateIntAsState has changed return type from androidx.compose.runtime.State<java.lang.Integer> to androidx.compose.runtime.State<? extends java.lang.Integer>
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateIntOffsetAsState(long, androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntOffset>, kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntOffset,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateIntOffsetAsState has changed return type from androidx.compose.runtime.State<androidx.compose.ui.unit.IntOffset> to androidx.compose.runtime.State<? extends androidx.compose.ui.unit.IntOffset>
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateIntSizeAsState(long, androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntSize>, kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntSize,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateIntSizeAsState has changed return type from androidx.compose.runtime.State<androidx.compose.ui.unit.IntSize> to androidx.compose.runtime.State<? extends androidx.compose.ui.unit.IntSize>
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateOffsetAsState(long, androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Offset>, kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Offset,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateOffsetAsState has changed return type from androidx.compose.runtime.State<androidx.compose.ui.geometry.Offset> to androidx.compose.runtime.State<? extends androidx.compose.ui.geometry.Offset>
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateRectAsState(androidx.compose.ui.geometry.Rect, androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Rect>, kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Rect,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateRectAsState has changed return type from androidx.compose.runtime.State<androidx.compose.ui.geometry.Rect> to androidx.compose.runtime.State<? extends androidx.compose.ui.geometry.Rect>
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateSizeAsState(long, androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Size>, kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Size,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateSizeAsState has changed return type from androidx.compose.runtime.State<androidx.compose.ui.geometry.Size> to androidx.compose.runtime.State<? extends androidx.compose.ui.geometry.Size>
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateValueAsState(T, androidx.compose.animation.core.TwoWayConverter<T,V>, androidx.compose.animation.core.AnimationSpec<T>, T, kotlin.jvm.functions.Function1<? super T,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateValueAsState has changed return type from androidx.compose.runtime.State<T> to androidx.compose.runtime.State<? extends T>
+
+
 RemovedDeprecatedMethod: androidx.compose.animation.core.InfiniteRepeatableSpec#InfiniteRepeatableSpec(androidx.compose.animation.core.DurationBasedAnimationSpec<T>, androidx.compose.animation.core.RepeatMode):
     Removed deprecated method androidx.compose.animation.core.InfiniteRepeatableSpec.InfiniteRepeatableSpec(androidx.compose.animation.core.DurationBasedAnimationSpec<T>,androidx.compose.animation.core.RepeatMode)
 RemovedDeprecatedMethod: androidx.compose.animation.core.RepeatableSpec#RepeatableSpec(int, androidx.compose.animation.core.DurationBasedAnimationSpec<T>, androidx.compose.animation.core.RepeatMode):
diff --git a/compose/animation/animation-core/api/current.txt b/compose/animation/animation-core/api/current.txt
index 1e090f2..7bab3ae 100644
--- a/compose/animation/animation-core/api/current.txt
+++ b/compose/animation/animation-core/api/current.txt
@@ -5,10 +5,12 @@
   }
 
   public final class Animatable<T, V extends androidx.compose.animation.core.AnimationVector> {
-    ctor public Animatable(T? initialValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional T? visibilityThreshold);
+    ctor public Animatable(T? initialValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional T? visibilityThreshold, optional String label);
+    ctor @Deprecated public Animatable(T? initialValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional T? visibilityThreshold);
     method public suspend Object? animateDecay(T? initialVelocity, androidx.compose.animation.core.DecayAnimationSpec<T> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.core.Animatable<T,V>,kotlin.Unit>? block, optional kotlin.coroutines.Continuation<? super androidx.compose.animation.core.AnimationResult<T,V>>);
     method public suspend Object? animateTo(T? targetValue, optional androidx.compose.animation.core.AnimationSpec<T> animationSpec, optional T? initialVelocity, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.core.Animatable<T,V>,kotlin.Unit>? block, optional kotlin.coroutines.Continuation<? super androidx.compose.animation.core.AnimationResult<T,V>>);
     method public androidx.compose.runtime.State<T> asState();
+    method public String getLabel();
     method public T? getLowerBound();
     method public T! getTargetValue();
     method public androidx.compose.animation.core.TwoWayConverter<T,V> getTypeConverter();
@@ -21,6 +23,7 @@
     method public suspend Object? stop(kotlin.coroutines.Continuation<? super kotlin.Unit>);
     method public void updateBounds(optional T? lowerBound, optional T? upperBound);
     property public final boolean isRunning;
+    property public final String label;
     property public final T? lowerBound;
     property public final T! targetValue;
     property public final androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter;
@@ -35,15 +38,24 @@
   }
 
   public final class AnimateAsStateKt {
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.Dp> animateDpAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.Dp> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Dp,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.lang.Float> animateFloatAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional float visibilityThreshold, optional kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.lang.Integer> animateIntAsState(int targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Integer> animationSpec, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.IntOffset> animateIntOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntOffset> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntOffset,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.IntSize> animateIntSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntSize> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntSize,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Offset> animateOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Offset> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Offset,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Rect> animateRectAsState(androidx.compose.ui.geometry.Rect targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Rect> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Rect,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Size> animateSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Size> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Size,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static <T, V extends androidx.compose.animation.core.AnimationVector> androidx.compose.runtime.State<T> animateValueAsState(T? targetValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional androidx.compose.animation.core.AnimationSpec<T> animationSpec, optional T? visibilityThreshold, optional kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.Dp> animateDpAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.Dp> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Dp,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.unit.Dp>! animateDpAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.Dp> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Dp,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.lang.Float> animateFloatAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional float visibilityThreshold, optional String label, optional kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends java.lang.Float>! animateFloatAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional float visibilityThreshold, optional kotlin.jvm.functions.Function1<? super java.lang.Float,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.lang.Integer> animateIntAsState(int targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Integer> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends java.lang.Integer>! animateIntAsState(int targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Integer> animationSpec, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.IntOffset> animateIntOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntOffset> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntOffset,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.unit.IntOffset>! animateIntOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntOffset> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntOffset,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.IntSize> animateIntSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntSize> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntSize,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.unit.IntSize>! animateIntSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntSize> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntSize,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Offset> animateOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Offset> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Offset,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.geometry.Offset>! animateOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Offset> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Offset,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Rect> animateRectAsState(androidx.compose.ui.geometry.Rect targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Rect> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Rect,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.geometry.Rect>! animateRectAsState(androidx.compose.ui.geometry.Rect targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Rect> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Rect,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Size> animateSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Size> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Size,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.geometry.Size>! animateSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Size> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Size,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static <T, V extends androidx.compose.animation.core.AnimationVector> androidx.compose.runtime.State<T> animateValueAsState(T? targetValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional androidx.compose.animation.core.AnimationSpec<T> animationSpec, optional T? visibilityThreshold, optional String label, optional kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static <T, V extends androidx.compose.animation.core.AnimationVector> androidx.compose.runtime.State<? extends T>! animateValueAsState(T? targetValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional androidx.compose.animation.core.AnimationSpec<T> animationSpec, optional T? visibilityThreshold, optional kotlin.jvm.functions.Function1<? super T,? extends kotlin.Unit>? finishedListener);
   }
 
   @kotlin.jvm.JvmDefaultWithCompatibility public interface Animation<T, V extends androidx.compose.animation.core.AnimationVector> {
diff --git a/compose/animation/animation-core/api/public_plus_experimental_current.txt b/compose/animation/animation-core/api/public_plus_experimental_current.txt
index fdfcae7..ce65bf1 100644
--- a/compose/animation/animation-core/api/public_plus_experimental_current.txt
+++ b/compose/animation/animation-core/api/public_plus_experimental_current.txt
@@ -5,10 +5,12 @@
   }
 
   public final class Animatable<T, V extends androidx.compose.animation.core.AnimationVector> {
-    ctor public Animatable(T? initialValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional T? visibilityThreshold);
+    ctor public Animatable(T? initialValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional T? visibilityThreshold, optional String label);
+    ctor @Deprecated public Animatable(T? initialValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional T? visibilityThreshold);
     method public suspend Object? animateDecay(T? initialVelocity, androidx.compose.animation.core.DecayAnimationSpec<T> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.core.Animatable<T,V>,kotlin.Unit>? block, optional kotlin.coroutines.Continuation<? super androidx.compose.animation.core.AnimationResult<T,V>>);
     method public suspend Object? animateTo(T? targetValue, optional androidx.compose.animation.core.AnimationSpec<T> animationSpec, optional T? initialVelocity, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.core.Animatable<T,V>,kotlin.Unit>? block, optional kotlin.coroutines.Continuation<? super androidx.compose.animation.core.AnimationResult<T,V>>);
     method public androidx.compose.runtime.State<T> asState();
+    method public String getLabel();
     method public T? getLowerBound();
     method public T! getTargetValue();
     method public androidx.compose.animation.core.TwoWayConverter<T,V> getTypeConverter();
@@ -21,6 +23,7 @@
     method public suspend Object? stop(kotlin.coroutines.Continuation<? super kotlin.Unit>);
     method public void updateBounds(optional T? lowerBound, optional T? upperBound);
     property public final boolean isRunning;
+    property public final String label;
     property public final T? lowerBound;
     property public final T! targetValue;
     property public final androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter;
@@ -35,15 +38,24 @@
   }
 
   public final class AnimateAsStateKt {
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.Dp> animateDpAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.Dp> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Dp,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.lang.Float> animateFloatAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional float visibilityThreshold, optional kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.lang.Integer> animateIntAsState(int targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Integer> animationSpec, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.IntOffset> animateIntOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntOffset> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntOffset,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.IntSize> animateIntSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntSize> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntSize,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Offset> animateOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Offset> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Offset,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Rect> animateRectAsState(androidx.compose.ui.geometry.Rect targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Rect> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Rect,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Size> animateSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Size> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Size,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static <T, V extends androidx.compose.animation.core.AnimationVector> androidx.compose.runtime.State<T> animateValueAsState(T? targetValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional androidx.compose.animation.core.AnimationSpec<T> animationSpec, optional T? visibilityThreshold, optional kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.Dp> animateDpAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.Dp> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Dp,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.unit.Dp>! animateDpAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.Dp> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Dp,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.lang.Float> animateFloatAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional float visibilityThreshold, optional String label, optional kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends java.lang.Float>! animateFloatAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional float visibilityThreshold, optional kotlin.jvm.functions.Function1<? super java.lang.Float,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.lang.Integer> animateIntAsState(int targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Integer> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends java.lang.Integer>! animateIntAsState(int targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Integer> animationSpec, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.IntOffset> animateIntOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntOffset> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntOffset,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.unit.IntOffset>! animateIntOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntOffset> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntOffset,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.IntSize> animateIntSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntSize> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntSize,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.unit.IntSize>! animateIntSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntSize> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntSize,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Offset> animateOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Offset> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Offset,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.geometry.Offset>! animateOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Offset> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Offset,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Rect> animateRectAsState(androidx.compose.ui.geometry.Rect targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Rect> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Rect,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.geometry.Rect>! animateRectAsState(androidx.compose.ui.geometry.Rect targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Rect> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Rect,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Size> animateSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Size> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Size,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.geometry.Size>! animateSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Size> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Size,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static <T, V extends androidx.compose.animation.core.AnimationVector> androidx.compose.runtime.State<T> animateValueAsState(T? targetValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional androidx.compose.animation.core.AnimationSpec<T> animationSpec, optional T? visibilityThreshold, optional String label, optional kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static <T, V extends androidx.compose.animation.core.AnimationVector> androidx.compose.runtime.State<? extends T>! animateValueAsState(T? targetValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional androidx.compose.animation.core.AnimationSpec<T> animationSpec, optional T? visibilityThreshold, optional kotlin.jvm.functions.Function1<? super T,? extends kotlin.Unit>? finishedListener);
   }
 
   @kotlin.jvm.JvmDefaultWithCompatibility public interface Animation<T, V extends androidx.compose.animation.core.AnimationVector> {
diff --git a/compose/animation/animation-core/api/restricted_current.ignore b/compose/animation/animation-core/api/restricted_current.ignore
index b3efd42..af0a929 100644
--- a/compose/animation/animation-core/api/restricted_current.ignore
+++ b/compose/animation/animation-core/api/restricted_current.ignore
@@ -1,4 +1,24 @@
 // Baseline format: 1.0
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateDpAsState(float, androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.Dp>, kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Dp,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateDpAsState has changed return type from androidx.compose.runtime.State<androidx.compose.ui.unit.Dp> to androidx.compose.runtime.State<? extends androidx.compose.ui.unit.Dp>
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateFloatAsState(float, androidx.compose.animation.core.AnimationSpec<java.lang.Float>, float, kotlin.jvm.functions.Function1<? super java.lang.Float,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateFloatAsState has changed return type from androidx.compose.runtime.State<java.lang.Float> to androidx.compose.runtime.State<? extends java.lang.Float>
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateIntAsState(int, androidx.compose.animation.core.AnimationSpec<java.lang.Integer>, kotlin.jvm.functions.Function1<? super java.lang.Integer,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateIntAsState has changed return type from androidx.compose.runtime.State<java.lang.Integer> to androidx.compose.runtime.State<? extends java.lang.Integer>
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateIntOffsetAsState(long, androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntOffset>, kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntOffset,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateIntOffsetAsState has changed return type from androidx.compose.runtime.State<androidx.compose.ui.unit.IntOffset> to androidx.compose.runtime.State<? extends androidx.compose.ui.unit.IntOffset>
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateIntSizeAsState(long, androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntSize>, kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntSize,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateIntSizeAsState has changed return type from androidx.compose.runtime.State<androidx.compose.ui.unit.IntSize> to androidx.compose.runtime.State<? extends androidx.compose.ui.unit.IntSize>
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateOffsetAsState(long, androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Offset>, kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Offset,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateOffsetAsState has changed return type from androidx.compose.runtime.State<androidx.compose.ui.geometry.Offset> to androidx.compose.runtime.State<? extends androidx.compose.ui.geometry.Offset>
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateRectAsState(androidx.compose.ui.geometry.Rect, androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Rect>, kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Rect,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateRectAsState has changed return type from androidx.compose.runtime.State<androidx.compose.ui.geometry.Rect> to androidx.compose.runtime.State<? extends androidx.compose.ui.geometry.Rect>
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateSizeAsState(long, androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Size>, kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Size,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateSizeAsState has changed return type from androidx.compose.runtime.State<androidx.compose.ui.geometry.Size> to androidx.compose.runtime.State<? extends androidx.compose.ui.geometry.Size>
+ChangedType: androidx.compose.animation.core.AnimateAsStateKt#animateValueAsState(T, androidx.compose.animation.core.TwoWayConverter<T,V>, androidx.compose.animation.core.AnimationSpec<T>, T, kotlin.jvm.functions.Function1<? super T,? extends kotlin.Unit>):
+    Method androidx.compose.animation.core.AnimateAsStateKt.animateValueAsState has changed return type from androidx.compose.runtime.State<T> to androidx.compose.runtime.State<? extends T>
+
+
 RemovedDeprecatedMethod: androidx.compose.animation.core.InfiniteRepeatableSpec#InfiniteRepeatableSpec(androidx.compose.animation.core.DurationBasedAnimationSpec<T>, androidx.compose.animation.core.RepeatMode):
     Removed deprecated method androidx.compose.animation.core.InfiniteRepeatableSpec.InfiniteRepeatableSpec(androidx.compose.animation.core.DurationBasedAnimationSpec<T>,androidx.compose.animation.core.RepeatMode)
 RemovedDeprecatedMethod: androidx.compose.animation.core.RepeatableSpec#RepeatableSpec(int, androidx.compose.animation.core.DurationBasedAnimationSpec<T>, androidx.compose.animation.core.RepeatMode):
diff --git a/compose/animation/animation-core/api/restricted_current.txt b/compose/animation/animation-core/api/restricted_current.txt
index 39669b2..6a874fa 100644
--- a/compose/animation/animation-core/api/restricted_current.txt
+++ b/compose/animation/animation-core/api/restricted_current.txt
@@ -5,10 +5,12 @@
   }
 
   public final class Animatable<T, V extends androidx.compose.animation.core.AnimationVector> {
-    ctor public Animatable(T? initialValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional T? visibilityThreshold);
+    ctor public Animatable(T? initialValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional T? visibilityThreshold, optional String label);
+    ctor @Deprecated public Animatable(T? initialValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional T? visibilityThreshold);
     method public suspend Object? animateDecay(T? initialVelocity, androidx.compose.animation.core.DecayAnimationSpec<T> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.core.Animatable<T,V>,kotlin.Unit>? block, optional kotlin.coroutines.Continuation<? super androidx.compose.animation.core.AnimationResult<T,V>>);
     method public suspend Object? animateTo(T? targetValue, optional androidx.compose.animation.core.AnimationSpec<T> animationSpec, optional T? initialVelocity, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.core.Animatable<T,V>,kotlin.Unit>? block, optional kotlin.coroutines.Continuation<? super androidx.compose.animation.core.AnimationResult<T,V>>);
     method public androidx.compose.runtime.State<T> asState();
+    method public String getLabel();
     method public T? getLowerBound();
     method public T! getTargetValue();
     method public androidx.compose.animation.core.TwoWayConverter<T,V> getTypeConverter();
@@ -21,6 +23,7 @@
     method public suspend Object? stop(kotlin.coroutines.Continuation<? super kotlin.Unit>);
     method public void updateBounds(optional T? lowerBound, optional T? upperBound);
     property public final boolean isRunning;
+    property public final String label;
     property public final T? lowerBound;
     property public final T! targetValue;
     property public final androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter;
@@ -35,15 +38,24 @@
   }
 
   public final class AnimateAsStateKt {
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.Dp> animateDpAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.Dp> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Dp,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.lang.Float> animateFloatAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional float visibilityThreshold, optional kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.lang.Integer> animateIntAsState(int targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Integer> animationSpec, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.IntOffset> animateIntOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntOffset> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntOffset,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.IntSize> animateIntSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntSize> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntSize,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Offset> animateOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Offset> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Offset,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Rect> animateRectAsState(androidx.compose.ui.geometry.Rect targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Rect> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Rect,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Size> animateSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Size> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Size,kotlin.Unit>? finishedListener);
-    method @androidx.compose.runtime.Composable public static <T, V extends androidx.compose.animation.core.AnimationVector> androidx.compose.runtime.State<T> animateValueAsState(T? targetValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional androidx.compose.animation.core.AnimationSpec<T> animationSpec, optional T? visibilityThreshold, optional kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.Dp> animateDpAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.Dp> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Dp,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.unit.Dp>! animateDpAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.Dp> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Dp,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.lang.Float> animateFloatAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional float visibilityThreshold, optional String label, optional kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends java.lang.Float>! animateFloatAsState(float targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional float visibilityThreshold, optional kotlin.jvm.functions.Function1<? super java.lang.Float,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.lang.Integer> animateIntAsState(int targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Integer> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends java.lang.Integer>! animateIntAsState(int targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Integer> animationSpec, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.IntOffset> animateIntOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntOffset> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntOffset,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.unit.IntOffset>! animateIntOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntOffset> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntOffset,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.unit.IntSize> animateIntSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntSize> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntSize,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.unit.IntSize>! animateIntSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.unit.IntSize> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.IntSize,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Offset> animateOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Offset> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Offset,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.geometry.Offset>! animateOffsetAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Offset> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Offset,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Rect> animateRectAsState(androidx.compose.ui.geometry.Rect targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Rect> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Rect,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.geometry.Rect>! animateRectAsState(androidx.compose.ui.geometry.Rect targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Rect> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Rect,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.geometry.Size> animateSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Size> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Size,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.geometry.Size>! animateSizeAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.geometry.Size> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Size,? extends kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static <T, V extends androidx.compose.animation.core.AnimationVector> androidx.compose.runtime.State<T> animateValueAsState(T? targetValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional androidx.compose.animation.core.AnimationSpec<T> animationSpec, optional T? visibilityThreshold, optional String label, optional kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static <T, V extends androidx.compose.animation.core.AnimationVector> androidx.compose.runtime.State<? extends T>! animateValueAsState(T? targetValue, androidx.compose.animation.core.TwoWayConverter<T,V> typeConverter, optional androidx.compose.animation.core.AnimationSpec<T> animationSpec, optional T? visibilityThreshold, optional kotlin.jvm.functions.Function1<? super T,? extends kotlin.Unit>? finishedListener);
   }
 
   @kotlin.jvm.JvmDefaultWithCompatibility public interface Animation<T, V extends androidx.compose.animation.core.AnimationVector> {
diff --git a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Animatable.kt b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Animatable.kt
index 4a4ede6..cd9d9bb 100644
--- a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Animatable.kt
+++ b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Animatable.kt
@@ -50,9 +50,23 @@
 class Animatable<T, V : AnimationVector>(
     initialValue: T,
     val typeConverter: TwoWayConverter<T, V>,
-    private val visibilityThreshold: T? = null
+    private val visibilityThreshold: T? = null,
+    val label: String = "Animatable"
 ) {
 
+    @Deprecated(
+        "Maintained for binary compatibility",
+        replaceWith = ReplaceWith(
+            "Animatable(initialValue, typeConverter, visibilityThreshold, \"Animatable\")"
+        ),
+        DeprecationLevel.HIDDEN
+    )
+    constructor(
+        initialValue: T,
+        typeConverter: TwoWayConverter<T, V>,
+        visibilityThreshold: T? = null
+    ) : this(initialValue, typeConverter, visibilityThreshold, "Animatable")
+
     internal val internalState = AnimationState(
         typeConverter = typeConverter,
         initialValue = initialValue
diff --git a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/AnimateAsState.kt b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/AnimateAsState.kt
index 2146ec2..c7872c7 100644
--- a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/AnimateAsState.kt
+++ b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/AnimateAsState.kt
@@ -54,6 +54,7 @@
  *                      will be used by default.
  * @param visibilityThreshold An optional threshold for deciding when the animation value is
  *                            considered close enough to the targetValue.
+ * @param label An optional label to differentiate from other animations in Android Studio.
  * @param finishedListener An optional end listener to get notified when the animation is finished.
  * @return A [State] object, the value of which is updated by animation.
  */
@@ -62,6 +63,7 @@
     targetValue: Float,
     animationSpec: AnimationSpec<Float> = defaultAnimation,
     visibilityThreshold: Float = 0.01f,
+    label: String = "FloatAnimation",
     finishedListener: ((Float) -> Unit)? = null
 ): State<Float> {
     val resolvedAnimSpec =
@@ -75,6 +77,7 @@
         Float.VectorConverter,
         resolvedAnimSpec,
         visibilityThreshold,
+        label,
         finishedListener
     )
 }
@@ -97,6 +100,7 @@
  * @param targetValue Target value of the animation
  * @param animationSpec The animation that will be used to change the value through time. Physics
  *                    animation will be used by default.
+ * @param label An optional label to differentiate from other animations in Android Studio.
  * @param finishedListener An optional end listener to get notified when the animation is finished.
  * @return A [State] object, the value of which is updated by animation.
  */
@@ -104,12 +108,14 @@
 fun animateDpAsState(
     targetValue: Dp,
     animationSpec: AnimationSpec<Dp> = dpDefaultSpring,
+    label: String = "DpAnimation",
     finishedListener: ((Dp) -> Unit)? = null
 ): State<Dp> {
     return animateValueAsState(
         targetValue,
         Dp.VectorConverter,
         animationSpec,
+        label = label,
         finishedListener = finishedListener
     )
 }
@@ -135,6 +141,7 @@
  * @param targetValue Target value of the animation
  * @param animationSpec The animation that will be used to change the value through time. Physics
  *                    animation will be used by default.
+ * @param label An optional label to differentiate from other animations in Android Studio.
  * @param finishedListener An optional end listener to get notified when the animation is finished.
  * @return A [State] object, the value of which is updated by animation.
  */
@@ -142,12 +149,14 @@
 fun animateSizeAsState(
     targetValue: Size,
     animationSpec: AnimationSpec<Size> = sizeDefaultSpring,
+    label: String = "SizeAnimation",
     finishedListener: ((Size) -> Unit)? = null
 ): State<Size> {
     return animateValueAsState(
         targetValue,
         Size.VectorConverter,
         animationSpec,
+        label = label,
         finishedListener = finishedListener
     )
 }
@@ -172,6 +181,7 @@
  * @param targetValue Target value of the animation
  * @param animationSpec The animation that will be used to change the value through time. Physics
  *                    animation will be used by default.
+ * @param label An optional label to differentiate from other animations in Android Studio.
  * @param finishedListener An optional end listener to get notified when the animation is finished.
  * @return A [State] object, the value of which is updated by animation.
  */
@@ -179,10 +189,15 @@
 fun animateOffsetAsState(
     targetValue: Offset,
     animationSpec: AnimationSpec<Offset> = offsetDefaultSpring,
+    label: String = "OffsetAnimation",
     finishedListener: ((Offset) -> Unit)? = null
 ): State<Offset> {
     return animateValueAsState(
-        targetValue, Offset.VectorConverter, animationSpec, finishedListener = finishedListener
+        targetValue,
+        Offset.VectorConverter,
+        animationSpec,
+        label = label,
+        finishedListener = finishedListener
     )
 }
 
@@ -207,6 +222,7 @@
  * @param targetValue Target value of the animation
  * @param animationSpec The animation that will be used to change the value through time. Physics
  *                    animation will be used by default.
+ * @param label An optional label to differentiate from other animations in Android Studio.
  * @param finishedListener An optional end listener to get notified when the animation is finished.
  * @return A [State] object, the value of which is updated by animation.
  */
@@ -214,10 +230,15 @@
 fun animateRectAsState(
     targetValue: Rect,
     animationSpec: AnimationSpec<Rect> = rectDefaultSpring,
+    label: String = "RectAnimation",
     finishedListener: ((Rect) -> Unit)? = null
 ): State<Rect> {
     return animateValueAsState(
-        targetValue, Rect.VectorConverter, animationSpec, finishedListener = finishedListener
+        targetValue,
+        Rect.VectorConverter,
+        animationSpec,
+        label = label,
+        finishedListener = finishedListener
     )
 }
 
@@ -239,6 +260,7 @@
  * @param targetValue Target value of the animation
  * @param animationSpec The animation that will be used to change the value through time. Physics
  *                    animation will be used by default.
+ * @param label An optional label to differentiate from other animations in Android Studio.
  * @param finishedListener An optional end listener to get notified when the animation is finished.
  * @return A [State] object, the value of which is updated by animation.
  */
@@ -246,10 +268,15 @@
 fun animateIntAsState(
     targetValue: Int,
     animationSpec: AnimationSpec<Int> = intDefaultSpring,
+    label: String = "IntAnimation",
     finishedListener: ((Int) -> Unit)? = null
 ): State<Int> {
     return animateValueAsState(
-        targetValue, Int.VectorConverter, animationSpec, finishedListener = finishedListener
+        targetValue,
+        Int.VectorConverter,
+        animationSpec,
+        label = label,
+        finishedListener = finishedListener
     )
 }
 
@@ -273,6 +300,7 @@
  * @param targetValue Target value of the animation
  * @param animationSpec The animation that will be used to change the value through time. Physics
  *                    animation will be used by default.
+ * @param label An optional label to differentiate from other animations in Android Studio.
  * @param finishedListener An optional end listener to get notified when the animation is finished.
  * @return A [State] object, the value of which is updated by animation.
  */
@@ -280,10 +308,15 @@
 fun animateIntOffsetAsState(
     targetValue: IntOffset,
     animationSpec: AnimationSpec<IntOffset> = intOffsetDefaultSpring,
+    label: String = "IntOffsetAnimation",
     finishedListener: ((IntOffset) -> Unit)? = null
 ): State<IntOffset> {
     return animateValueAsState(
-        targetValue, IntOffset.VectorConverter, animationSpec, finishedListener = finishedListener
+        targetValue,
+        IntOffset.VectorConverter,
+        animationSpec,
+        label = label,
+        finishedListener = finishedListener
     )
 }
 
@@ -305,6 +338,7 @@
  * @param targetValue Target value of the animation
  * @param animationSpec The animation that will be used to change the value through time. Physics
  *                    animation will be used by default.
+ * @param label An optional label to differentiate from other animations in Android Studio.
  * @param finishedListener An optional end listener to get notified when the animation is finished.
  * @return A [State] object, the value of which is updated by animation.
  */
@@ -312,10 +346,15 @@
 fun animateIntSizeAsState(
     targetValue: IntSize,
     animationSpec: AnimationSpec<IntSize> = intSizeDefaultSpring,
+    label: String = "IntSizeAnimation",
     finishedListener: ((IntSize) -> Unit)? = null
 ): State<IntSize> {
     return animateValueAsState(
-        targetValue, IntSize.VectorConverter, animationSpec, finishedListener = finishedListener
+        targetValue,
+        IntSize.VectorConverter,
+        animationSpec,
+        label = label,
+        finishedListener = finishedListener
     )
 }
 
@@ -343,6 +382,7 @@
  *                    animation will be used by default.
  * @param visibilityThreshold An optional threshold to define when the animation value can be
  *                            considered close enough to the targetValue to end the animation.
+ * @param label An optional label to differentiate from other animations in Android Studio.
  * @param finishedListener An optional end listener to get notified when the animation is finished.
  * @return A [State] object, the value of which is updated by animation.
  */
@@ -350,17 +390,25 @@
 fun <T, V : AnimationVector> animateValueAsState(
     targetValue: T,
     typeConverter: TwoWayConverter<T, V>,
-    @Suppress("UNINITIALIZED_PARAMETER_WARNING") // b/235315629
-    animationSpec: AnimationSpec<T> = remember {
-        spring(visibilityThreshold = visibilityThreshold)
-    },
+    animationSpec: AnimationSpec<T> = remember { spring() },
     visibilityThreshold: T? = null,
+    label: String = "ValueAnimation",
     finishedListener: ((T) -> Unit)? = null
 ): State<T> {
 
-    val animatable = remember { Animatable(targetValue, typeConverter) }
+    val animatable = remember { Animatable(targetValue, typeConverter, visibilityThreshold, label) }
     val listener by rememberUpdatedState(finishedListener)
-    val animSpec by rememberUpdatedState(animationSpec)
+    val animSpec: AnimationSpec<T> by rememberUpdatedState(
+        animationSpec.run {
+            if (visibilityThreshold != null && this is SpringSpec &&
+                this.visibilityThreshold != visibilityThreshold
+            ) {
+                spring(dampingRatio, stiffness, visibilityThreshold)
+            } else {
+                this
+            }
+        }
+    )
     val channel = remember { Channel<T>(Channel.CONFLATED) }
     SideEffect {
         channel.trySend(targetValue)
@@ -382,4 +430,152 @@
         }
     }
     return animatable.asState()
-}
\ No newline at end of file
+}
+
+@Deprecated(
+    "animate*AsState APIs now have a new label parameter added.",
+    level = DeprecationLevel.HIDDEN
+)
+@Composable
+fun animateFloatAsState(
+    targetValue: Float,
+    animationSpec: AnimationSpec<Float> = defaultAnimation,
+    visibilityThreshold: Float = 0.01f,
+    finishedListener: ((Float) -> Unit)? = null
+): State<Float> = animateFloatAsState(
+        targetValue,
+        animationSpec,
+        visibilityThreshold,
+        finishedListener = finishedListener
+    )
+
+@Deprecated(
+    "animate*AsState APIs now have a new label parameter added.",
+    level = DeprecationLevel.HIDDEN
+)
+@Composable
+fun animateDpAsState(
+    targetValue: Dp,
+    animationSpec: AnimationSpec<Dp> = dpDefaultSpring,
+    finishedListener: ((Dp) -> Unit)? = null
+): State<Dp> {
+    return animateValueAsState(
+        targetValue,
+        Dp.VectorConverter,
+        animationSpec,
+        finishedListener = finishedListener
+    )
+}
+
+@Deprecated(
+    "animate*AsState APIs now have a new label parameter added.",
+    level = DeprecationLevel.HIDDEN
+)
+@Composable
+fun animateSizeAsState(
+    targetValue: Size,
+    animationSpec: AnimationSpec<Size> = sizeDefaultSpring,
+    finishedListener: ((Size) -> Unit)? = null
+): State<Size> {
+    return animateValueAsState(
+        targetValue,
+        Size.VectorConverter,
+        animationSpec,
+        finishedListener = finishedListener
+    )
+}
+
+@Deprecated(
+    "animate*AsState APIs now have a new label parameter added.",
+    level = DeprecationLevel.HIDDEN
+)
+@Composable
+fun animateOffsetAsState(
+    targetValue: Offset,
+    animationSpec: AnimationSpec<Offset> = offsetDefaultSpring,
+    finishedListener: ((Offset) -> Unit)? = null
+): State<Offset> {
+    return animateValueAsState(
+        targetValue, Offset.VectorConverter, animationSpec, finishedListener = finishedListener
+    )
+}
+
+@Deprecated(
+    "animate*AsState APIs now have a new label parameter added.",
+    level = DeprecationLevel.HIDDEN
+)
+@Composable
+fun animateRectAsState(
+    targetValue: Rect,
+    animationSpec: AnimationSpec<Rect> = rectDefaultSpring,
+    finishedListener: ((Rect) -> Unit)? = null
+): State<Rect> {
+    return animateValueAsState(
+        targetValue, Rect.VectorConverter, animationSpec, finishedListener = finishedListener
+    )
+}
+
+@Deprecated(
+    "animate*AsState APIs now have a new label parameter added.",
+    level = DeprecationLevel.HIDDEN
+)
+@Composable
+fun animateIntAsState(
+    targetValue: Int,
+    animationSpec: AnimationSpec<Int> = intDefaultSpring,
+    finishedListener: ((Int) -> Unit)? = null
+): State<Int> {
+    return animateValueAsState(
+        targetValue, Int.VectorConverter, animationSpec, finishedListener = finishedListener
+    )
+}
+
+@Deprecated(
+    "animate*AsState APIs now have a new label parameter added.",
+    level = DeprecationLevel.HIDDEN
+)
+@Composable
+fun animateIntOffsetAsState(
+    targetValue: IntOffset,
+    animationSpec: AnimationSpec<IntOffset> = intOffsetDefaultSpring,
+    finishedListener: ((IntOffset) -> Unit)? = null
+): State<IntOffset> {
+    return animateValueAsState(
+        targetValue, IntOffset.VectorConverter, animationSpec, finishedListener = finishedListener
+    )
+}
+
+@Deprecated(
+    "animate*AsState APIs now have a new label parameter added.",
+    level = DeprecationLevel.HIDDEN
+)
+@Composable
+fun animateIntSizeAsState(
+    targetValue: IntSize,
+    animationSpec: AnimationSpec<IntSize> = intSizeDefaultSpring,
+    finishedListener: ((IntSize) -> Unit)? = null
+): State<IntSize> {
+    return animateValueAsState(
+        targetValue, IntSize.VectorConverter, animationSpec, finishedListener = finishedListener
+    )
+}
+
+@Deprecated(
+    "animate*AsState APIs now have a new label parameter added.",
+    level = DeprecationLevel.HIDDEN
+)
+@Composable
+fun <T, V : AnimationVector> animateValueAsState(
+    targetValue: T,
+    typeConverter: TwoWayConverter<T, V>,
+    animationSpec: AnimationSpec<T> = remember { spring() },
+    visibilityThreshold: T? = null,
+    finishedListener: ((T) -> Unit)? = null
+): State<T> = animateValueAsState(
+    targetValue = targetValue,
+    typeConverter = typeConverter,
+    animationSpec = animationSpec,
+    visibilityThreshold = visibilityThreshold,
+    label = "ValueAnimation",
+    finishedListener = finishedListener
+)
diff --git a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/SuspendAnimation.kt b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/SuspendAnimation.kt
index 63d7e9f..2be302f 100644
--- a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/SuspendAnimation.kt
+++ b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/SuspendAnimation.kt
@@ -24,16 +24,20 @@
 
 /**
  * Target based animation that animates from the given [initialValue] towards the [targetValue],
- * with an optional [initialVelocity]. The [initialVelocity] defaults to 0f. By default, a [spring]
- * will be used for the animation. An alternative [animationSpec] can be provided to replace the
- * default [spring]. On each frame, the [block] will be invoked with up-to-date value and velocity.
+ * with an optional [initialVelocity]. By default, a [spring] will be used for the animation. An
+ * alternative [animationSpec] can be provided to replace the default [spring].
  *
  * This is a convenient method for Float animation. If there's a need to access more info related to
  * the animation such as start time, target, etc, consider using [AnimationState.animateTo].
  * To animate non-[Float] data types, consider the [animate] overload/variant for generic types.
  *
+ * @param initialVelocity The velocity to use for the animation. 0f by default.
+ * @param animationSpec The animation configuration that will be used. [spring] by default.
+ * @param block Will be invoked on every frame with the current value and velocity of the animation
+ * for that frame.
+ *
  * @sample androidx.compose.animation.core.samples.suspendAnimateFloatVariant
- * @see [AnimationState.animateTo]
+ * @see AnimationState.animateTo
  */
 suspend fun animate(
     initialValue: Float,
@@ -56,16 +60,16 @@
  * Decay animation that slows down from the given [initialVelocity] starting at [initialValue] until
  * the velocity reaches 0. This is often used after a fling gesture.
  *
- * [animationSpec] defines the decay animation that will be used for this animation. Some options
- * for this [animationSpec] include: [splineBasedDecay][androidx.compose.animation
- * .splineBasedDecay] and [exponentialDecay]. [block] will be invoked on each animation frame
- * with up-to-date value and velocity.
- *
  * This is a convenient method for decay animation. If there's a need to access more info related to
- * the animation such as start time, target, etc, consider using [AnimationState<Float,
- * AnimationVector1D>.animateDecay].
+ * the animation such as start time, target, etc, consider using [AnimationState.animateDecay].
  *
- * @see [AnimationState<Float, AnimationVector1D>.animateDecay]
+ * @param animationSpec Defines the decay animation that will be used for this animation. Some
+ * options for this [animationSpec] include:
+ * [splineBasedDecay][androidx.compose.animation.splineBasedDecay] and [exponentialDecay].
+ *
+ * @param block Will be invoked on each animation frame with up-to-date value and velocity.
+ *
+ * @see AnimationState.animateDecay
  */
 suspend fun animateDecay(
     initialValue: Float,
@@ -90,7 +94,7 @@
  * related to the animation such as start time, target, etc, consider using
  * [AnimationState.animateTo].
  *
- * @see [AnimationState.animateTo]
+ * @see AnimationState.animateTo
  */
 suspend fun <T, V : AnimationVector> animate(
     typeConverter: TwoWayConverter<T, V>,
@@ -120,14 +124,18 @@
  * animation, the given [AnimationState] will be updated with the up-to-date value/velocity,
  * frame time, etc.
  *
- * [sequentialAnimation] indicates whether the animation should use the
+ * @param targetValue The target value that the animation will animate to.
+ *
+ * @param animationSpec The animation configuration that will be used. [spring] by default.
+ *
+ * @param sequentialAnimation Indicates whether the animation should use the
  * [AnimationState.lastFrameTimeNanos] as the starting time (if true), or start in a new frame. By
  * default, [sequentialAnimation] is false, to start the animation in a few frame. In cases where
  * an on-going animation is interrupted and a new animation is started to carry over the
- * momentum, using the interruption time (captured in [AnimationState.lastFrameTimeNanos] creates
+ * momentum, using the interruption time (captured in [AnimationState.lastFrameTimeNanos]) creates
  * a smoother animation.
  *
- * [block] will be invoked on every frame, and the [AnimationScope] will be checked against
+ * @param block Will be invoked on every frame, and the [AnimationScope] will be checked against
  * cancellation before the animation continues. To cancel the animation from the [block], simply
  * call [AnimationScope.cancelAnimation].  After [AnimationScope.cancelAnimation] is called, [block]
  * will not be invoked again. The animation loop will exit after the [block] returns. All the
@@ -138,7 +146,6 @@
 suspend fun <T, V : AnimationVector> AnimationState<T, V>.animateTo(
     targetValue: T,
     animationSpec: AnimationSpec<T> = spring(),
-    // Indicates whether the animation should start from last frame
     sequentialAnimation: Boolean = false,
     block: AnimationScope<T, V>.() -> Unit = {}
 ) {
@@ -162,26 +169,25 @@
  * with the up-to-date value/velocity, frame time, etc. This is often used to animate the result
  * of a fling gesture.
  *
- * [animationSpec] defines the decay animation that will be used for this animation. Some options
- * for [animationSpec] include: [splineBasedDecay][androidx.compose.animation.splineBasedDecay]
- * and [exponentialDecay].
+ * @param animationSpec Defines the decay animation that will be used for this animation. Some
+ * options for [animationSpec] include:
+ * [splineBasedDecay][androidx.compose.animation.splineBasedDecay] and [exponentialDecay].
  *
- * During the animation, [block] will be invoked on every frame, and the [AnimationScope] will be
- * checked against cancellation before the animation continues. To cancel the animation from the
- * [block], simply call [AnimationScope.cancelAnimation].  After [AnimationScope.cancelAnimation] is
- * called, [block] will not be invoked again. The animation loop will exit after the [block]
- * returns. All the animation related info can be accessed via [AnimationScope].
- *
- * [sequentialAnimation] indicates whether the animation should use the
+ * @param sequentialAnimation Indicates whether the animation should use the
  * [AnimationState.lastFrameTimeNanos] as the starting time (if true), or start in a new frame. By
  * default, [sequentialAnimation] is false, to start the animation in a few frame. In cases where
  * an on-going animation is interrupted and a new animation is started to carry over the
- * momentum, using the interruption time (captured in [AnimationState.lastFrameTimeNanos] creates
+ * momentum, using the interruption time (captured in [AnimationState.lastFrameTimeNanos]) creates
  * a smoother animation.
+ *
+ * @param block will be invoked on every frame during the animation, and the [AnimationScope] will
+ * be checked against cancellation before the animation continues. To cancel the animation from the
+ * [block], simply call [AnimationScope.cancelAnimation].  After [AnimationScope.cancelAnimation] is
+ * called, [block] will not be invoked again. The animation loop will exit after the [block]
+ * returns. All the animation related info can be accessed via [AnimationScope].
  */
 suspend fun <T, V : AnimationVector> AnimationState<T, V>.animateDecay(
     animationSpec: DecayAnimationSpec<T>,
-    // Indicates whether the animation should start from last frame
     sequentialAnimation: Boolean = false,
     block: AnimationScope<T, V>.() -> Unit = {}
 ) {
@@ -203,22 +209,22 @@
  * finish. During the animation, the [AnimationState] will be updated with the up-to-date
  * value/velocity, frame time, etc.
  *
- * If [startTimeNanos] is provided, it will be used as the time that the animation was started. By
- * default, [startTimeNanos] is [AnimationConstants.UnspecifiedTime], meaning the animation will start in the next frame.
- *
  * For [Animation]s that use [AnimationSpec], consider using these more convenient APIs:
- * [animate], [AnimationState.animateTo], [animateDecay],
- * [AnimationState<Float, AnimationVector1D>.animateDecay]
+ * [animate], [AnimationState.animateTo], [animateDecay], [AnimationState.animateDecay].
  *
- * [block] will be invoked on every frame, and the [AnimationScope] will be checked against
+ * @param startTimeNanos If provided, it will be used as the time that the animation was started. By
+ * default, [startTimeNanos] is [AnimationConstants.UnspecifiedTime], meaning the animation will
+ * start in the next frame.
+ *
+ * @param block Will be invoked on every frame, and the [AnimationScope] will be checked against
  * cancellation before the animation continues. To cancel the animation from the [block], simply
  * call [AnimationScope.cancelAnimation].  After [AnimationScope.cancelAnimation] is called, [block]
  * will not be invoked again. The animation loop will exit after the [block] returns. All the
  * animation related info can be accessed via [AnimationScope].
  */
 // TODO: This method uses AnimationState and Animation at the same time, it's potentially confusing
-// as to which is the source of truth for initial value/velocity. Consider letting [Animation] have
-// some suspend fun differently.
+//  as to which is the source of truth for initial value/velocity. Consider letting [Animation] have
+//  some suspend fun differently.
 internal suspend fun <T, V : AnimationVector> AnimationState<T, V>.animate(
     animation: Animation<T, V>,
     startTimeNanos: Long = AnimationConstants.UnspecifiedTime,
diff --git a/compose/animation/animation/api/current.ignore b/compose/animation/animation/api/current.ignore
new file mode 100644
index 0000000..4593b53
--- /dev/null
+++ b/compose/animation/animation/api/current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+ChangedType: androidx.compose.animation.SingleValueAnimationKt#animateColorAsState(long, androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.graphics.Color>, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.Color,? extends kotlin.Unit>):
+    Method androidx.compose.animation.SingleValueAnimationKt.animateColorAsState has changed return type from androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> to androidx.compose.runtime.State<? extends androidx.compose.ui.graphics.Color>
diff --git a/compose/animation/animation/api/current.txt b/compose/animation/animation/api/current.txt
index c535a73..aa39354 100644
--- a/compose/animation/animation/api/current.txt
+++ b/compose/animation/animation/api/current.txt
@@ -29,7 +29,8 @@
   }
 
   public final class CrossfadeKt {
-    method @androidx.compose.runtime.Composable public static <T> void Crossfade(T? targetState, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.core.FiniteAnimationSpec<java.lang.Float> animationSpec, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static <T> void Crossfade(T? targetState, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.core.FiniteAnimationSpec<java.lang.Float> animationSpec, optional String label, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static <T> void Crossfade(T? targetState, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.core.FiniteAnimationSpec<java.lang.Float> animationSpec, kotlin.jvm.functions.Function1<? super T,? extends kotlin.Unit> content);
   }
 
   public final class EnterExitTransitionKt {
@@ -74,7 +75,8 @@
 
   public final class SingleValueAnimationKt {
     method public static androidx.compose.animation.core.Animatable<androidx.compose.ui.graphics.Color,androidx.compose.animation.core.AnimationVector4D> Animatable(long initialValue);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> animateColorAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.graphics.Color> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.Color,kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> animateColorAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.graphics.Color> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.Color,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.graphics.Color>! animateColorAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.graphics.Color> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.Color,? extends kotlin.Unit>? finishedListener);
   }
 
   public final class SplineBasedDecayKt {
diff --git a/compose/animation/animation/api/public_plus_experimental_current.txt b/compose/animation/animation/api/public_plus_experimental_current.txt
index 42f2ddc..90ce764 100644
--- a/compose/animation/animation/api/public_plus_experimental_current.txt
+++ b/compose/animation/animation/api/public_plus_experimental_current.txt
@@ -80,8 +80,9 @@
   }
 
   public final class CrossfadeKt {
-    method @androidx.compose.runtime.Composable public static <T> void Crossfade(T? targetState, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.core.FiniteAnimationSpec<java.lang.Float> animationSpec, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static <T> void Crossfade(T? targetState, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.core.FiniteAnimationSpec<java.lang.Float> animationSpec, optional String label, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> content);
     method @androidx.compose.animation.ExperimentalAnimationApi @androidx.compose.runtime.Composable public static <T> void Crossfade(androidx.compose.animation.core.Transition<T>, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.core.FiniteAnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super T,?> contentKey, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static <T> void Crossfade(T? targetState, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.core.FiniteAnimationSpec<java.lang.Float> animationSpec, kotlin.jvm.functions.Function1<? super T,? extends kotlin.Unit> content);
   }
 
   @androidx.compose.animation.ExperimentalAnimationApi public enum EnterExitState {
@@ -139,7 +140,8 @@
 
   public final class SingleValueAnimationKt {
     method public static androidx.compose.animation.core.Animatable<androidx.compose.ui.graphics.Color,androidx.compose.animation.core.AnimationVector4D> Animatable(long initialValue);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> animateColorAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.graphics.Color> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.Color,kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> animateColorAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.graphics.Color> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.Color,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.graphics.Color>! animateColorAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.graphics.Color> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.Color,? extends kotlin.Unit>? finishedListener);
   }
 
   @androidx.compose.animation.ExperimentalAnimationApi public interface SizeTransform {
diff --git a/compose/animation/animation/api/restricted_current.ignore b/compose/animation/animation/api/restricted_current.ignore
new file mode 100644
index 0000000..4593b53
--- /dev/null
+++ b/compose/animation/animation/api/restricted_current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+ChangedType: androidx.compose.animation.SingleValueAnimationKt#animateColorAsState(long, androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.graphics.Color>, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.Color,? extends kotlin.Unit>):
+    Method androidx.compose.animation.SingleValueAnimationKt.animateColorAsState has changed return type from androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> to androidx.compose.runtime.State<? extends androidx.compose.ui.graphics.Color>
diff --git a/compose/animation/animation/api/restricted_current.txt b/compose/animation/animation/api/restricted_current.txt
index c535a73..aa39354 100644
--- a/compose/animation/animation/api/restricted_current.txt
+++ b/compose/animation/animation/api/restricted_current.txt
@@ -29,7 +29,8 @@
   }
 
   public final class CrossfadeKt {
-    method @androidx.compose.runtime.Composable public static <T> void Crossfade(T? targetState, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.core.FiniteAnimationSpec<java.lang.Float> animationSpec, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static <T> void Crossfade(T? targetState, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.core.FiniteAnimationSpec<java.lang.Float> animationSpec, optional String label, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static <T> void Crossfade(T? targetState, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.core.FiniteAnimationSpec<java.lang.Float> animationSpec, kotlin.jvm.functions.Function1<? super T,? extends kotlin.Unit> content);
   }
 
   public final class EnterExitTransitionKt {
@@ -74,7 +75,8 @@
 
   public final class SingleValueAnimationKt {
     method public static androidx.compose.animation.core.Animatable<androidx.compose.ui.graphics.Color,androidx.compose.animation.core.AnimationVector4D> Animatable(long initialValue);
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> animateColorAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.graphics.Color> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.Color,kotlin.Unit>? finishedListener);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> animateColorAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.graphics.Color> animationSpec, optional String label, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.Color,kotlin.Unit>? finishedListener);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<? extends androidx.compose.ui.graphics.Color>! animateColorAsState(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.graphics.Color> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.Color,? extends kotlin.Unit>? finishedListener);
   }
 
   public final class SplineBasedDecayKt {
diff --git a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/fancy/FlingGameDemo.kt b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/fancy/FlingGameDemo.kt
index 96a902d..2728451 100644
--- a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/fancy/FlingGameDemo.kt
+++ b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/fancy/FlingGameDemo.kt
@@ -49,16 +49,15 @@
             Modifier.fillMaxSize().pointerInput(Unit) {
                 coroutineScope {
                     while (true) {
-                        val pointerId = awaitPointerEventScope {
-                            awaitFirstDown().run {
+                        val velocityTracker = VelocityTracker()
+                        awaitPointerEventScope {
+                           val pointerId = awaitFirstDown().run {
                                 launch {
                                     anim.snapTo(position)
                                 }
                                 id
                             }
-                        }
-                        val velocityTracker = VelocityTracker()
-                        awaitPointerEventScope {
+
                             drag(pointerId) {
                                 launch {
                                     anim.snapTo(anim.value + it.positionChange())
@@ -69,6 +68,7 @@
                                 )
                             }
                         }
+
                         val (x, y) = velocityTracker.calculateVelocity()
                         anim.updateBounds(
                             Offset(100f, 100f),
diff --git a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/SpringBackScrollingDemo.kt b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/SpringBackScrollingDemo.kt
index 6e5ad22..b954194 100644
--- a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/SpringBackScrollingDemo.kt
+++ b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/SpringBackScrollingDemo.kt
@@ -72,12 +72,11 @@
         val gesture = Modifier.pointerInput(Unit) {
             coroutineScope {
                 while (true) {
-                    val pointerId = awaitPointerEventScope {
-                        awaitFirstDown().id
-                    }
                     val velocityTracker = VelocityTracker()
+                    var latestVelocityX = 0f
                     mutatorMutex.mutate(MutatePriority.UserInput) {
                         awaitPointerEventScope {
+                            val pointerId = awaitFirstDown().id
                             horizontalDrag(pointerId) {
                                 scrollPosition += it.positionChange().x
                                 velocityTracker.addPosition(
@@ -86,17 +85,17 @@
                                 )
                             }
                         }
+                        latestVelocityX = velocityTracker.calculateVelocity().x
                     }
-                    val velocity = velocityTracker.calculateVelocity().x
                     // Now finger lifted, get fling going
                     launch {
                         mutatorMutex.mutate {
-                            animation = AnimationState(scrollPosition, velocity)
+                            animation = AnimationState(scrollPosition, latestVelocityX)
                             val target = exponentialDecay<Float>()
-                                .calculateTargetValue(scrollPosition, velocity)
+                                .calculateTargetValue(scrollPosition, latestVelocityX)
                             val springBackTarget: Float = calculateSpringBackTarget(
                                 target,
-                                velocity,
+                                latestVelocityX,
                                 itemWidth.value
                             )
 
diff --git a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/SwipeToDismissDemo.kt b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/SwipeToDismissDemo.kt
index 7166ad0..befd745 100644
--- a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/SwipeToDismissDemo.kt
+++ b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/SwipeToDismissDemo.kt
@@ -89,12 +89,10 @@
     this.pointerInput(Unit) {
         coroutineScope {
             while (true) {
-                val pointerId = awaitPointerEventScope {
-                    awaitFirstDown().id
-                }
                 height.value = size.height
                 val velocityTracker = VelocityTracker()
                 awaitPointerEventScope {
+                    val pointerId = awaitFirstDown().id
                     verticalDrag(pointerId) {
                         launch {
                             animatedOffset.snapTo(
diff --git a/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/Crossfade.kt b/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/Crossfade.kt
index e042488..d4bcd40 100644
--- a/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/Crossfade.kt
+++ b/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/Crossfade.kt
@@ -42,6 +42,7 @@
  * the [content] called with the new key will be faded in.
  * @param modifier Modifier to be applied to the animation container.
  * @param animationSpec the [AnimationSpec] to configure the animation.
+ * @param label An optional label to differentiate from other animations in Android Studio.
  */
 @OptIn(ExperimentalAnimationApi::class)
 @Composable
@@ -49,6 +50,23 @@
     targetState: T,
     modifier: Modifier = Modifier,
     animationSpec: FiniteAnimationSpec<Float> = tween(),
+    label: String = "Crossfade",
+    content: @Composable (T) -> Unit
+) {
+    val transition = updateTransition(targetState, label)
+    transition.Crossfade(modifier, animationSpec, content = content)
+}
+
+@Deprecated(
+    "Crossfade API now has a new label parameter added.",
+    level = DeprecationLevel.HIDDEN
+)
+@OptIn(ExperimentalAnimationApi::class)
+@Composable
+fun <T> Crossfade(
+    targetState: T,
+    modifier: Modifier = Modifier,
+    animationSpec: FiniteAnimationSpec<Float> = tween(),
     content: @Composable (T) -> Unit
 ) {
     val transition = updateTransition(targetState)
diff --git a/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/SingleValueAnimation.kt b/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/SingleValueAnimation.kt
index 9730f0f..27d75d0 100644
--- a/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/SingleValueAnimation.kt
+++ b/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/SingleValueAnimation.kt
@@ -50,19 +50,36 @@
  * @param targetValue Target value of the animation
  * @param animationSpec The animation that will be used to change the value through time,
  *                      [spring] by default
+ * @param label An optional label to differentiate from other animations in Android Studio.
  * @param finishedListener An optional listener to get notified when the animation is finished.
  */
 @Composable
 fun animateColorAsState(
     targetValue: Color,
     animationSpec: AnimationSpec<Color> = colorDefaultSpring,
+    label: String = "ColorAnimation",
     finishedListener: ((Color) -> Unit)? = null
 ): State<Color> {
     val converter = remember(targetValue.colorSpace) {
         (Color.VectorConverter)(targetValue.colorSpace)
     }
     return animateValueAsState(
-        targetValue, converter, animationSpec, finishedListener = finishedListener
+        targetValue, converter, animationSpec, label = label, finishedListener = finishedListener
+    )
+}
+
+@Deprecated(
+    "animate*AsState APIs now have a new label parameter added.",
+    level = DeprecationLevel.HIDDEN
+)
+@Composable
+fun animateColorAsState(
+    targetValue: Color,
+    animationSpec: AnimationSpec<Color> = colorDefaultSpring,
+    finishedListener: ((Color) -> Unit)? = null
+): State<Color> {
+    return animateColorAsState(
+        targetValue, animationSpec, finishedListener = finishedListener
     )
 }
 
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ComposerParamTransformTests.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ComposerParamTransformTests.kt
index 5fbdfd9..897c193 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ComposerParamTransformTests.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ComposerParamTransformTests.kt
@@ -380,13 +380,7 @@
             fun Example(content: Function2<Composer, Int, Unit>, %composer: Composer?, %changed: Int) {
               %composer.startReplaceableGroup(<>)
               sourceInformation(%composer, "C(Example)<conten...>:Test.kt#2487m")
-              if (isTraceInProgress()) {
-                traceEventStart(<>, %changed, -1, <>)
-              }
               content(%composer, 0b1110 and %changed)
-              if (isTraceInProgress()) {
-                traceEventEnd()
-              }
               %composer.endReplaceableGroup()
             }
             @NonRestartableComposable
@@ -401,13 +395,7 @@
                 %composer.startReplaceableGroup(<>)
                 sourceInformation(%composer, "C:Test.kt#2487m")
                 if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
-                  if (isTraceInProgress()) {
-                    traceEventStart(<>, %changed, -1, <>)
-                  }
                   Unit
-                  if (isTraceInProgress()) {
-                    traceEventEnd()
-                  }
                 } else {
                   %composer.skipToGroupEnd()
                 }
@@ -670,28 +658,16 @@
                       %composer.startReplaceableGroup(<>)
                       sourceInformation(%composer, "C<emit>:Test.kt#2487m")
                       if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
-                        if (isTraceInProgress()) {
-                          traceEventStart(<>, %changed, -1, <>)
-                        }
                         emit({ %composer: Composer?, %changed: Int ->
                           %composer.startReplaceableGroup(<>)
                           sourceInformation(%composer, "C<compos...>:Test.kt#2487m")
                           if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
-                            if (isTraceInProgress()) {
-                              traceEventStart(<>, %changed, -1, <>)
-                            }
                             composable(%composer, 0b1110 and %dirty)
-                            if (isTraceInProgress()) {
-                              traceEventEnd()
-                            }
                           } else {
                             %composer.skipToGroupEnd()
                           }
                           %composer.endReplaceableGroup()
                         }, %composer, 0)
-                        if (isTraceInProgress()) {
-                          traceEventEnd()
-                        }
                       } else {
                         %composer.skipToGroupEnd()
                       }
@@ -712,13 +688,7 @@
                 fun emit(composable: Function2<Composer, Int, Unit>, %composer: Composer?, %changed: Int) {
                   %composer.startReplaceableGroup(<>)
                   sourceInformation(%composer, "C(emit)<compos...>:Test.kt#2487m")
-                  if (isTraceInProgress()) {
-                    traceEventStart(<>, %changed, -1, <>)
-                  }
                   composable(%composer, 0b1110 and %changed)
-                  if (isTraceInProgress()) {
-                    traceEventEnd()
-                  }
                   %composer.endReplaceableGroup()
                 }
             """.trimIndent()
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ControlFlowTransformTests.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ControlFlowTransformTests.kt
index 0659dd6..8506e01 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ControlFlowTransformTests.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ControlFlowTransformTests.kt
@@ -250,18 +250,9 @@
                 %composer.startReplaceableGroup(<>)
                 sourceInformation(%composer, "C<A()>:Test.kt")
                 if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
-                  if (isTraceInProgress()) {
-                    traceEventStart(<>, %changed, -1, <>)
-                  }
                   if (condition) {
-                    if (isTraceInProgress()) {
-                      traceEventEnd()
-                    }
                   }
                   A(%composer, 0)
-                  if (isTraceInProgress()) {
-                    traceEventEnd()
-                  }
                 } else {
                   %composer.skipToGroupEnd()
                 }
@@ -277,13 +268,7 @@
             fun FakeBox(content: Function2<Composer, Int, Unit>, %composer: Composer?, %changed: Int) {
               %composer.startReplaceableGroup(<>)
               sourceInformation(%composer, "C(FakeBox)<conten...>:Test.kt")
-              if (isTraceInProgress()) {
-                traceEventStart(<>, %changed, -1, <>)
-              }
               content(%composer, 0b1110 and %changed)
-              if (isTraceInProgress()) {
-                traceEventEnd()
-              }
               %composer.endReplaceableGroup()
             }
         """
@@ -2988,13 +2973,7 @@
                   %composer.startReplaceableGroup(<>)
                   sourceInformation(%composer, "C<A()>:Test.kt")
                   if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
-                    if (isTraceInProgress()) {
-                      traceEventStart(<>, %changed, -1, <>)
-                    }
                     A(%composer, 0)
-                    if (isTraceInProgress()) {
-                      traceEventEnd()
-                    }
                   } else {
                     %composer.skipToGroupEnd()
                   }
@@ -4340,9 +4319,6 @@
                     %composer.startReplaceableGroup(<>)
                     sourceInformation(%composer, "C<T(2)>,<T(4)>:Test.kt")
                     if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
-                      if (isTraceInProgress()) {
-                        traceEventStart(<>, %changed, -1, "ComposableSingletons%TestKt.lambda-1.<anonymous>.<anonymous> (Test.kt:6)")
-                      }
                       T(2, %composer, 0b0110)
                       %composer.startReplaceableGroup(<>)
                       sourceInformation(%composer, "*<T(3)>")
@@ -4351,9 +4327,6 @@
                       }
                       %composer.endReplaceableGroup()
                       T(4, %composer, 0b0110)
-                      if (isTraceInProgress()) {
-                        traceEventEnd()
-                      }
                     } else {
                       %composer.skipToGroupEnd()
                     }
@@ -4440,13 +4413,7 @@
                   %composer.startReplaceableGroup(<>)
                   sourceInformation(%composer, "C<Text("...>:Test.kt")
                   if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
-                    if (isTraceInProgress()) {
-                      traceEventStart(<>, %changed, -1, "Test.<anonymous> (Test.kt:19)")
-                    }
                     Text("%c %cl", %composer, 0)
-                    if (isTraceInProgress()) {
-                      traceEventEnd()
-                    }
                   } else {
                     %composer.skipToGroupEnd()
                   }
@@ -4520,13 +4487,7 @@
                 @ReadOnlyComposable @Composable @JvmName(name = "getCurrent")
                 get() {
                   sourceInformationMarkerStart(%composer, <>, "C:Test.kt")
-                  if (isTraceInProgress()) {
-                    traceEventStart(<>, %changed, -1, "CurrentHolder.<get-current> (Test.kt:8)")
-                  }
                   val tmp0 = 0
-                  if (isTraceInProgress()) {
-                    traceEventEnd()
-                  }
                   sourceInformationMarkerEnd(%composer)
                   return tmp0
                 }
@@ -4580,13 +4541,7 @@
                   %composer.startReplaceableGroup(<>)
                   sourceInformation(%composer, "C<Text("...>:Test.kt")
                   if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
-                    if (isTraceInProgress()) {
-                      traceEventStart(<>, %changed, -1, "Test.<anonymous> (Test.kt:31)")
-                    }
                     Text("%c %cl", %composer, 0)
-                    if (isTraceInProgress()) {
-                      traceEventEnd()
-                    }
                   } else {
                     %composer.skipToGroupEnd()
                   }
@@ -4680,9 +4635,6 @@
                   %composer.startReplaceableGroup(<>)
                   sourceInformation(%composer, "C*<Leaf(0...>:Test.kt")
                   if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
-                    if (isTraceInProgress()) {
-                      traceEventStart(<>, %changed, -1, <>)
-                    }
                     repeat(1) { it: Int ->
                       %composer.startReplaceableGroup(<>)
                       sourceInformation(%composer, "*<Leaf(0...>")
@@ -4692,9 +4644,6 @@
                       %composer.endReplaceableGroup()
                       Leaf(0, %composer, 0b0110, 0)
                     }
-                    if (isTraceInProgress()) {
-                      traceEventEnd()
-                    }
                   } else {
                     %composer.skipToGroupEnd()
                   }
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ControlFlowTransformTestsNoSource.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ControlFlowTransformTestsNoSource.kt
index 6d2b849..73d7003ba 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ControlFlowTransformTestsNoSource.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ControlFlowTransformTestsNoSource.kt
@@ -156,13 +156,7 @@
                 }
                 IW({ %composer: Composer?, %changed: Int ->
                   if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
-                    if (isTraceInProgress()) {
-                      traceEventStart(<>, %changed, -1, <>)
-                    }
                     A(%composer, 0)
-                    if (isTraceInProgress()) {
-                      traceEventEnd()
-                    }
                   } else {
                     %composer.skipToGroupEnd()
                   }
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/DefaultParamTransformTests.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/DefaultParamTransformTests.kt
index 4d2280d..fc98ac8 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/DefaultParamTransformTests.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/DefaultParamTransformTests.kt
@@ -200,13 +200,7 @@
               %composer.startReplaceableGroup(<>)
               sourceInformation(%composer, "C:Test.kt")
               if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
-                if (isTraceInProgress()) {
-                  traceEventStart(<>, %changed, -1, <>)
-                }
                 Unit
-                if (isTraceInProgress()) {
-                  traceEventEnd()
-                }
               } else {
                 %composer.skipToGroupEnd()
               }
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/FunctionBodySkippingTransformTests.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/FunctionBodySkippingTransformTests.kt
index e46e9b4..c53597f 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/FunctionBodySkippingTransformTests.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/FunctionBodySkippingTransformTests.kt
@@ -2592,24 +2592,12 @@
               if (%default and 0b0001 !== 0) {
                 label = ""
               }
-              if (isTraceInProgress()) {
-                traceEventStart(<>, %changed, -1, <>)
-              }
               c(<this>, label, %composer, 0b1110 and %changed or 0b01110000 and %changed)
-              if (isTraceInProgress()) {
-                traceEventEnd()
-              }
             }
             @Composable
             @ExplicitGroupsComposable
             fun c(foo: Foo, label: String, %composer: Composer?, %changed: Int) {
-              if (isTraceInProgress()) {
-                traceEventStart(<>, %changed, -1, <>)
-              }
               print(label)
-              if (isTraceInProgress()) {
-                traceEventEnd()
-              }
             }
         """
     )
@@ -3345,13 +3333,7 @@
                 @Composable @ReadOnlyComposable @JvmName(name = "getCurrent")
                 get() {
                   sourceInformationMarkerStart(%composer, <>, "C:Test.kt")
-                  if (isTraceInProgress()) {
-                    traceEventStart(<>, %changed, -1, <>)
-                  }
                   val tmp0 = %composer.hashCode()
-                  if (isTraceInProgress()) {
-                    traceEventEnd()
-                  }
                   sourceInformationMarkerEnd(%composer)
                   return tmp0
                 }
@@ -3932,13 +3914,7 @@
               val current: Int
                 @Composable @ReadOnlyComposable @JvmName(name = "getCurrent")
                 get() {
-                  if (isTraceInProgress()) {
-                    traceEventStart(<>, %changed, -1, <>)
-                  }
                   val tmp0 = %composer.hashCode()
-                  if (isTraceInProgress()) {
-                    traceEventEnd()
-                  }
                   return tmp0
                 }
               @ReadOnlyComposable
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/TargetAnnotationsTransformTests.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/TargetAnnotationsTransformTests.kt
index 1281225..0153148 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/TargetAnnotationsTransformTests.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/TargetAnnotationsTransformTests.kt
@@ -235,13 +235,7 @@
               %composer.startReplaceableGroup(<>)
               sourceInformation(%composer, "C<Text("...>:Test.kt")
               if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
-                if (isTraceInProgress()) {
-                  traceEventStart(<>, %changed, -1, <>)
-                }
                 Text("test", %composer, 0b0110)
-                if (isTraceInProgress()) {
-                  traceEventEnd()
-                }
               } else {
                 %composer.skipToGroupEnd()
               }
@@ -918,29 +912,17 @@
           if (%default and 0b0001 !== 0) {
             modifier = Companion
           }
-          if (isTraceInProgress()) {
-            traceEventStart(<>, %changed, -1, <>)
-          }
           val tmp0_measurePolicy = localBoxMeasurePolicy
           Layout({ %composer: Composer?, %changed: Int ->
             %composer.startReplaceableGroup(<>)
             sourceInformation(%composer, "C<conten...>:Test.kt")
             if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
-              if (isTraceInProgress()) {
-                traceEventStart(<>, %changed, -1, <>)
-              }
               content(LocalBoxScopeInstance, %composer, 0b0110 or 0b01110000 and %changed)
-              if (isTraceInProgress()) {
-                traceEventEnd()
-              }
             } else {
               %composer.skipToGroupEnd()
             }
             %composer.endReplaceableGroup()
           }, modifier, tmp0_measurePolicy, %composer, 0b000110000000 or 0b01110000 and %changed shl 0b0011, 0)
-          if (isTraceInProgress()) {
-            traceEventEnd()
-          }
           %composer.endReplaceableGroup()
         }
         """
@@ -1010,13 +992,7 @@
               %composer.startReplaceableGroup(<>)
               sourceInformation(%composer, "C:Test.kt")
               if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
-                if (isTraceInProgress()) {
-                  traceEventStart(<>, %changed, -1, <>)
-                }
                 Unit
-                if (isTraceInProgress()) {
-                  traceEventEnd()
-                }
               } else {
                 %composer.skipToGroupEnd()
               }
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/TraceInformationTest.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/TraceInformationTest.kt
index f261e6e4..a186777 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/TraceInformationTest.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/TraceInformationTest.kt
@@ -85,4 +85,85 @@
         """,
         truncateTracingInfoMode = TruncateTracingInfoMode.TRUNCATE_KEY
     )
+
+    @Test
+    fun testInlineFunctionsDonotGenerateTraceMarkers() = verifyComposeIrTransform(
+        """
+            import androidx.compose.runtime.*
+
+            @Composable
+            inline fun Wrapper(content: @Composable () -> Unit) = content()
+
+            @Composable
+            fun Test(condition: Boolean) {
+                A()
+                Wrapper {
+                    A()
+                    if (!condition) return
+                    A()
+                }
+                A()
+            }
+        """,
+        """
+            @Composable
+            @ComposableInferredTarget(scheme = "[0[0]]")
+            fun Wrapper(content: Function2<Composer, Int, Unit>, %composer: Composer?, %changed: Int) {
+              %composer.startReplaceableGroup(<>)
+              sourceInformation(%composer, "C(Wrapper)<conten...>:Test.kt")
+              content(%composer, 0b1110 and %changed)
+              %composer.endReplaceableGroup()
+            }
+            @Composable
+            fun Test(condition: Boolean, %composer: Composer?, %changed: Int) {
+              %composer = %composer.startRestartGroup(<>)
+              sourceInformation(%composer, "C(Test)<A()>,<Wrappe...>,<A()>:Test.kt")
+              val %dirty = %changed
+              if (%changed and 0b1110 === 0) {
+                %dirty = %dirty or if (%composer.changed(condition)) 0b0100 else 0b0010
+              }
+              if (%dirty and 0b1011 !== 0b0010 || !%composer.skipping) {
+                if (isTraceInProgress()) {
+                  traceEventStart(<>, %changed, -1, <>)
+                }
+                A(%composer, 0)
+                Wrapper({ %composer: Composer?, %changed: Int ->
+                  %composer.startReplaceableGroup(<>)
+                  sourceInformation(%composer, "C<A()>,<A()>:Test.kt")
+                  if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
+                    A(%composer, 0)
+                    if (!condition) {
+                      if (isTraceInProgress()) {
+                        traceEventEnd()
+                      }
+                      %composer.endRestartGroup()?.updateScope { %composer: Composer?, %force: Int ->
+                        Test(condition, %composer, %changed or 0b0001)
+                      }
+                      return
+                    }
+                    A(%composer, 0)
+                  } else {
+                    %composer.skipToGroupEnd()
+                  }
+                  %composer.endReplaceableGroup()
+                }, %composer, 0)
+                A(%composer, 0)
+                if (isTraceInProgress()) {
+                  traceEventEnd()
+                }
+              } else {
+                %composer.skipToGroupEnd()
+              }
+              %composer.endRestartGroup()?.updateScope { %composer: Composer?, %force: Int ->
+                Test(condition, %composer, %changed or 0b0001)
+              }
+            }
+        """,
+        """
+            import androidx.compose.runtime.*
+
+            @Composable
+            fun A() { }
+        """
+    )
 }
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableFunctionBodyTransformer.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableFunctionBodyTransformer.kt
index c8987c1..85953db 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableFunctionBodyTransformer.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableFunctionBodyTransformer.kt
@@ -641,6 +641,8 @@
         }
     }
 
+    private val traceEventMarkersEnabled get() = traceEventEndFunction != null
+
     private val sourceInformationMarkerEndFunction by guardedLazy {
         getTopLevelFunctions(
             ComposeFqNames.fqNameFor(KtxNameConventions.SOURCEINFORMATIONMARKEREND)
@@ -866,9 +868,13 @@
 
         var (transformed, returnVar) = body.asBodyAndResultVar()
 
+        val emitTraceMarkers = traceEventMarkersEnabled && !scope.function.isInline
+
         transformed = transformed.apply {
             transformChildrenVoid()
-            wrapWithTraceEvents(irFunctionSourceKey(), scope)
+            if (emitTraceMarkers) {
+                wrapWithTraceEvents(irFunctionSourceKey(), scope)
+            }
         }
 
         buildPreambleStatementsAndReturnIfSkippingPossible(
@@ -886,7 +892,7 @@
         if (!elideGroups) {
             scope.realizeGroup {
                 irComposite(statements = listOfNotNull(
-                    irTraceEventEnd(),
+                    if (emitTraceMarkers) irTraceEventEnd() else null,
                     irEndReplaceableGroup()
                 ))
             }
@@ -996,11 +1002,15 @@
 
         val (nonReturningBody, returnVar) = body.asBodyAndResultVar()
 
+        val emitTraceMarkers = traceEventMarkersEnabled && !scope.isInlinedLambda
+
         // we must transform the body first, since that will allow us to see whether or not we
         // are using the dispatchReceiverParameter or the extensionReceiverParameter
         val transformed = nonReturningBody.apply {
             transformChildrenVoid()
-            wrapWithTraceEvents(irFunctionSourceKey(), scope)
+            if (emitTraceMarkers) {
+                wrapWithTraceEvents(irFunctionSourceKey(), scope)
+            }
         }
 
         canSkipExecution = buildPreambleStatementsAndReturnIfSkippingPossible(
@@ -1020,7 +1030,7 @@
             dirty
         } else changedParam
 
-        if (traceEventEndFunction != null) {
+        if (emitTraceMarkers) {
             scope.realizeEndCalls {
                 irTraceEventEnd()!!
             }
diff --git a/compose/foundation/foundation-lint/src/main/java/androidx/compose/foundation/lint/FoundationIssueRegistry.kt b/compose/foundation/foundation-lint/src/main/java/androidx/compose/foundation/lint/FoundationIssueRegistry.kt
index 0d71162..ef9e339 100644
--- a/compose/foundation/foundation-lint/src/main/java/androidx/compose/foundation/lint/FoundationIssueRegistry.kt
+++ b/compose/foundation/foundation-lint/src/main/java/androidx/compose/foundation/lint/FoundationIssueRegistry.kt
@@ -30,7 +30,8 @@
     override val api = 13
     override val minApi = CURRENT_API
     override val issues get() = listOf(
-        LazyLayoutStateReadInCompositionDetector.FrequentlyChangedStateReadInComposition
+        LazyLayoutStateReadInCompositionDetector.FrequentlyChangedStateReadInComposition,
+        NonLambdaOffsetModifierDetector.UseOfNonLambdaOverload
     )
     override val vendor = Vendor(
         vendorName = "Jetpack Compose",
diff --git a/compose/foundation/foundation-lint/src/main/java/androidx/compose/foundation/lint/FoundationNames.kt b/compose/foundation/foundation-lint/src/main/java/androidx/compose/foundation/lint/FoundationNames.kt
index aabe6c4..29a5568 100644
--- a/compose/foundation/foundation-lint/src/main/java/androidx/compose/foundation/lint/FoundationNames.kt
+++ b/compose/foundation/foundation-lint/src/main/java/androidx/compose/foundation/lint/FoundationNames.kt
@@ -31,4 +31,10 @@
             val LazyGridState = Name(PackageName, "LazyGridState")
         }
     }
+
+    object Layout {
+        val PackageName = Package(FoundationNames.PackageName, "layout")
+        val Offset = Name(PackageName, "offset")
+        val AbsoluteOffset = Name(PackageName, "absoluteOffset")
+    }
 }
\ No newline at end of file
diff --git a/compose/foundation/foundation-lint/src/main/java/androidx/compose/foundation/lint/NonLambdaOffsetModifierDetector.kt b/compose/foundation/foundation-lint/src/main/java/androidx/compose/foundation/lint/NonLambdaOffsetModifierDetector.kt
new file mode 100644
index 0000000..673f5be
--- /dev/null
+++ b/compose/foundation/foundation-lint/src/main/java/androidx/compose/foundation/lint/NonLambdaOffsetModifierDetector.kt
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@file:Suppress("UnstableApiUsage")
+
+package androidx.compose.foundation.lint
+
+import androidx.compose.lint.Names
+import androidx.compose.lint.inheritsFrom
+import androidx.compose.lint.isInPackageName
+import com.android.tools.lint.detector.api.Category
+import com.android.tools.lint.detector.api.Detector
+import com.android.tools.lint.detector.api.Implementation
+import com.android.tools.lint.detector.api.Issue
+import com.android.tools.lint.detector.api.JavaContext
+import com.android.tools.lint.detector.api.Scope
+import com.android.tools.lint.detector.api.Severity
+import com.android.tools.lint.detector.api.SourceCodeScanner
+import com.android.tools.lint.detector.api.UastLintUtils.Companion.tryResolveUDeclaration
+import com.intellij.psi.PsiMethod
+import com.intellij.psi.util.ClassUtil
+import java.util.EnumSet
+import org.jetbrains.kotlin.psi.KtProperty
+import org.jetbrains.uast.UCallExpression
+import org.jetbrains.uast.UDeclaration
+import org.jetbrains.uast.UExpression
+import org.jetbrains.uast.ULocalVariable
+import org.jetbrains.uast.UMethod
+import org.jetbrains.uast.USimpleNameReferenceExpression
+import org.jetbrains.uast.UVariable
+import org.jetbrains.uast.skipParenthesizedExprDown
+import org.jetbrains.uast.toUElement
+import org.jetbrains.uast.visitor.AbstractUastVisitor
+
+/**
+ * [Detector] that checks calls to Modifier.offset that use a non-lambda overload but read from
+ * dynamic/state variables. It is recommended to use the lambda overload in those cases for
+ * performance improvements
+ */
+class NonLambdaOffsetModifierDetector : Detector(), SourceCodeScanner {
+
+    override fun getApplicableMethodNames(): List<String> = listOf(
+        FoundationNames.Layout.Offset.shortName,
+        FoundationNames.Layout.AbsoluteOffset.shortName
+    )
+
+    override fun visitMethodCall(context: JavaContext, node: UCallExpression, method: PsiMethod) {
+        // Non Modifier Offset
+        if (!method.isInPackageName(FoundationNames.Layout.PackageName)) return
+
+        if (method.isDesiredOffsetOverload() && hasStateBackedArguments(node)) {
+            context.report(
+                UseOfNonLambdaOverload,
+                node,
+                context.getNameLocation(node),
+                ReportMainMessage
+            )
+        }
+    }
+
+    /**
+     * Has two parameters of type DP
+     */
+    private fun PsiMethod.isDesiredOffsetOverload(): Boolean {
+        // use signature
+        return ClassUtil.getAsmMethodSignature(this) == OffsetSignature
+    }
+
+    private fun hasStateBackedArguments(node: UCallExpression): Boolean {
+        var dynamicArguments = false
+
+        node.valueArguments
+            .forEach { expression ->
+                expression.accept(object : AbstractUastVisitor() {
+                    override fun visitSimpleNameReferenceExpression(
+                        node: USimpleNameReferenceExpression
+                    ): Boolean {
+                        val declaration = node.tryResolveUDeclaration() ?: return false
+                        dynamicArguments = dynamicArguments || declaration.isCompositionAwareType()
+                        return dynamicArguments
+                    }
+                })
+            }
+
+        return dynamicArguments
+    }
+
+    companion object {
+        const val ReportMainMessage =
+            "State backed values should use the lambda overload of Modifier.offset"
+
+        const val IssueId = "UseOfNonLambdaOffsetOverload"
+
+        val UseOfNonLambdaOverload = Issue.create(
+            IssueId,
+            "Modifier.offset{ } is preferred over Modifier.offset() for " +
+                "`State` backed arguments.",
+            "`Modifier.offset()` is recommended to be used with static arguments only to " +
+                "avoid unnecessary recompositions. `Modifier.offset{ }` is " +
+                "preferred in the cases where the arguments are backed by a `State`.",
+            Category.PERFORMANCE, 3, Severity.WARNING,
+            Implementation(
+                NonLambdaOffsetModifierDetector::class.java,
+                EnumSet.of(Scope.JAVA_FILE, Scope.TEST_SOURCES)
+            )
+        )
+    }
+}
+
+private fun UDeclaration.isCompositionAwareType(): Boolean {
+    return isDelegateOfState() || isMethodFromStateOrAnimatable() || isStateOrAnimatableVariable()
+}
+
+private fun UDeclaration.isStateOrAnimatableVariable(): Boolean {
+    return (this is UVariable) &&
+        (type.inheritsFrom(Names.Runtime.State) ||
+            type.inheritsFrom(Names.Animation.Core.Animatable))
+}
+
+/**
+ * Special handling of implicit receiver types
+ */
+private fun UDeclaration.isMethodFromStateOrAnimatable(): Boolean {
+    val argument = this as? UMethod
+    val containingClass = argument?.containingClass ?: return false
+
+    return containingClass.inheritsFrom(Names.Runtime.State) ||
+        containingClass.inheritsFrom(Names.Animation.Core.Animatable)
+}
+
+private fun UDeclaration.isDelegateOfState(): Boolean {
+    val localVariable = this as? ULocalVariable
+    val ktProperty = localVariable?.sourcePsi as? KtProperty ?: return false
+    val delegateExpression =
+        ktProperty.delegate?.expression.toUElement() as? UExpression ?: return false
+    val cleanCallExpression =
+        (delegateExpression.skipParenthesizedExprDown() as? UCallExpression) ?: return false
+
+    return cleanCallExpression.returnType?.inheritsFrom(Names.Runtime.State) ?: false
+}
+
+private const val OffsetSignature =
+    "(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/unit/Dp;Landroidx/compose/ui/unit/Dp;)" +
+        "Landroidx/compose/ui/Modifier;"
\ No newline at end of file
diff --git a/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/NonLambdaOffsetModifierDetectorTest.kt b/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/NonLambdaOffsetModifierDetectorTest.kt
new file mode 100644
index 0000000..6f0752c
--- /dev/null
+++ b/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/NonLambdaOffsetModifierDetectorTest.kt
@@ -0,0 +1,1415 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.foundation.lint
+
+import androidx.compose.lint.test.Stubs
+import androidx.compose.lint.test.compiledStub
+import androidx.compose.lint.test.kotlinAndCompiledStub
+import com.android.tools.lint.checks.infrastructure.LintDetectorTest
+import com.android.tools.lint.checks.infrastructure.TestFile
+import com.android.tools.lint.detector.api.Detector
+import com.android.tools.lint.detector.api.Issue
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+@RunWith(JUnit4::class)
+class NonLambdaOffsetModifierDetectorTest : LintDetectorTest() {
+
+    private val WarningMessage =
+        "Warning: ${NonLambdaOffsetModifierDetector.ReportMainMessage} " +
+            "[${NonLambdaOffsetModifierDetector.IssueId}]"
+
+    private val OffsetStub: TestFile = compiledStub(
+        filename = "Offset.kt",
+        filepath = "androidx/compose/foundation/layout",
+        checksum = 0xd449361a,
+        source = """
+        package androidx.compose.foundation.layout
+
+        import androidx.compose.ui.Modifier
+        import androidx.compose.ui.unit.Dp
+        import androidx.compose.ui.unit.dp
+        import androidx.compose.ui.unit.IntOffset
+        import androidx.compose.ui.unit.Density
+
+        fun Modifier.offset(x: Dp = 0.dp, y: Dp = 0.dp): Modifier = this.then(Modifier)
+        fun Modifier.absoluteOffset(x: Dp = 0.dp, y: Dp = 0.dp): Modifier = this.then(Modifier)
+        fun Modifier.offset(offset: Density.() -> IntOffset): Modifier = this.then(Modifier)
+        fun Modifier.absoluteOffset(offset: Density.() -> IntOffset): Modifier = this.then(Modifier)
+
+        """,
+        """
+                META-INF/main.kotlin_module:
+                H4sIAAAAAAAAAGNgYGBmYGBgBGJ2KM3ApcellJiXUpSfmVKhl5yfW5BfnKqX
+                ll+al5JYkpmfp5eTWJlfWiLE4Z+WVpxa4l3CpcAlgaG+NFOvNC+zRIjFpcC7
+                RIlBiwEAXUlt+WoAAAA=
+                """,
+        """
+                androidx/compose/foundation/layout/OffsetKt.class:
+                H4sIAAAAAAAAALVW3U8jVRT/3en3tOyW8rXAwtZtdaGwTAcXVimiyIdWWkC7
+                ITFEk2k7LQPtTNOZIfBi9skX/wDjqy++GhPjuiaG+Ogftdlzpx+UD9sVtMnc
+                e+6555z7O79z53T+fvXyTwBP8DnDjKIX64ZWPJEKRrVmmKpUMmy9qFiaoUsV
+                5dSwLWmnVDJVa8vygTGED5VjhXb0srSTP1QLpHUxeA3HhuFkKnMloq1JWaOo
+                lTS1nrp219Y1S1qvdd+c7h6YIZYx6mXpULXydUXTTUnRdcNyEjGlbcPatisV
+                svIuWweaueKHn2HyyLAqmi4dHlclTbfUuq5UpLRu1cldK5g+iAxDhQO1cNT0
+                31XqSlUlQ4ZHU5nLTKQ6NDkepJya3gshhD4RQdxhYCd+hGk69SPCcL9bPj4M
+                MgTWaEPRKQOG7rzG25apEIYxEsAQ7jG4rQOVfFd6FKUHtSGMYTxIEe8zhOKc
+                vnir3JO9ijLRtaYMdxqR4kW1pNgVivjd/3aB0lcL1vNOjXcJ6EOMXyeNVitE
+                9dQmL/bbeEdEHI9C8MArQsA0gxjX4qV4WbXWa1T8NEOwQWKxFteOiQIlbxoV
+                21J3mqQONrYvq4cvKlqUhTDXOElm+LoXeR0XvmTrhcbLsdmU5N58/HS7A5Yf
+                d6mQSi+dddqlhvRmNlJPrfRC6oeHIdorXYb+lklWtRTqegrphOqxi9oj44OP
+                CnbEBYH0JxqXkiQVietfz55HxbPnonBPaE2dT3tnLBamQUiyBD3zI2FhbCDi
+                jghJtzN6kq6/fvQKfu/YZKeZ3y+EfbTyO1KASxRHeKMwQrcoHPw8Q6SVdycZ
+                D3sXhyH+JvXhjaF5wMaJxX0NvXXSs9OaSgaBhuncEd1s95pRVBnuZjRd3bar
+                ebX+TMlXVA7TKCiVPaWu8XVTOf6FrVtaVU3rx5qpkWr1vNETvsu77Z59wawv
+                ZymFo6xSawYN5LSyrlh2nWQxZ9j1grqp8Y3BxmJdzdvldi4Mo81j9q5AgEzv
+                ohv858UobwNw4RNafUV6foEeJCKBF7g7E+mncTYyQGPiF4yeYeh3TAj4md82
+                fOq4EwMQkSY52nDFJD1wpDDpmCNFSBLwWdPDR/MWPQOu5qJjDAfwFh6SzPF8
+                TyH5zsKE+5sfMOha9LgWvX8g/uWQ59vf6P9mwnOdOpuYmX2BBEfpQoZGN4SR
+                YQfvMCULwhsibCM0x2iea+JPkF2I5BnMEsoA+vCYJA/ZtHTRtm6Ud7TbkRa8
+                QJp0W9KS/wlp8/9MWpDI6SfSgkRIP6UfvAFpHrxL9hxkljITaB5tkbbQlS7+
+                iZJ2oDhO7TvGQy7SftaxfnKFrD7hAlm8bDdG0HcBgXQzBC5sO4ab2CEVy2VX
+                d8V2mxG3nIYkJnLRlrQpzkTl6LnFv/gWJs/56HrtWq/zTwSyS2REOSbPygtL
+                srgQm1+SFxvT03MgTm+5HRp+SjIm8+iyzGcKvyFil+hIEzlPicf39uFK4/00
+                lmhEKo1lfJDGCj7cBzPxEVb3IZqYM/HAhMfExybWTKyb2DARNhE1EXkN1SFU
+                dTgMAAA=
+                """
+    )
+
+    // common_typos_disable
+    private val AnotherOffsetDefinitionStub = kotlinAndCompiledStub(
+        filename = "InitialTestPackage.kt",
+        filepath = "initial/test/pack",
+        checksum = 0xd4dfae47,
+        source = """
+            package initial.test.pack
+
+            class OffsetClass {
+                fun offset(x: Int, y: Int): Int {
+                    return x + y
+                }
+
+                fun absoluteOffset(x: Int, y: Int): Int {
+                    return x + y
+                }
+            }
+
+            data class AnotherClass(val property: Int)
+
+            fun AnotherClass.offset(x: Int, y: Int): Int {
+                return x + y
+            }
+
+            fun AnotherClass.absoluteOffset(x: Int, y: Int): Int {
+                return x + y
+            }
+
+        """,
+        """
+                META-INF/main.kotlin_module:
+                H4sIAAAAAAAAAGNgYGBmYGBgBGJ2KM3AJc0lmJiXX5KRWqRXklpcoleQmJwt
+                xBYCZHqXcGlyCWbmZZZkJuYgSYp4QoRAagKAAonpqd4lSgxaDACYtrgJYAAA
+                AA==
+                """,
+        """
+                initial/test/pack/AnotherClass.class:
+                H4sIAAAAAAAAAIVU308cVRT+7sz+mB0WmIVCKay0yorL0nYAW62FooBWBgFJ
+                aYgVXy674zIwzKwzd4m+GJ76JzTRFxNjfOKhJgrGJg1t3/ybjPHcnemCC4Fk
+                5txzz5zzne+ce+78/e9fzwHcwjLDoOM5wuGuKexQmDVe3jZnPF9s2sGcy8Mw
+                DcZgbPFdbrrcq5qfb2zZZZGGypCakqHTDImiNbLGoBZH1rJIIq0jAY1BqwV+
+                zQ7EdwzMykJHWwYKsuQvNp2Q4dri+aknGdqqtlhpolACi0Ev+zs137M9MU5Q
+                Zb9GX4aIwcVoQ4t+UDW3bLERcMcLTe7Rdy4cn/RlXyzXXXdSFpDSiWcvQ1aC
+                Fyr217zuCoa14kUpLGuxtVOTF/LKohuXZMZ+apnwV0XgeFWGS8WRE2CRlWq4
+                3GqbrTtuxQ7SGNRxVba99yR68fUZ3NPwJh0Zr9Vsr8Jwo3ga/HS+GJsoDqEg
+                4d9myMtWn+f4jnQsSse58x1L0nE0izzekNoNKn+Th5tzfsVmyB1HWp6wq7LC
+                sWjUaJZMTOgYx7tUkf1Nnbs0TT3FM3r/JUPhvEOnE+cbrk19TTZ6xtB1GoXI
+                LG77wnU8c8kWvMIFJ5uys6vSHWJSpGnCt8n0rSN3RFOp0Gz+crQ3qCt9iq4Y
+                R3s6PYqh6YqWorWNVpXWDu3lY63vaG9CGWOz7V0pQ+lXxtSXP6cUI7GQMdJy
+                N//qsbrQbWikk6OmKZETmRmZM6TrE5rR1p/oY2Ns/tUTlQKzkccTRno76R1S
+                f5BrwmtEpz+hJY2U5DrBqA70WNGcPqQxXaEp5VX75jaNfSI6kE6aY3u5vrNh
+                Bw9lz2Sr/DJ313jgyH1sHHhQ94SzY1verhM6ZJo57jdD+6og5CVei70Lrd4r
+                POA7trCD/4Xpq349KNv3HRlzJY5ZO4VPE6HQr0cW0yV/N6RppNOFJnmfdtP0
+                XaFVLx0iUxr4A+2/0U7BpySlD9CBeZK9kRftOoGGJtFoDmDQG2GZtMqIZOl3
+                tO+fCZONHGKYHJF6HTzUGszODKAfA8HKgHGoDU6ZZ1AeDRzi8tNmUEQ20ySb
+                iclaMZsewMigD1fi3MNxk3L5xPc/QJMMpkoDBxiIIBdIqmASgS5mnP4urZJa
+                /hmuPjrEta63DjAsIw8wYowc4PoBbj5tKSMfMzrBg6TZ7MFw3IMGgz9xq7UN
+                WhzPcBvvxTy+olVesUJp9FckE/ujL6D8iKS6P3oEZUkCXaf3J2lJRGey0Dg+
+                Na39g1ya9scdKzQ7VsAdfEB5PouvMt5vhC425CdYovULst6lk5lch2physI9
+                kpiW4kMLH2FmHSzELObW0RnK5+MQekOmQhghciG6QnSHuN0w3glhhsiT/h8X
+                5RN2iwcAAA==
+                """,
+        """
+                initial/test/pack/InitialTestPackageKt.class:
+                H4sIAAAAAAAAAJVRXU8TQRQ9M4W2LghtbZUWRJQCbR9cIL5VTQiJcUMFIqQv
+                fXG6Hdppt7tmZ9rgGz/IH2B8MDz7o4x3aFWEGHWSuffcc7/mzv367fMXAM9Q
+                Y9hUoTJKBK6R2rjvhT9wvQlzSsQx2aIrD0wKjCHTF2PhBiLsukftvvSJTTAk
+                o7MzLQ3DRqVxu9heGJmejPcDoXXd86oew3ojirtuX5p2LFSoXRFSjDAqInwY
+                mcNRENSp7HPTU/plGmmG1UFkAhW6/fHQVaGRcUg9vNDElK58nYLDUPB70h9M
+                849FLIaSAhm2Ko2bz65fY05skW692pzHPO46mMMCw3zZ9i7/GGztb3MxsHO6
+                NBv7wLAg2joKRkYeTfPzk3I36WxjOtYbaURHGEF1+HCcoNUwK1JUbmABJ/5c
+                WbRNqLPDcHB5seBcXjg8k3b4End4OlEqZS4vSnyb1fg2301mEhaTnrGanLN/
+                8tmSu4x6onB7808H9NCZ/agjGRbpG+ThaNiW8aloB8TkGpEvgqaIlbWnZPnt
+                KDRqKL1wrLQi6ucy9n4tmsE5iUaxL18pm1Oc5jQnGdcCsQOOGdjDUcQskqTL
+                ZL0mbb/EqeXufMLi8sq7j1cxGySTNEwSWWwSXptEIUM2rlAO98hvUZ4Qxxbh
+                uQRRKUxOEYX/aFP4rc39f2/DUbmS66iSfkGeBzTfUgsJD0UPJZJY9rCChx5W
+                8agFpqnN4xaSGgWNJxpZjZxGXmP2O5cbQQjTAwAA
+                """,
+        """
+                initial/test/pack/OffsetClass.class:
+                H4sIAAAAAAAAAI1QPW8TQRB9u/dhc/nwOYTgfBGgSig4x6IDRSKWIl1kMILI
+                FG5Y25uw8fkOeddR6PxbqGlSRaKILEp+FGL2fFUUoZx082bezLzZmT9/f90A
+                eIXnDNsqVUaJJDJSm+ib6A+j9umplqaZCK1LYAzhubgQUSLSs6jdO5d9U4LD
+                4L+xnQcMzu5eZxEe/AAuSgyu+ao0w07rv8qvSSHLQwZvN473YgZ2Sb/F7wzL
+                oqezZGJkuyiqtoaZSVQavZNGDIQRpMBHFw4twqyhyWxI1KWyUZ28wT7D59l0
+                NeA1HvBwNg142TplQqc2mzZ4nR16v3/4POTHa6Gzwetuww+9An2LxJfu4q18
+                g9FoPIrna57Qlh9oSXEmXw7pvW4zG0iGCp1Bvp+MenJ8InoJMSutrC+Sjhgr
+                Gxdk8CmbjPvySNlg/eMkNWokO0oryr5N08wIo7JUYx+crmw/h2bT0cluUxQR
+                0nPgvbhG+Yocjidk/Zx0sUN2cV6ABwgIq1jIGdt8SNX2aO7m1peft3r9vPfp
+                PF/0Wm8Jy4V2hTxOeuG99IJ76nGqsZ1beEbYpFyV3r7ShRPjYYxVsnR6Mmsx
+                HqPWBdNYx0YXZY1AY1PD1whzZ0mjorHwDymQrhH2AgAA
+                """
+    )
+    // common_typos_enabled
+
+    private val DensityStub: TestFile = compiledStub(
+        filename = "Density.kt",
+        filepath = "androidx/compose/ui/unit",
+        checksum = 0xaa534a7a,
+        """
+            package androidx.compose.ui.unit
+
+            interface Density
+        """,
+        """
+        META-INF/main.kotlin_module:
+        H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcIlnpiXUpSfmVKhl5yfW5BfnKpX
+        mqmXlp8vxOmWn++SWJLoXaLEoMUAAALEmjo+AAAA
+        """,
+        """
+        androidx/compose/ui/unit/Density.class:
+        H4sIAAAAAAAAAIVOTUvDQBB9s7FNjV+pH1Bv4g9w2+LNkyBCoCIoeMlpm6yy
+        Tbor3U2pt/4uD9KzP0qcqHdn4M17M/DefH69fwC4xDHhTNly4Uy5koWbvzqv
+        ZWNkY02QN9p6E95iECGdqaWStbIv8n4600WIERH6k8qF2lh5p4MqVVBXBDFf
+        RuxNLXQIVPFqZVo1ZFaOCCebdS8RA5GIlNnzYLMeiyG1xzHhfPLfP5wBQvKn
+        LqrA4tE1i0LfmloTTh8aG8xcPxlvprW+ttYFFYyzvssZ2MJvCRz+YB9HPEds
+        2eHu5ogyxBl6jNhuIcmwg90c5LGH/RzC48Aj/QaMxaG1RAEAAA==
+        """
+    )
+
+    override fun getDetector(): Detector = NonLambdaOffsetModifierDetector()
+
+    override fun getIssues(): MutableList<Issue> =
+        mutableListOf(NonLambdaOffsetModifierDetector.UseOfNonLambdaOverload)
+
+    @Test
+    fun lambdaOffset_simpleUsage_shouldNotWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.IntOffset
+
+            val modifier1 = Modifier.offset { IntOffset(0, 0) }
+            val modifier2 = Modifier.absoluteOffset { IntOffset(0, 0) }
+
+            @Composable
+            fun ComposableFunction(modifier: Modifier) {
+                Modifier.offset { IntOffset(0, 0) }
+                Modifier.absoluteOffset { IntOffset(0, 0) }
+                modifier.offset { IntOffset(0, 0) }
+                modifier.absoluteOffset { IntOffset(0, 0) }
+            }
+        """
+            ),
+            Stubs.Composable,
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.IntOffset,
+            OffsetStub
+        )
+            .run()
+            .expectClean()
+    }
+
+    @Test
+    fun lambdaOffset_withStateUsages_shouldNotWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.mutableStateOf
+            import androidx.compose.runtime.remember
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.IntOffset
+
+            @Composable
+            fun ComposableFunction(modifier: Modifier) {
+                val offsetX = remember { mutableStateOf(0f) }
+                val offsetY = remember { mutableStateOf(0) }
+
+                Modifier.offset { IntOffset(offsetX.value.toInt(), offsetX.value.toInt()) }
+                Modifier.offset { IntOffset(offsetY.value, offsetY.value) }
+                Modifier.offset { IntOffset(offsetY.value, 0) }
+
+                Modifier.absoluteOffset { IntOffset(offsetX.value.toInt(), offsetX.value.toInt()) }
+                Modifier.absoluteOffset { IntOffset(offsetY.value, offsetY.value) }
+                Modifier.absoluteOffset { IntOffset(offsetY.value, 0) }
+
+                modifier.offset { IntOffset(offsetX.value.toInt(), offsetX.value.toInt()) }
+                modifier.offset { IntOffset(offsetY.value, offsetY.value) }
+                modifier.offset { IntOffset(offsetY.value, 0) }
+                modifier.absoluteOffset { IntOffset(offsetX.value.toInt(), offsetX.value.toInt()) }
+                modifier.absoluteOffset { IntOffset(offsetY.value, offsetY.value) }
+                modifier.absoluteOffset { IntOffset(offsetY.value, 0) }
+            }
+        """
+            ),
+            Stubs.Composable,
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.IntOffset,
+            Stubs.SnapshotState,
+            Stubs.Remember,
+            OffsetStub
+        )
+            .run()
+            .expectClean()
+    }
+
+    @Test
+    fun lambdaOffset_withAnimatableUsage_shouldNotWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.animation.core.Animatable
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.remember
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.IntOffset
+
+            @Composable
+            fun ComposableFunction(modifier: Modifier) {
+                val offsetX = remember { Animatable(0f) }
+
+                Modifier.offset { IntOffset(offsetX.value.toInt(), offsetX.value.toInt()) }
+                Modifier.offset { IntOffset(offsetX.value.toInt(), 0) }
+
+                Modifier.absoluteOffset {
+                    IntOffset(
+                        offsetX.value.toInt(),
+                        offsetX.value.toInt()
+                    )
+                }
+                Modifier.absoluteOffset { IntOffset(offsetX.value.toInt(), 0) }
+
+                modifier.offset { IntOffset(offsetX.value.toInt(), offsetX.value.toInt()) }
+                modifier.offset { IntOffset(offsetX.value.toInt(), 0) }
+                modifier.absoluteOffset {
+                    IntOffset(
+                        offsetX.value.toInt(),
+                        offsetX.value.toInt()
+                    )
+                }
+                modifier.absoluteOffset { IntOffset(offsetX.value.toInt(), 0) }
+            }
+        """
+            ),
+            Stubs.Composable,
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.IntOffset,
+            Stubs.Animatable,
+            Stubs.Remember,
+            OffsetStub
+        )
+            .run()
+            .expectClean()
+    }
+
+    @Test
+    fun nonLambdaOffset_usingVariableDp_shouldNotWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.Density
+            import androidx.compose.ui.unit.dp
+
+            val offsetX = 0.dp
+            val modifier1 = Modifier.offset(offsetX, 0.dp)
+            val modifier2 = Modifier.absoluteOffset(offsetX, 0.dp)
+            val density = object : Density {
+                override val density: Float
+                    get() = 0f
+                override val fontScale: Float
+                    get() = 0f
+            }
+
+            @Composable
+            fun ComposableFunction(modifier: Modifier) {
+                Modifier.offset(offsetX, 0.dp)
+                modifier.offset(offsetX, 0.dp)
+                Modifier.absoluteOffset(offsetX, 0.dp)
+                Modifier.offset(offsetX, with(density) { 0.dp })
+            }
+        """
+            ),
+            Stubs.Composable,
+            Stubs.Modifier,
+            DensityStub,
+            Stubs.Dp,
+            Stubs.IntOffset,
+            OffsetStub
+        )
+            .run()
+            .expectClean()
+    }
+
+    @Test
+    fun nonLambdaOffset_usingPassedStaticArguments_shouldNotWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.Dp
+            import androidx.compose.ui.unit.dp
+
+            @Composable
+            fun ComposableFunction(passedOffset: Dp) {
+                val yAxis = 10.dp
+
+                Modifier.offset(passedOffset, yAxis)
+                Modifier.absoluteOffset(0.dp, passedOffset)
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            OffsetStub
+        )
+            .run()
+            .expectClean()
+    }
+
+    // State tests
+
+    @Test
+    fun nonLambdaOffset_usingStateLocalVariable_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.mutableStateOf
+            import androidx.compose.runtime.remember
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.dp
+
+            @Composable
+            fun ComposableFunction() {
+                val offsetStateful = remember { mutableStateOf(0.dp) }
+                val yAxis = 10.dp
+
+                Modifier.offset(offsetStateful.value, yAxis)
+                Modifier.absoluteOffset(0.dp, offsetStateful.value)
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:17: $WarningMessage
+                Modifier.offset(offsetStateful.value, yAxis)
+                         ~~~~~~
+src/test/test.kt:18: $WarningMessage
+                Modifier.absoluteOffset(0.dp, offsetStateful.value)
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_usingDelegatedStateVariable_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.getValue
+            import androidx.compose.runtime.mutableStateOf
+            import androidx.compose.runtime.remember
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.dp
+
+            @Composable
+            fun ComposableFunction() {
+                val offsetStateful by remember { mutableStateOf(0.dp) }
+                val yAxis = 10.dp
+
+                Modifier.offset(offsetStateful, yAxis)
+                Modifier.absoluteOffset(0.dp, offsetStateful)
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:18: $WarningMessage
+                Modifier.offset(offsetStateful, yAxis)
+                         ~~~~~~
+src/test/test.kt:19: $WarningMessage
+                Modifier.absoluteOffset(0.dp, offsetStateful)
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_usingStateReceiver_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.State
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.Dp
+            import androidx.compose.ui.unit.dp
+
+            @Composable
+            fun ComposableFunctionWithReceiver(offsetStateful: State<Dp>) {
+                with(offsetStateful) {
+                    val yAxis = 10.dp
+                    Modifier.offset(value, yAxis)
+                    Modifier.absoluteOffset(0.dp, value)
+                }
+            }
+
+            @Composable
+            fun State<Dp>.ComposableFunctionExtensionReceiver() {
+                Modifier.offset(value, 10.dp)
+                Modifier.absoluteOffset(value, 10.dp)
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:16: $WarningMessage
+                    Modifier.offset(value, yAxis)
+                             ~~~~~~
+src/test/test.kt:17: $WarningMessage
+                    Modifier.absoluteOffset(0.dp, value)
+                             ~~~~~~~~~~~~~~
+src/test/test.kt:23: $WarningMessage
+                Modifier.offset(value, 10.dp)
+                         ~~~~~~
+src/test/test.kt:24: $WarningMessage
+                Modifier.absoluteOffset(value, 10.dp)
+                         ~~~~~~~~~~~~~~
+0 errors, 4 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_usingTopLevelStateVariables_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.mutableStateOf
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.dp
+
+            private val offsetStateful = mutableStateOf(0.dp)
+
+            @Composable
+            fun ComposableFunction() {
+                val yAxis = 10.dp
+                Modifier.offset(offsetStateful.value, yAxis)
+                Modifier.absoluteOffset(offsetStateful.value, yAxis)
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            Stubs.Animatable,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:16: $WarningMessage
+                Modifier.offset(offsetStateful.value, yAxis)
+                         ~~~~~~
+src/test/test.kt:17: $WarningMessage
+                Modifier.absoluteOffset(offsetStateful.value, yAxis)
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_usingClassPropertiesState_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.mutableStateOf
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.dp
+
+            class SecondaryClass {
+                val offsetStateful = mutableStateOf(0.dp)
+            }
+
+            @Composable
+            fun ComposableFunction(secondaryClass: SecondaryClass) {
+                val yAxis = 10.dp
+                Modifier.offset(secondaryClass.offsetStateful.value, yAxis)
+                Modifier.absoluteOffset(secondaryClass.offsetStateful.value, yAxis)
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            Stubs.Animatable,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/SecondaryClass.kt:18: $WarningMessage
+                Modifier.offset(secondaryClass.offsetStateful.value, yAxis)
+                         ~~~~~~
+src/test/SecondaryClass.kt:19: $WarningMessage
+                Modifier.absoluteOffset(secondaryClass.offsetStateful.value, yAxis)
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_usingLambdaMethodWithState_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.mutableStateOf
+            import androidx.compose.runtime.remember
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.dp
+
+            @Composable
+            fun ComposableFunction() {
+                val offsetStateful = remember { mutableStateOf(0.dp) }
+                val yAxis = 10.dp
+
+                Modifier.offset(run { offsetStateful.value }, yAxis)
+                Modifier.absoluteOffset(0.dp, run { offsetStateful.value })
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:17: $WarningMessage
+                Modifier.offset(run { offsetStateful.value }, yAxis)
+                         ~~~~~~
+src/test/test.kt:18: $WarningMessage
+                Modifier.absoluteOffset(0.dp, run { offsetStateful.value })
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_usingStateArgumentsHoisted_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.State
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.Dp
+            import androidx.compose.ui.unit.dp
+
+            @Composable
+            fun ComposableFunction(offsetStateful: State<Dp>) {
+                val yAxis = 10.dp
+
+                Modifier.offset(offsetStateful.value, yAxis)
+                Modifier.absoluteOffset(0.dp, offsetStateful.value)
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:16: $WarningMessage
+                Modifier.offset(offsetStateful.value, yAxis)
+                         ~~~~~~
+src/test/test.kt:17: $WarningMessage
+                Modifier.absoluteOffset(0.dp, offsetStateful.value)
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_usingStateVariableWithSecondaryMethodCallNoStateInSignature_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.getValue
+            import androidx.compose.runtime.mutableStateOf
+            import androidx.compose.runtime.remember
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.Dp
+            import androidx.compose.ui.unit.dp
+
+            @Composable
+            fun ComposableFunction() {
+                val offsetStateful by remember { mutableStateOf(0.dp) }
+                val yAxis = 10.dp
+
+                Modifier.offset(anotherTransformation(offsetStateful), yAxis)
+                Modifier.absoluteOffset(0.dp, anotherTransformation(offsetStateful))
+            }
+
+            fun anotherTransformation(offsetStateful: Dp): Dp {
+                return offsetStateful + 10.dp
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:19: $WarningMessage
+                Modifier.offset(anotherTransformation(offsetStateful), yAxis)
+                         ~~~~~~
+src/test/test.kt:20: $WarningMessage
+                Modifier.absoluteOffset(0.dp, anotherTransformation(offsetStateful))
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_usingStateVariableWithSecondaryMethodCallStateInSignature_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.State
+            import androidx.compose.runtime.mutableStateOf
+            import androidx.compose.runtime.remember
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.Dp
+            import androidx.compose.ui.unit.dp
+
+            @Composable
+            fun ComposableFunction() {
+                val offsetStateful = remember { mutableStateOf(0.dp) }
+                val yAxis = 10.dp
+
+                Modifier.offset(anotherTransformation(offsetStateful), yAxis)
+                Modifier.absoluteOffset(0.dp, anotherTransformation(offsetStateful))
+            }
+
+            fun anotherTransformation(offsetStateful: State<Dp>): Dp {
+                return offsetStateful.value + 10.dp
+            }
+
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:19: $WarningMessage
+                Modifier.offset(anotherTransformation(offsetStateful), yAxis)
+                         ~~~~~~
+src/test/test.kt:20: $WarningMessage
+                Modifier.absoluteOffset(0.dp, anotherTransformation(offsetStateful))
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_usingDelegatedStateVariableWithComplexExpression_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.getValue
+            import androidx.compose.runtime.mutableStateOf
+            import androidx.compose.runtime.remember
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.dp
+
+            @Composable
+            fun ComposableFunction() {
+                val offsetStateful by remember { mutableStateOf(0.dp) }
+                val yAxis = 10.dp
+
+                Modifier.offset(offsetStateful + 50.dp + yAxis, yAxis)
+                Modifier.absoluteOffset(0.dp, offsetStateful + 100.dp + yAxis)
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:18: $WarningMessage
+                Modifier.offset(offsetStateful + 50.dp + yAxis, yAxis)
+                         ~~~~~~
+src/test/test.kt:19: $WarningMessage
+                Modifier.absoluteOffset(0.dp, offsetStateful + 100.dp + yAxis)
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    // Animatable tests
+
+    @Test
+    fun nonLambdaOffset_usingAnimatableArgumentsLocalVariable_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.animation.core.Animatable
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.remember
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.dp
+
+            @Composable
+            fun ComposableFunction() {
+                val offsetX = remember { Animatable(0.dp, null) }
+                Modifier.offset(x = offsetX.value, 0.dp)
+                Modifier.absoluteOffset(0.dp, y = offsetX.value)
+            }
+        """
+            ),
+            Stubs.Dp,
+            Stubs.Animatable,
+            Stubs.Modifier,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:15: $WarningMessage
+                Modifier.offset(x = offsetX.value, 0.dp)
+                         ~~~~~~
+src/test/test.kt:16: $WarningMessage
+                Modifier.absoluteOffset(0.dp, y = offsetX.value)
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_usingAnimatableArgumentsHoisted_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.animation.core.Animatable
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.Dp
+            import androidx.compose.ui.unit.dp
+
+            @Composable
+            fun ComposableFunction(offsetX: Animatable<Dp, Any>) {
+                Modifier.offset(x = offsetX.value, 0.dp)
+                Modifier.absoluteOffset(0.dp, y = offsetX.value)
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            Stubs.Animatable,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:14: $WarningMessage
+                Modifier.offset(x = offsetX.value, 0.dp)
+                         ~~~~~~
+src/test/test.kt:15: $WarningMessage
+                Modifier.absoluteOffset(0.dp, y = offsetX.value)
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_usingAnimatableReceiver_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.animation.core.Animatable
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.Dp
+            import androidx.compose.ui.unit.dp
+
+            @Composable
+            fun ComposableFunctionWithReceiver(offsetStateful: Animatable<Dp, Any>) {
+                with(offsetStateful) {
+                    val yAxis = 10.dp
+                    Modifier.offset(value, yAxis)
+                    Modifier.absoluteOffset(0.dp, value)
+                }
+            }
+
+            @Composable
+            fun Animatable<Dp, Any>.ComposableFunctionExtensionReceiver() {
+                Modifier.offset(value, 10.dp)
+                Modifier.absoluteOffset(value, 10.dp)
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            Stubs.Animatable,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:16: $WarningMessage
+                    Modifier.offset(value, yAxis)
+                             ~~~~~~
+src/test/test.kt:17: $WarningMessage
+                    Modifier.absoluteOffset(0.dp, value)
+                             ~~~~~~~~~~~~~~
+src/test/test.kt:23: $WarningMessage
+                Modifier.offset(value, 10.dp)
+                         ~~~~~~
+src/test/test.kt:24: $WarningMessage
+                Modifier.absoluteOffset(value, 10.dp)
+                         ~~~~~~~~~~~~~~
+0 errors, 4 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_usingLambdaMethodWithAnimatable_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.animation.core.Animatable
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.remember
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.Dp
+            import androidx.compose.ui.unit.dp
+
+            @Composable
+            fun ComposableFunction() {
+                val offsetStateful = remember { Animatable<Dp, Any>(0.dp) }
+                val yAxis = 10.dp
+                Modifier.offset(run { offsetStateful.value }, yAxis)
+                Modifier.absoluteOffset(0.dp, run { offsetStateful.value })
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            Stubs.Animatable,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:17: $WarningMessage
+                Modifier.offset(run { offsetStateful.value }, yAxis)
+                         ~~~~~~
+src/test/test.kt:18: $WarningMessage
+                Modifier.absoluteOffset(0.dp, run { offsetStateful.value })
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_usingTopLevelAnimatableVariables_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.animation.core.Animatable
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.Dp
+            import androidx.compose.ui.unit.dp
+
+            private val animatable = Animatable<Dp, Any>(0.dp)
+
+            @Composable
+            fun ComposableFunction() {
+                val yAxis = 10.dp
+                Modifier.offset(0.dp, animatable.value)
+                Modifier.absoluteOffset(0.dp, animatable.value)
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            Stubs.Animatable,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:17: $WarningMessage
+                Modifier.offset(0.dp, animatable.value)
+                         ~~~~~~
+src/test/test.kt:18: $WarningMessage
+                Modifier.absoluteOffset(0.dp, animatable.value)
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_usingClassPropertiesAnimatable_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.animation.core.Animatable
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.Dp
+            import androidx.compose.ui.unit.dp
+
+            class SecondaryClass {
+                val animatable = Animatable<Dp, Any>(0.dp)
+            }
+
+            @Composable
+            fun ComposableFunction(secondaryClass: SecondaryClass) {
+                val yAxis = 10.dp
+                Modifier.offset(0.dp, secondaryClass.animatable.value)
+                Modifier.absoluteOffset(0.dp, secondaryClass.animatable.value)
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            Stubs.Animatable,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/SecondaryClass.kt:19: $WarningMessage
+                Modifier.offset(0.dp, secondaryClass.animatable.value)
+                         ~~~~~~
+src/test/SecondaryClass.kt:20: $WarningMessage
+                Modifier.absoluteOffset(0.dp, secondaryClass.animatable.value)
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_usingAnimatableVariableWithComplexExpression_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.animation.core.Animatable
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.remember
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.dp
+
+            @Composable
+            fun ComposableFunction() {
+                val offsetX = remember { Animatable(0.dp, null) }
+                Modifier.offset(x = offsetX.value + 2.dp, 0.dp)
+                Modifier.absoluteOffset(0.dp, y = offsetX.value + 5.dp)
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            Stubs.Animatable,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:15: $WarningMessage
+                Modifier.offset(x = offsetX.value + 2.dp, 0.dp)
+                         ~~~~~~
+src/test/test.kt:16: $WarningMessage
+                Modifier.absoluteOffset(0.dp, y = offsetX.value + 5.dp)
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_animatableVariableWithSecondaryMethodCallNoStateInSignature_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.animation.core.Animatable
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.remember
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.Dp
+            import androidx.compose.ui.unit.dp
+
+            @Composable
+            fun ComposableFunction() {
+                val offsetStateful = remember { Animatable<Dp, Any>(0.dp) }
+                val yAxis = 10.dp
+
+                Modifier.offset(anotherTransformation(offsetStateful.value), yAxis)
+                Modifier.absoluteOffset(0.dp, anotherTransformation(offsetStateful.value))
+            }
+
+            fun anotherTransformation(offsetStateful: Dp): Dp {
+                return offsetStateful + 10.dp
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            Stubs.Animatable,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:18: $WarningMessage
+                Modifier.offset(anotherTransformation(offsetStateful.value), yAxis)
+                         ~~~~~~
+src/test/test.kt:19: $WarningMessage
+                Modifier.absoluteOffset(0.dp, anotherTransformation(offsetStateful.value))
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    @Test
+    fun nonLambdaOffset_usingAnimatableArgumentsWithMethodCallStateInSignature_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+            package test
+
+            import androidx.compose.animation.core.Animatable
+            import androidx.compose.foundation.layout.absoluteOffset
+            import androidx.compose.foundation.layout.offset
+            import androidx.compose.runtime.Composable
+            import androidx.compose.runtime.remember
+            import androidx.compose.ui.Modifier
+            import androidx.compose.ui.unit.Dp
+            import androidx.compose.ui.unit.dp
+
+            @Composable
+            fun ComposableFunction() {
+                val offsetStateful = remember { Animatable<Dp, Any>(0.dp) }
+                val yAxis = 10.dp
+
+                Modifier.offset(anotherTransformation(offsetStateful), yAxis)
+                Modifier.absoluteOffset(0.dp, anotherTransformation(offsetStateful))
+            }
+
+            fun anotherTransformation(offsetStateful: Animatable<Dp, Any>): Dp {
+                return offsetStateful.value + 10.dp
+            }
+        """
+            ),
+            Stubs.Modifier,
+            Stubs.Dp,
+            Stubs.Remember,
+            Stubs.Composable,
+            Stubs.SnapshotState,
+            Stubs.Animatable,
+            OffsetStub
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:18: $WarningMessage
+                Modifier.offset(anotherTransformation(offsetStateful), yAxis)
+                         ~~~~~~
+src/test/test.kt:19: $WarningMessage
+                Modifier.absoluteOffset(0.dp, anotherTransformation(offsetStateful))
+                         ~~~~~~~~~~~~~~
+0 errors, 2 warnings
+            """
+            )
+    }
+
+    // Non modifier related tests
+
+    @Test
+    fun nonModifierOffset_bytecode_shouldNotWarn() {
+        lint().files(
+            kotlin(
+                """
+                package another.test.pack
+
+                import initial.test.pack.AnotherClass
+                import initial.test.pack.offset
+                import initial.test.pack.OffsetClass
+
+                val offsets = OffsetClass()
+                val otherOffsets = AnotherClass(0)
+                val anotherOffset = offsets.offset(0, 0)
+                val anotherOffsetCalculation = otherOffsets.offset(0, 0)
+
+        """
+            ),
+            AnotherOffsetDefinitionStub.compiled
+        )
+            .run()
+            .expectClean()
+    }
+
+    @Test
+    fun nonModifierOffsetKotlin_shouldNotWarn() {
+        lint().files(
+            kotlin(
+                """
+                package another.test.pack
+
+                import initial.test.pack.AnotherClass
+                import initial.test.pack.offset
+                import initial.test.pack.OffsetClass
+
+                val offsets = OffsetClass()
+                val otherOffsets = AnotherClass(0)
+                val anotherOffset = offsets.offset(0, 0)
+                val anotherOffsetCalculation = otherOffsets.offset(0, 0)
+
+        """
+            ),
+            AnotherOffsetDefinitionStub.kotlin
+        )
+            .run()
+            .expectClean()
+    }
+}
\ No newline at end of file
diff --git a/compose/foundation/foundation/api/current.txt b/compose/foundation/foundation/api/current.txt
index 57531bb..9de6783 100644
--- a/compose/foundation/foundation/api/current.txt
+++ b/compose/foundation/foundation/api/current.txt
@@ -949,6 +949,9 @@
   public final class StringHelpers_jvmKt {
   }
 
+  public final class TextDelegateKt {
+  }
+
   public final class TextFieldCursorKt {
   }
 
diff --git a/compose/foundation/foundation/api/public_plus_experimental_current.txt b/compose/foundation/foundation/api/public_plus_experimental_current.txt
index f81dc6b..aac4ae1 100644
--- a/compose/foundation/foundation/api/public_plus_experimental_current.txt
+++ b/compose/foundation/foundation/api/public_plus_experimental_current.txt
@@ -1099,6 +1099,9 @@
   public final class StringHelpers_jvmKt {
   }
 
+  public final class TextDelegateKt {
+  }
+
   public final class TextFieldCursorKt {
   }
 
diff --git a/compose/foundation/foundation/api/restricted_current.txt b/compose/foundation/foundation/api/restricted_current.txt
index 57531bb..9de6783 100644
--- a/compose/foundation/foundation/api/restricted_current.txt
+++ b/compose/foundation/foundation/api/restricted_current.txt
@@ -949,6 +949,9 @@
   public final class StringHelpers_jvmKt {
   }
 
+  public final class TextDelegateKt {
+  }
+
   public final class TextFieldCursorKt {
   }
 
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeLineHeight.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeLineHeight.kt
index ef4829e..df4275a 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeLineHeight.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeLineHeight.kt
@@ -49,6 +49,7 @@
 import androidx.compose.ui.text.SpanStyle
 import androidx.compose.ui.text.TextStyle
 import androidx.compose.ui.text.buildAnnotatedString
+import androidx.compose.ui.text.input.TextFieldValue
 import androidx.compose.ui.text.style.LineHeightStyle
 import androidx.compose.ui.text.style.LineHeightStyle.Trim
 import androidx.compose.ui.text.style.TextOverflow
@@ -431,5 +432,21 @@
                 softWrap = !singleLine
             )
         }
+        Spacer(Modifier.padding(16.dp))
+
+        Column(Modifier.width(width)) {
+            var textFieldValue by remember(text) { mutableStateOf(TextFieldValue(text)) }
+
+            TextFieldWithMetrics(
+                value = textFieldValue,
+                onValueChange = {
+                    textFieldValue = it
+                },
+                style = style,
+                maxLines = maxLines,
+                softWrap = !singleLine
+            )
+        }
+        Spacer(Modifier.padding(16.dp))
     }
 }
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/TextDemoMetrics.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/TextDemoMetrics.kt
index d4684af..6d0d2d0 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/TextDemoMetrics.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/TextDemoMetrics.kt
@@ -20,10 +20,13 @@
 import androidx.compose.foundation.demos.text.TextMetricHelper.Alignment.Center
 import androidx.compose.foundation.demos.text.TextMetricHelper.Alignment.Left
 import androidx.compose.foundation.demos.text.TextMetricHelper.Alignment.Right
+import androidx.compose.foundation.text.BasicTextField
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.composed
 import androidx.compose.ui.draw.drawWithContent
@@ -38,6 +41,7 @@
 import androidx.compose.ui.text.AnnotatedString
 import androidx.compose.ui.text.TextLayoutResult
 import androidx.compose.ui.text.TextStyle
+import androidx.compose.ui.text.input.TextFieldValue
 import androidx.compose.ui.text.style.TextOverflow
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
@@ -66,6 +70,30 @@
     )
 }
 
+@Composable
+internal fun TextFieldWithMetrics(
+    value: TextFieldValue,
+    onValueChange: (TextFieldValue) -> Unit,
+    style: TextStyle,
+    maxLines: Int,
+    softWrap: Boolean = true,
+    colors: TextMetricColors? = null
+) {
+    var textLayout by remember { mutableStateOf<TextLayoutResult?>(null) }
+
+    BasicTextField(
+        value = value,
+        onValueChange = onValueChange,
+        modifier = Modifier.drawTextMetrics(textLayout, colors).background(Color.White),
+        textStyle = style,
+        singleLine = !softWrap,
+        maxLines = maxLines,
+        onTextLayout = {
+            textLayout = it
+        }
+    )
+}
+
 internal class TextMetricColors(
     val background: Color = WinterDoldrums,
     val text: Color = BlackInk,
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ClickableTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ClickableTest.kt
index 8e8e473..d4afd09 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ClickableTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ClickableTest.kt
@@ -2204,4 +2204,69 @@
             assertThat(interactions.last()).isInstanceOf(PressInteraction.Release::class.java)
         }
     }
+
+    @Test
+    @OptIn(ExperimentalComposeUiApi::class, ExperimentalTestApi::class)
+    fun clickableTest_interruptedClick_emitsCancelIndication() {
+        InstrumentationRegistry.getInstrumentation().setInTouchMode(false)
+        val interactionSource = MutableInteractionSource()
+        val focusRequester = FocusRequester()
+        val enabled = mutableStateOf(true)
+        lateinit var scope: CoroutineScope
+
+        rule.setContent {
+            scope = rememberCoroutineScope()
+            Box(Modifier.padding(10.dp)) {
+                BasicText("ClickableText",
+                    modifier = Modifier
+                        .testTag("clickable")
+                        .focusRequester(focusRequester)
+                        .clickable(
+                            interactionSource = interactionSource,
+                            indication = null,
+                            enabled = enabled.value
+                        ) {}
+                )
+            }
+        }
+
+        rule.runOnIdle { focusRequester.requestFocus() }
+
+        val interactions = mutableListOf<Interaction>()
+        scope.launch {
+            interactionSource.interactions.collect { interactions.add(it) }
+        }
+
+        val clickableNode = rule.onNodeWithTag("clickable")
+
+        clickableNode.performKeyInput { keyDown(Key.Enter) }
+
+        rule.runOnIdle {
+            assertThat(interactions).hasSize(1)
+            assertThat(interactions.first()).isInstanceOf(PressInteraction.Press::class.java)
+        }
+
+        enabled.value = false
+
+        clickableNode.assertIsNotEnabled()
+
+        rule.runOnIdle {
+            // Filter out focus interactions.
+            val pressInteractions = interactions.filterIsInstance<PressInteraction>()
+            assertThat(pressInteractions).hasSize(2)
+            assertThat(pressInteractions.first()).isInstanceOf(PressInteraction.Press::class.java)
+            assertThat(pressInteractions.last()).isInstanceOf(PressInteraction.Cancel::class.java)
+        }
+
+        // Key releases should not result in interactions.
+        clickableNode.performKeyInput { keyUp(Key.Enter) }
+
+        // Make sure nothing has changed.
+        rule.runOnIdle {
+            val pressInteractions = interactions.filterIsInstance<PressInteraction>()
+            assertThat(pressInteractions).hasSize(2)
+            assertThat(pressInteractions.first()).isInstanceOf(PressInteraction.Press::class.java)
+            assertThat(pressInteractions.last()).isInstanceOf(PressInteraction.Cancel::class.java)
+        }
+    }
 }
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/SelectableTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/SelectableTest.kt
index 2ea1f22..213b7fe 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/SelectableTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/SelectableTest.kt
@@ -48,6 +48,7 @@
 import androidx.compose.ui.test.SemanticsMatcher
 import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertCountEquals
+import androidx.compose.ui.test.assertIsNotEnabled
 import androidx.compose.ui.test.assertIsNotSelected
 import androidx.compose.ui.test.assertIsSelected
 import androidx.compose.ui.test.isSelectable
@@ -1000,4 +1001,70 @@
             assertThat(interactions.last()).isInstanceOf(PressInteraction.Release::class.java)
         }
     }
+
+    @Test
+    @OptIn(ExperimentalComposeUiApi::class, ExperimentalTestApi::class)
+    fun selectableTest_interruptedClick_emitsCancelIndication() {
+        InstrumentationRegistry.getInstrumentation().setInTouchMode(false)
+        val interactionSource = MutableInteractionSource()
+        val focusRequester = FocusRequester()
+        val enabled = mutableStateOf(true)
+        lateinit var scope: CoroutineScope
+
+        rule.setContent {
+            scope = rememberCoroutineScope()
+            Box(Modifier.padding(10.dp)) {
+                BasicText("SelectableText",
+                    modifier = Modifier
+                        .testTag("selectable")
+                        .focusRequester(focusRequester)
+                        .selectable(
+                            selected = true,
+                            interactionSource = interactionSource,
+                            indication = null,
+                            enabled = enabled.value
+                        ) {}
+                )
+            }
+        }
+
+        rule.runOnIdle { focusRequester.requestFocus() }
+
+        val interactions = mutableListOf<Interaction>()
+        scope.launch {
+            interactionSource.interactions.collect { interactions.add(it) }
+        }
+
+        val selectableNode = rule.onNodeWithTag("selectable")
+
+        selectableNode.performKeyInput { keyDown(Key.Enter) }
+
+        rule.runOnIdle {
+            assertThat(interactions).hasSize(1)
+            assertThat(interactions.first()).isInstanceOf(PressInteraction.Press::class.java)
+        }
+
+        enabled.value = false
+
+        selectableNode.assertIsNotEnabled()
+
+        rule.runOnIdle {
+            // Filter out focus interactions.
+            val pressInteractions = interactions.filterIsInstance<PressInteraction>()
+            assertThat(pressInteractions).hasSize(2)
+            assertThat(pressInteractions.first()).isInstanceOf(PressInteraction.Press::class.java)
+            assertThat(pressInteractions.last()).isInstanceOf(PressInteraction.Cancel::class.java)
+        }
+
+        // Key releases should not result in interactions.
+        selectableNode.performKeyInput { keyUp(Key.Enter) }
+
+        // Make sure nothing has changed.
+        rule.runOnIdle {
+            val pressInteractions = interactions.filterIsInstance<PressInteraction>()
+            assertThat(pressInteractions).hasSize(2)
+            assertThat(pressInteractions.first()).isInstanceOf(PressInteraction.Press::class.java)
+            assertThat(pressInteractions.last()).isInstanceOf(PressInteraction.Cancel::class.java)
+        }
+    }
 }
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPrefetcherTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPrefetcherTest.kt
index 9625768..0c54c3c1 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPrefetcherTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPrefetcherTest.kt
@@ -32,6 +32,7 @@
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.unit.dp
 import androidx.test.filters.LargeTest
+import com.google.common.truth.Truth
 import kotlinx.coroutines.runBlocking
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -343,6 +344,45 @@
         rule.runOnIdle { }
     }
 
+    @Test
+    fun snappingToOtherPositionWhilePrefetchIsScheduled() {
+        val composedItems = mutableListOf<Int>()
+        rule.setContent {
+            state = rememberLazyGridState()
+            LazyGrid(
+                1,
+                Modifier.mainAxisSize(itemsSizeDp * 1.5f),
+                state,
+            ) {
+                items(1000) {
+                    composedItems.add(it)
+                    Spacer(Modifier.mainAxisSize(itemsSizeDp))
+                }
+            }
+        }
+
+        rule.runOnIdle {
+            // now we have items 0 and 1 visible
+            runBlocking(AutoTestFrameClock()) {
+                // this will move the viewport so items 1 and 2 are visible
+                // and schedule a prefetching for 3
+                state.scrollBy(itemsSizePx.toFloat())
+                // then we move so that items 100 and 101 are visible.
+                // this should cancel the prefetch for 3
+                state.scrollToItem(100)
+            }
+        }
+
+        // wait a few frames to make sure prefetch happens if was scheduled
+        rule.waitForIdle()
+        rule.waitForIdle()
+        rule.waitForIdle()
+
+        rule.runOnIdle {
+            Truth.assertThat(composedItems).doesNotContain(3)
+        }
+    }
+
     private fun waitForPrefetch(index: Int) {
         rule.waitUntil {
             activeNodes.contains(index) && activeMeasuredNodes.contains(index)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridTest.kt
index 772b8f3..b11236d 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridTest.kt
@@ -29,10 +29,12 @@
 import androidx.compose.foundation.lazy.list.TestTouchSlop
 import androidx.compose.foundation.lazy.list.setContentWithTestViewConfiguration
 import androidx.compose.foundation.text.BasicText
+import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.runtime.setValue
 import androidx.compose.testutils.assertPixels
 import androidx.compose.ui.Modifier
@@ -74,6 +76,8 @@
 import com.google.common.truth.IntegerSubject
 import com.google.common.truth.Truth
 import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -1335,6 +1339,42 @@
         assertThat(bounds2.left).isEqualTo(0.dp)
         assertThat(bounds2.size).isEqualTo(DpSize(0.dp, 0.dp))
     }
+
+    @Test
+    fun itemsComposedInOrderDuringAnimatedScroll() {
+        // for the Paging use case it is important that during such long scrolls we do not
+        // accidentally compose an item from completely other part of the list as it will break
+        // the logic defining what page to load. this issue was happening right after the
+        // teleporting during the animated scrolling happens (for example we were on item 100
+        // and we immediately snap to item 400). the prefetching logic was not detecting such
+        // moves and were continuing prefetching item 101 even if it is not needed anymore.
+        val state = LazyGridState()
+        var previousItem = -1
+        // initialize lambda here so it is not recreated when items block is rerun causing
+        // extra recompositions
+        val itemContent: @Composable LazyGridItemScope.(index: Int) -> Unit = {
+            Truth.assertWithMessage("Item $it should be larger than $previousItem")
+                .that(it > previousItem).isTrue()
+            previousItem = it
+            BasicText("$it", Modifier.size(10.dp))
+        }
+        lateinit var scope: CoroutineScope
+        rule.setContent {
+            scope = rememberCoroutineScope()
+            LazyGrid(1, Modifier.size(30.dp), state = state) {
+                items(500, itemContent = itemContent)
+            }
+        }
+
+        var animationFinished by mutableStateOf(false)
+        rule.runOnIdle {
+            scope.launch {
+                state.animateScrollToItem(500)
+                animationFinished = true
+            }
+        }
+        rule.waitUntil(timeoutMillis = 10000) { animationFinished }
+    }
 }
 
 internal fun IntegerSubject.isEqualTo(expected: Int, tolerance: Int) {
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListPrefetcherTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListPrefetcherTest.kt
index d8f37a7..59e1c8c 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListPrefetcherTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListPrefetcherTest.kt
@@ -35,6 +35,7 @@
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.unit.dp
 import androidx.test.filters.LargeTest
+import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.runBlocking
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -374,6 +375,48 @@
         rule.runOnIdle { }
     }
 
+    @Test
+    fun snappingToOtherPositionWhilePrefetchIsScheduled() {
+        val composedItems = mutableListOf<Int>()
+        rule.setContent {
+            state = rememberLazyListState()
+            LazyColumnOrRow(
+                Modifier.mainAxisSize(itemsSizeDp * 1.5f),
+                state,
+            ) {
+                items(1000) {
+                    composedItems.add(it)
+                    Spacer(
+                        Modifier
+                            .mainAxisSize(itemsSizeDp)
+                            .then(fillParentMaxCrossAxis())
+                    )
+                }
+            }
+        }
+
+        rule.runOnIdle {
+            // now we have items 0 and 1 visible
+            runBlocking(AutoTestFrameClock()) {
+                // this will move the viewport so items 1 and 2 are visible
+                // and schedule a prefetching for 3
+                state.scrollBy(itemsSizePx.toFloat())
+                // then we move so that items 100 and 101 are visible.
+                // this should cancel the prefetch for 3
+                state.scrollToItem(100)
+            }
+        }
+
+        // wait a few frames to make sure prefetch happens if was scheduled
+        rule.waitForIdle()
+        rule.waitForIdle()
+        rule.waitForIdle()
+
+        rule.runOnIdle {
+            assertThat(composedItems).doesNotContain(3)
+        }
+    }
+
     private fun waitForPrefetch(index: Int) {
         rule.waitUntil {
             activeNodes.contains(index) && activeMeasuredNodes.contains(index)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListTest.kt
index b0f7d04..5c19318 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListTest.kt
@@ -34,6 +34,7 @@
 import androidx.compose.foundation.layout.requiredSizeIn
 import androidx.compose.foundation.layout.requiredWidth
 import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.lazy.LazyItemScope
 import androidx.compose.foundation.lazy.LazyListState
 import androidx.compose.foundation.lazy.items
 import androidx.compose.foundation.lazy.itemsIndexed
@@ -46,6 +47,7 @@
 import androidx.compose.runtime.SideEffect
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.runtime.setValue
 import androidx.compose.testutils.WithTouchSlop
 import androidx.compose.testutils.assertPixels
@@ -99,6 +101,8 @@
 import com.google.common.truth.Truth.assertWithMessage
 import java.util.concurrent.CountDownLatch
 import kotlin.math.abs
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -1982,6 +1986,42 @@
         }
     }
 
+    @Test
+    fun itemsComposedInOrderDuringAnimatedScroll() {
+        // for the Paging use case it is important that during such long scrolls we do not
+        // accidentally compose an item from completely other part of the list as it will break
+        // the logic defining what page to load. this issue was happening right after the
+        // teleporting during the animated scrolling happens (for example we were on item 100
+        // and we immediately snap to item 400). the prefetching logic was not detecting such
+        // moves and were continuing prefetching item 101 even if it is not needed anymore.
+        val state = LazyListState()
+        var previousItem = -1
+        // initialize lambda here so it is not recreated when items block is rerun causing
+        // extra recompositions
+        val itemContent: @Composable LazyItemScope.(index: Int) -> Unit = {
+            assertWithMessage("Item $it should be larger than $previousItem")
+                .that(it > previousItem).isTrue()
+            previousItem = it
+            BasicText("$it", Modifier.size(10.dp))
+        }
+        lateinit var scope: CoroutineScope
+        rule.setContent {
+            scope = rememberCoroutineScope()
+            LazyColumnOrRow(Modifier.size(30.dp), state = state) {
+                items(500, itemContent = itemContent)
+            }
+        }
+
+        var animationFinished by mutableStateOf(false)
+        rule.runOnIdle {
+            scope.launch {
+                state.animateScrollToItem(500)
+                animationFinished = true
+            }
+        }
+        rule.waitUntil(timeoutMillis = 10000) { animationFinished }
+    }
+
     // ********************* END OF TESTS *********************
     // Helper functions, etc. live below here
 
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Clickable.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Clickable.kt
index 0a72c93..c1b74c9 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Clickable.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Clickable.kt
@@ -136,17 +136,20 @@
     factory = {
         val onClickState = rememberUpdatedState(onClick)
         val pressedInteraction = remember { mutableStateOf<PressInteraction.Press?>(null) }
+        val currentKeyPressInteractions = remember { mutableMapOf<Key, PressInteraction.Press>() }
         if (enabled) {
-            PressedInteractionSourceDisposableEffect(interactionSource, pressedInteraction)
+            PressedInteractionSourceDisposableEffect(
+                interactionSource,
+                pressedInteraction,
+                currentKeyPressInteractions
+            )
         }
         val isRootInScrollableContainer = isComposeRootInScrollableContainer()
         val isClickableInScrollableContainer = remember { mutableStateOf(true) }
         val delayPressInteraction = rememberUpdatedState {
             isClickableInScrollableContainer.value || isRootInScrollableContainer()
         }
-
         val centreOffset = remember { mutableStateOf(Offset.Zero) }
-        val currentKeyPressInteractions = remember { mutableMapOf<Key, PressInteraction.Press>() }
 
         val gesture = Modifier.pointerInput(interactionSource, enabled) {
             centreOffset.value = size.center.toOffset()
@@ -308,6 +311,7 @@
         val hasLongClick = onLongClick != null
         val hasDoubleClick = onDoubleClick != null
         val pressedInteraction = remember { mutableStateOf<PressInteraction.Press?>(null) }
+        val currentKeyPressInteractions = remember { mutableMapOf<Key, PressInteraction.Press>() }
         if (enabled) {
             // Handles the case where a long click causes a null onLongClick lambda to be passed,
             // so we can cancel the existing press.
@@ -320,7 +324,11 @@
                     }
                 }
             }
-            PressedInteractionSourceDisposableEffect(interactionSource, pressedInteraction)
+            PressedInteractionSourceDisposableEffect(
+                interactionSource,
+                pressedInteraction,
+                currentKeyPressInteractions
+            )
         }
         val isRootInScrollableContainer = isComposeRootInScrollableContainer()
         val isClickableInScrollableContainer = remember { mutableStateOf(true) }
@@ -328,7 +336,6 @@
             isClickableInScrollableContainer.value || isRootInScrollableContainer()
         }
         val centreOffset = remember { mutableStateOf(Offset.Zero) }
-        val currentKeyPressInteractions = remember { mutableMapOf<Key, PressInteraction.Press>() }
 
         val gesture =
             Modifier.pointerInput(interactionSource, hasLongClick, hasDoubleClick, enabled) {
@@ -402,7 +409,8 @@
 @Composable
 internal fun PressedInteractionSourceDisposableEffect(
     interactionSource: MutableInteractionSource,
-    pressedInteraction: MutableState<PressInteraction.Press?>
+    pressedInteraction: MutableState<PressInteraction.Press?>,
+    currentKeyPressInteractions: MutableMap<Key, PressInteraction.Press>
 ) {
     DisposableEffect(interactionSource) {
         onDispose {
@@ -411,6 +419,10 @@
                 interactionSource.tryEmit(interaction)
                 pressedInteraction.value = null
             }
+            currentKeyPressInteractions.values.forEach {
+                interactionSource.tryEmit(PressInteraction.Cancel(it))
+            }
+            currentKeyPressInteractions.clear()
         }
     }
 }
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListState.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListState.kt
index fbd2efb..8923c07 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListState.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListState.kt
@@ -311,7 +311,6 @@
         }
         val info = layoutInfo
         if (info.visibleItemsInfo.isNotEmpty()) {
-            // check(isActive)
             val scrollingForward = delta < 0
             val indexToPrefetch = if (scrollingForward) {
                 info.visibleItemsInfo.last().index + 1
@@ -337,6 +336,17 @@
         }
     }
 
+    private fun cancelPrefetchIfVisibleItemsChanged(info: LazyListLayoutInfo) {
+        if (indexToPrefetch != -1 && info.visibleItemsInfo.isNotEmpty()) {
+            if (indexToPrefetch != info.visibleItemsInfo.first().index - 1 &&
+                indexToPrefetch != info.visibleItemsInfo.last().index + 1) {
+                indexToPrefetch = -1
+                currentPrefetchHandle?.cancel()
+                currentPrefetchHandle = null
+            }
+        }
+    }
+
     internal val prefetchState = LazyLayoutPrefetchState()
 
     /**
@@ -368,6 +378,8 @@
             result.firstVisibleItemScrollOffset != 0
 
         numMeasurePasses++
+
+        cancelPrefetchIfVisibleItemsChanged(result)
     }
 
     /**
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridState.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridState.kt
index fcd5bf4..bf80925 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridState.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridState.kt
@@ -318,7 +318,6 @@
         }
         val info = layoutInfo
         if (info.visibleItemsInfo.isNotEmpty()) {
-            // check(isActive)
             val scrollingForward = delta < 0
             val lineToPrefetch: Int
             val closestNextItemToPrefetch: Int
@@ -355,6 +354,22 @@
         }
     }
 
+    private fun cancelPrefetchIfVisibleItemsChanged(info: LazyGridLayoutInfo) {
+        if (lineToPrefetch != -1 && info.visibleItemsInfo.isNotEmpty()) {
+            val firstLine = info.visibleItemsInfo.first().let {
+                if (isVertical) it.row else it.column
+            }
+            val lastLine = info.visibleItemsInfo.last().let {
+                if (isVertical) it.row else it.column
+            }
+            if (lineToPrefetch != firstLine - 1 && lineToPrefetch != lastLine + 1) {
+                lineToPrefetch = -1
+                currentLinePrefetchHandles.forEach { it.cancel() }
+                currentLinePrefetchHandles.clear()
+            }
+        }
+    }
+
     internal val prefetchState = LazyLayoutPrefetchState()
 
     /**
@@ -386,6 +401,8 @@
             result.firstVisibleLineScrollOffset != 0
 
         numMeasurePasses++
+
+        cancelPrefetchIfVisibleItemsChanged(result)
     }
 
     /**
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/selection/Toggleable.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/selection/Toggleable.kt
index 9e399f2..80fcc7e 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/selection/Toggleable.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/selection/Toggleable.kt
@@ -259,7 +259,12 @@
     }
     val onClickState = rememberUpdatedState(onClick)
     if (enabled) {
-        PressedInteractionSourceDisposableEffect(interactionSource, pressedInteraction)
+        PressedInteractionSourceDisposableEffect(
+            interactionSource,
+            pressedInteraction,
+            // TODO(b/240261333): Replace empty map with map of keys to press interactions.
+            mutableMapOf()
+        )
     }
     val isRootInScrollableContainer = isComposeRootInScrollableContainer()
     val isToggleableInScrollableContainer = remember { mutableStateOf(true) }
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt
index 3bea368..a19a54e 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt
@@ -21,6 +21,7 @@
 import androidx.compose.foundation.interaction.Interaction
 import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.heightIn
 import androidx.compose.foundation.relocation.BringIntoViewRequester
 import androidx.compose.foundation.relocation.bringIntoViewRequester
 import androidx.compose.foundation.text.selection.LocalTextSelectionColors
@@ -105,6 +106,7 @@
 import androidx.compose.ui.text.input.VisualTransformation
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.Density
+import androidx.compose.ui.unit.dp
 import kotlin.math.max
 import kotlin.math.roundToInt
 import kotlinx.coroutines.launch
@@ -539,6 +541,9 @@
             // Modifiers applied directly to the internal input field implementation. In general,
             // these will most likely include draw, layout and IME related modifiers.
             val coreTextFieldModifier = Modifier
+                // min height is set for maxLines == 1 in order to prevent text cuts for single line
+                // TextFields
+                .heightIn(min = state.minHeightForSingleLineField)
                 .maxLinesHeight(maxLines, textStyle)
                 .textFieldScroll(
                     scrollerPosition,
@@ -574,6 +579,18 @@
                                 state.layoutResult = TextLayoutResultProxy(result)
                                 onTextLayout(result)
                             }
+
+                            // calculate the min height for single line text to prevent text cuts.
+                            // for single line text maxLines puts in max height constraint based on
+                            // constant characters therefore if the user enters a character that is
+                            // longer (i.e. emoji or a tall script) the text is cut
+                            state.minHeightForSingleLineField = with(density) {
+                                when (maxLines) {
+                                    1 -> result.getLineBottom(0).ceilToIntPx()
+                                    else -> 0
+                                }.toDp()
+                            }
+
                             return layout(
                                 width = width,
                                 height = height,
@@ -696,6 +713,11 @@
      */
     var hasFocus by mutableStateOf(false)
 
+    /**
+     * Set to a non-zero value for single line TextFields in order to prevent text cuts.
+     */
+    var minHeightForSingleLineField by mutableStateOf(0.dp)
+
     /** The last layout coordinates for the Text's layout, used by selection */
     var layoutCoordinates: LayoutCoordinates? = null
 
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/TextDelegate.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/TextDelegate.kt
index c34c80a..7a5b425 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/TextDelegate.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/TextDelegate.kt
@@ -38,6 +38,7 @@
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.constrain
 import kotlin.math.ceil
+import kotlin.math.roundToInt
 
 /**
  * An object that paints text onto a [Canvas].
@@ -106,14 +107,14 @@
      *
      * Valid only after [layout] has been called.
      */
-    val minIntrinsicWidth: Int get() = ceil(nonNullIntrinsics.minIntrinsicWidth).toInt()
+    val minIntrinsicWidth: Int get() = nonNullIntrinsics.minIntrinsicWidth.ceilToIntPx()
 
     /**
      * The width at which increasing the width of the text no longer decreases the height.
      *
      * Valid only after [layout] has been called.
      */
-    val maxIntrinsicWidth: Int get() = ceil(nonNullIntrinsics.maxIntrinsicWidth).toInt()
+    val maxIntrinsicWidth: Int get() = nonNullIntrinsics.maxIntrinsicWidth.ceilToIntPx()
 
     init {
         check(maxLines > 0)
@@ -230,8 +231,8 @@
                     ),
                     size = constraints.constrain(
                         IntSize(
-                            ceil(multiParagraph.width).toInt(),
-                            ceil(multiParagraph.height).toInt()
+                            multiParagraph.width.ceilToIntPx(),
+                            multiParagraph.height.ceilToIntPx()
                         )
                     )
                 )
@@ -245,8 +246,8 @@
 
         val size = constraints.constrain(
             IntSize(
-                ceil(multiParagraph.width).toInt(),
-                ceil(multiParagraph.height).toInt()
+                multiParagraph.width.ceilToIntPx(),
+                multiParagraph.height.ceilToIntPx()
             )
         )
 
@@ -290,4 +291,6 @@
             TextPainter.paint(canvas, textLayoutResult)
         }
     }
-}
\ No newline at end of file
+}
+
+internal fun Float.ceilToIntPx(): Int = ceil(this).roundToInt()
\ No newline at end of file
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/TextFieldDelegate.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/TextFieldDelegate.kt
index 2c3e59b..5ac1d98 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/TextFieldDelegate.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/TextFieldDelegate.kt
@@ -41,8 +41,6 @@
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
-import kotlin.math.ceil
-import kotlin.math.roundToInt
 import kotlin.jvm.JvmStatic
 
 // visible for testing
@@ -77,11 +75,9 @@
         fontFamilyResolver = fontFamilyResolver,
         constraints = Constraints()
     )
-    return IntSize(paragraph.minIntrinsicWidth.toIntPx(), paragraph.height.toIntPx())
+    return IntSize(paragraph.minIntrinsicWidth.ceilToIntPx(), paragraph.height.ceilToIntPx())
 }
 
-private fun Float.toIntPx(): Int = ceil(this).roundToInt()
-
 @OptIn(InternalFoundationTextApi::class)
 internal class TextFieldDelegate {
     companion object {
diff --git a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/animation/Animation.kt b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/animation/Animation.kt
index ed14cf8..ad3f3c3 100644
--- a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/animation/Animation.kt
+++ b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/animation/Animation.kt
@@ -711,12 +711,13 @@
                     coroutineScope {
                         while (true) {
                             // Detect a tap event and obtain its position.
-                            val position = awaitPointerEventScope {
-                                awaitFirstDown().position
-                            }
-                            launch {
-                                // Animate to the tap position.
-                                offset.animateTo(position)
+                            awaitPointerEventScope {
+                                val position = awaitFirstDown().position
+
+                                launch {
+                                    // Animate to the tap position.
+                                    offset.animateTo(position)
+                                }
                             }
                         }
                     }
@@ -740,12 +741,13 @@
             // Use suspend functions for touch events and the Animatable.
             coroutineScope {
                 while (true) {
-                    // Detect a touch down event.
-                    val pointerId = awaitPointerEventScope { awaitFirstDown().id }
                     val velocityTracker = VelocityTracker()
                     // Stop any ongoing animation.
                     offsetX.stop()
                     awaitPointerEventScope {
+                        // Detect a touch down event.
+                        val pointerId = awaitFirstDown().id
+
                         horizontalDrag(pointerId) { change ->
                             // Update the animation value with touch events.
                             launch {
diff --git a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/kotlin/Kotlin.kt b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/kotlin/Kotlin.kt
index 9fdf36e..16e2280 100644
--- a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/kotlin/Kotlin.kt
+++ b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/kotlin/Kotlin.kt
@@ -270,14 +270,15 @@
                 coroutineScope {
                     while (true) {
                         // Wait for the user to tap on the screen
-                        val offset = awaitPointerEventScope {
-                            awaitFirstDown().position
-                        }
-                        // Launch a new coroutine to asynchronously animate to where
-                        // the user tapped on the screen
-                        launch {
-                            // Animate to the pressed position
-                            animatedOffset.animateTo(offset)
+                        awaitPointerEventScope {
+                            val offset = awaitFirstDown().position
+
+                            // Launch a new coroutine to asynchronously animate to where
+                            // the user tapped on the screen
+                            launch {
+                                // Animate to the pressed position
+                                animatedOffset.animateTo(offset)
+                            }
                         }
                     }
                 }
diff --git a/compose/lint/common-test/src/main/java/androidx/compose/lint/test/Stubs.kt b/compose/lint/common-test/src/main/java/androidx/compose/lint/test/Stubs.kt
index ce22d0d..ed83abb 100644
--- a/compose/lint/common-test/src/main/java/androidx/compose/lint/test/Stubs.kt
+++ b/compose/lint/common-test/src/main/java/androidx/compose/lint/test/Stubs.kt
@@ -457,10 +457,12 @@
     val SnapshotState: TestFile = compiledStub(
         filename = "SnapshotState.kt",
         filepath = "androidx/compose/runtime",
-        checksum = 0xb92981ce,
+        checksum = 0x9907976f,
         source = """
         package androidx.compose.runtime
 
+        import kotlin.reflect.KProperty
+
         interface State<out T> {
             val value: T
         }
@@ -501,14 +503,25 @@
         interface ProduceStateScope<T> : MutableState<T> {
             suspend fun awaitDispose(onDispose: () -> Unit): Nothing
         }
+
+        inline operator fun <T> State<T>.getValue(thisObj: Any?, property: KProperty<*>): T = value
+
+        inline operator fun <T> MutableState<T>.setValue(
+            thisObj: Any?,
+            property: KProperty<*>,
+            value: T
+        ) {
+            this.value = value
+        }
         """,
         """
                 META-INF/main.kotlin_module:
-                H4sIAAAAAAAAAGNgYGBmYGBgBGJ2KM3AZc4lkZiXUpSfmVKhl5yfW5BfnKpX
-                VJpXkpmbKsQVlJqbmpuUWuRdIsQfnJdYUJyRXxJckliS6l3CpcYlg0ujXlp+
-                vhBbSGpxiXeJEoMWAwCARLcJeQAAAA==
+                H4sIAAAAAAAAAGNgYGBmYGBgBGJ2KM3Apc8ln5iXUpSfmVKhl5yfW5BfnKqX
+                mJeZm1iSmZ8HFClKFeJxBPMTk3JSvUu4zLkkMDQUleaVZOamCnEFpeam5ial
+                FnmXCPEH5yUWFGfklwSXJJaANCpg0ViaqVeal1kixOJS4F2ixKDFAAA4Rqdc
+                pAAAAA==
                 """,
-        """
+                """
                 androidx/compose/runtime/DerivedState.class:
                 H4sIAAAAAAAAAIVRTW/TQBB9Yzuxk4bghhbSAKVCQk044FJxQKSqhPgQkVIh
                 NVGElNM2XtJtHLvybqIe81s48CM4IKtHfhRinKIKERUuM/Nm37zdffPj57fv
@@ -521,24 +534,24 @@
                 Ukms2XoLBRBcNsDiZXkoMXqYI5QZr6FyjW/B/l3Z2F7mB3jE+Q0zqqxyewi7
                 A7+DdY6o5eFOBxvYHII07uLekLeHusaWRkPjvs5hSWNNo/ILV3pR08ICAAA=
                 """,
-        """
+                """
                 androidx/compose/runtime/DerivedStateImpl.class:
-                H4sIAAAAAAAAAI1R224SURRd58wwTEdKp5RerbdqLVDr1MYH0xKMlzQlQU0K
-                IcY+ncKkPQVmmjkD6SNf4Qf4BZpoTHwwpI9+lHHPQBoVE3mYfZt11tqXHz+/
-                fQfwGFsMeeE1A182L5yG3zn3lesEXS+UHdd56Qay5zaroQjdcue8nQRjqBVr
-                u5Uz0RNOW3gnzpvjM7cR7pXGS5WJeIu12l5pj8H++30SOsP6RBxJGAxGUXoy
-                LDHM58Z7ydcJkCOpKNBy+XoKJq5ZSCDFkOiJdtdlyIy/SyGNmSlw2Ax6eCoV
-                w+Zkc0X7orHMEzesD+mzufy4AKnn8tQXIdUVMlmkeOspzaLFv2YrLT9sS895
-                5YaiKUJBNd7paXRBFpkkA2tR6UJG2TZFzUcM7wb9tMWXuDXox46bhsmXBv2C
-                bg76NtsxM3qGH7Bt/nw6Y9jaCn8y6F9+MLitH66O0reX79NUsi1umyu6mbCN
-                Nd1M2nqksEOiNYaNydYRXbjqiXN16odx4WErZJiqyhNPhN2AhtZf+E1yMxXp
-                ua+7nWM3qInjdnwWvyHadRHIKB8VrarfDRruvoyS5cOhYl0qSX+feZ5PEtL3
-                FLbpdgnQSunj0THJb9CSOJahUWwium6OKiXynLxV+IrpwuYXzH6KcXmyBiGB
-                FApkF4YoZDAHxNHvrBZFWcyPOB3KopeJwmfMfvwnXWoIGNENSRaotnjV2O6o
-                MeO/TRlXTRlY+qMpbRRp2Iz9fTwgv0+IFdK+fgStjNUybpDFzcjcKuM27hyB
-                Kazh7hGmFOYU7imsK6RVlGYV5hUWFWZ+AQql9UpNBAAA
+                H4sIAAAAAAAAAI1R227TQBA9u3Yc16Spm6ZXyq1QmqQUl4oH1EZBXFQ1UgCp
+                iSJEn7aJ1W6T2JXXifqYr+AD+AKQQEg8oKiPfBRi7EQVECTy4Lkcn5kzs/Pj
+                57fvAB5jiyEvvGbgy+aF0/A7575ynaDrhbLjOi/dQPbcZjUUoVvunLeTYAy1
+                Ym23ciZ6wmkL78R5c3zmNsK90jhUmahvsVbbK+0x2H/XJ6EzrE/UIwmDwShK
+                T4Ylhvnc+Cz5OhFyJBUFWi5fT8HENQsJpBgSPdHuugyZ8boU0piZAofNoIen
+                UjFsTrZX9F60lnnihvVh+2wuPy5A6rk8zUVMdcVMFineekq7aPGv2UrLD9vS
+                c165oWiKUBDGOz2NLsgik2RgLYIuZJRtU9R8xPBu0E9bfIlbg37suGmYfGnQ
+                L+jmoG+zHTOjZ/gB2+bPpzOGra3wJ4P+5QeD2/rh6ih9e/k+TZBtcdtc0c2E
+                bazpZtLWI4UdEq0xbEz2HNGFq544V6d+GAMPWyHDVFWeeCLsBrS0/sJvkpup
+                SM993e0cu0FNHLfjs/gN0a6LQEb5CLSqfjdouPsySpYPh4p1qST9feZ5PklI
+                31PYptslQE9KH4+OSX6DHoljGRrFJqLr5ggpkefkrcJXTBc2v2D2U8zLkzWI
+                CaoukF0YspDBHBBHv3e1KMpiftTToSyqTBQ+Y/bjP9ulhoRRu2GTBcIWrwbb
+                HQ1m/Hco42ooA0t/DKWNIg2bsb+PB+T3ibFC2tePoJWxWsYNsrgZmVtl3Mad
+                IzCFNdw9wpTCnMI9hXWFtIrSrMK8wqLCzC+1g+gKTQQAAA==
                 """,
-        """
+                """
                 androidx/compose/runtime/MutableState.class:
                 H4sIAAAAAAAAAIVRwW7TQBB9s3ZiJw3BDS2kAUqFhEg44FJxQKSqhBCISImQ
                 miiqlNM2McGNs66y66hHfwsHPoIDsnrkoxDjFFWIqHCZmbf75s3umx8/v30H
@@ -551,24 +564,24 @@
                 rDRbL1AAwWEDBC/LRYnRwxyhzHgDlWt8C9bvysLuKj/AI85vmVFlldsjWB14
                 HWxyRC0PdzrYwvYIpHEX90a8PdQ1djQaGvd1DksaGxqVX2k2HnjCAgAA
                 """,
-        """
+                """
                 androidx/compose/runtime/MutableStateImpl.class:
-                H4sIAAAAAAAAAI1RXU8TQRQ9M7vdLrWUpZRPURRF2iIuEh8MNDVqQmxSNKFN
-                Y+RpaDcw0O6SzpTw2F/hD/AXaKIx8cE0PPqjjHfahqg1sQ97P86ee8+9c3/8
-                /PYdwBNsMuRE2GhHsnHp16PWeaQCv90JtWwF/n5Hi6NmUNFCB6XWeTMOxlAt
-                VHfKp+JC+E0RHvtvjk6Dut4tjkLlsfoWqtXd4i6D93d9HDbD2lg94nAYnIIM
-                pS4yzGZHZ8nViJAlKRNY2VwtCRc3EoghyRC7EM1OwJAerUsihakJcHgMtj6R
-                imFjvL3Me9Fa7nGga4P2mWxuVIDUszmai5jqmhkvULz5jHax+r+my2eRbsrQ
-                3w+0aAgtCOOtC4suyIyJM7Azgi6lybYoajxmeNfrphJ8gSd63b7jruPyhV43
-                b7u9rse23bSd5q/YFn8xmXY8a4k/7XWvPjjcsw+Wh+nbq/cpgrwE99wl2415
-                zqrtxj3bKGyTaJVhfbznMBeuhOJcnUS6Dzw60wwTFXkcCt1p09L2y6hBbqos
-                w+B1p3UUtKum2pwlqotmTbSlyYdgohJ12vVgT5pk8WCgWJNK0t/nYRiRhIxC
-                hS26XQz0pPRxc0zy6/RIHIuwKHZhrpslpEiek0/kv2Iyv/EF05/6vBxZh5hA
-                BnmycwMW0pgB+tHvXRMUZTA77OlTZipj+c+Y/vjPdskBYdhu0GSOsPnrwXaG
-                gzn/Hcq5HsrBwh9DWcPIwkbfP8BD8nvEWCLtm4ewSlgu4RZZ3DZmpYQ7uHsI
-                prCKe4eYUJhRuK+wppBSJs0ozCrMK0z9AszbTrVNBAAA
+                H4sIAAAAAAAAAI1RXU8TQRQ9M7vdLrWUpXwjfqFIW8RF4oOBpkZNjE2KJrRp
+                jDwN7QYG2l3SmRIe+yv8Af4CTTQmPpiGR3+U8c62IWpN7MPej7Pn3nPv3B8/
+                v30H8BibDHkRNjuRbF74jah9FqnA73RDLduBv9fV4rAVVLXQQbl91kqCMdSK
+                tZ3KiTgXfkuER/6bw5OgoXdLo1BlrL7FWm23tMvg/V2fhM2wNlaPJBwGpyhD
+                qUsMc7nRWfJ1IuRIygRWLl9Pw8W1FBJIMyTORasbMGRH69LIYGoCHB6DrY+l
+                YtgYby/zXrSWexTo+qD9bC4/KkDquTzNRUx1xUwWKd58SrtY8a/pymmkWzL0
+                9wItmkILwnj73KILMmOSDOyUoAtpsi2Kmo8Y3vV7mRRf5Kl+L3bcdVy+2O8V
+                bLff89i2m7Wz/BXb4s8ns45nLfMn/d7lB4d79v7KMH17+T5DkJfinrtsuwnP
+                WbXdpGcbhW0SrTGsj/cc5sLVUJyp40jHwMNTzTBRlUeh0N0OLW2/iJrkpioy
+                DF5324dBp2aqzVmihmjVRUeafAimqlG30wheSpMs7Q8U61JJ+vssDCOSkFGo
+                sEW3S4CelD5ujkl+nR6JYwkWxS7MdXOElMhz8qnCV0wWNr5g+lPMy5N1iAnM
+                oxDbmIUsZoA4+r1riqJZzA17+pSZykThM6Y//rNdekAYths0mSds4WqwneFg
+                zn+Hcq6GcrD4x1DWMLKwEfv7eED+JTGWSfv6AawyVsq4QRY3jblVxm3cOQBT
+                WMXdA0wozCjcU1hTyCiTzirMKSwoTP0Cc/1T9U0EAAA=
                 """,
-        """
+                """
                 androidx/compose/runtime/ProduceStateScope.class:
                 H4sIAAAAAAAAAI1T328SQRCeXSh3INUr/gJarVqNSox3Ep+EEI2GFEO1EfSF
                 p+U4cOHYJbd72Efin+KDf4PxwRB8848yzkFpY7G2DzezM/PNN/vju1+/v/8A
@@ -584,82 +597,90 @@
                 opCCbfQJrF5Afwu/dYpBOoLO7RIYg9tzfwPuoK9idR1JL7YgVoNLNbDQwkZk
                 MjW4DFdaQBRchWstSCq4riCrIKfAVJBXsKlga75I/gEnsHRUOwQAAA==
                 """,
-        """
+                """
                 androidx/compose/runtime/SnapshotStateKt$produceState$1.class:
-                H4sIAAAAAAAAAI1T3U4TURD+znb7w7rQUgEBFVGLbouyQEzUFEgMkaSxakJJ
-                Y8LVsruUA+1Zsnu24bJP4QP4BJpoTLwwDZc+lHHOtjEoCF7s/GXmm2/OzP74
-                +e07gCdYZXjqCC8MuHdiu0HnOIh8O4yF5B3fbgjnODoIZEM60n8lS8dh4MWu
-                n7illSwYFdcPna5jtx3Rst/uHfqurNb/jacK13Z2qhtVhsLfhVnoDHOXF2eR
-                YcisccHlBsOkdb57uUkJFvVQRsoqN03kcM1AGiZDuuu0Y5+heL7OxBjyI9BQ
-                YNDlAY8Ynl8yyaUvQ9ONlhRH7rSbg465li+H5oRVPt+euFllYk2cEzlePwpk
-                mwv7tS8dz5EOxbRON0VLY0pkGdgRhU648pbJ8lYY1vu9UaPfM7RpzdByeoX1
-                ezljut9bzRX1ovas31tm21MFbVaZ707f66cfMoahFdKzei5V0BUI3cP8FQsk
-                Jtb/PkwWJQbz7Osw7F+wtQsiw/kPux17Pxau5IGI7K2htVotX8XSxAM8pDP7
-                g9HSkWQYafCWcGQcEhl9M/BI5etc+G/izp4f7jh77eREAldtL+TKHwbNmhB+
-                uNl2osinA8m/FG47iLho0ZYOAo/BaARx6PpbXGXPbA8INXnEqfyFEAFxUHNg
-                hQ4tDQb6h1BUl0e6QovUME0f6GTVKS6StUVaRYzKV4xWFr9g/FOS94jkGNTy
-                S9CxQPklPCZvapBNqNeBxJo4g26QNZnkKGybPEY6XfmM8Y+/YTNJcCGBMwcJ
-                Q7gByA3ylxJoljQDZggKCQ1rmJPCcqLLNCqwTpkzVDW7i1QNN2u4RRK3lZir
-                4Q7md8Ei3MW9XWQiZd6PMBZhMsJUhPwvI18g0K0EAAA=
+                H4sIAAAAAAAAAI1T3U4TURD+znb7w1poqYCAf6gVtkVZICZqCiSGSNJYNaGk
+                MeFq2V3Kge1Zsnu24bJP4QP4BJpoTLwwDZc+lHHOtjEoCF7s/GXmm2/OzP74
+                +e07gCdYZXhqCzcMuHtiOUHnOIg8K4yF5B3Pagr7ODoIZFPa0nsly8dh4MaO
+                l7jllSwYFTcO7a5t+bZoW2/3Dj1H1hr/xlOFazs7tY0aQ/Hvwix0hjuXF2eR
+                YcisccHlBsOkeb57pUUJJvVQRsqstPLI4ZqBNPIM6a7txx5D6XxdHmMojEBD
+                kUGXBzxieH7JJJe+DE03WlYcue23Bh1zbU8OzQmzcr49cTMrxJo4J3K8cRRI
+                nwvrtSdt15Y2xbRON0VLY0pkGdgRhU648pbJclcY1vu9UaPfM7RpzdByepX1
+                ezljut9bzZX0kvas31tm21NFbVaZ707f66cfMoahFdOzei5V1BUI3cPcFQsk
+                Jub/PkwWZYb82ddh2L9gaxdEhvMfdjvWfiwcyQMRWVtDa7VWuYplHvNYoDP7
+                g9HSkWQYafK2sGUcEhl9M3BJFRpceG/izp4X7th7fnIigaO2F3LlD4P5uhBe
+                uOnbUeTRgRReCscPIi7atKWDwGUwmkEcOt4WV9kz2wNCLR5xKn8hREAc1BxY
+                oUNLg4H+IZTU5ZGu0iI1TNMHOll1iotkbZFWEaP6FaPVxS8Y/5TkPSI5BrX8
+                eehYoPx5PCZvapBNqNeBxJo4g26QNZnkKGyLPEY6Xf2M8Y+/YTNJcCGByw8S
+                hnADkBvkLyXQLGkGzBAUiMZDmMOcFJYTXaFRgXXKnKGq2V2k6rhZxy2SuK3E
+                nTruYm4XLMI93N9FJlLmgwhjESYjTEUo/AJAwj8ArQQAAA==
                 """,
-        """
+                """
                 androidx/compose/runtime/SnapshotStateKt.class:
-                H4sIAAAAAAAAAKVWa1PbRhQ9KxvLKASEedq0hCakvLGhebSxS5tCHi7Pxo5b
-                StNU2IIIbInRykzyjelP6S/ot2TKTMeTfutP6Y/o9K4sgzDYmNQz+z737N6r
-                u2f9979//AngDn5hGNfMgm0ZhdfxvFU6sLget8umY5T0eMbUDvgry8k4mqMv
-                OzIYg7qnHWrxombuxte39/Q8zQYYOgu6bRzqBRe5vsOQHF+pByYnVhrutOQz
-                TzI8SWUfnLdfGM9mWyVJEXSBmG6tWPZufE93tm3NMHlcM02L1g2L+muWs1Yu
-                Fgk10RJnunRQlNHOEEoZpuEsMPRd5GWuA9fQoUDBdYbbLTHL6GJoO9SKZZ0h
-                cp6TAlwqO9p2Uf/QAK/6zD84wH6SWoAbh86ProauX8FA86D4bWREKRh+v1cM
-                7gjfZ8ebHPJM0goLOmS6gbtXoak5PNm6iYxhhsB4NSNGFNzAJwzdfo9WtQPh
-                0EzLJyEDOsPL1PIF/uT+l4/EnMouJ7O5Sz5rvZGMTxWMCc86DmyrUM5XPWPY
-                uSBDL5jZt5yiYcb3DkvxnbKZr17Nx15vvlk61pL5n8bJfOX9UjON99vwuZfJ
-                WwfeHZipUeYt2yo7hqnz+KJFJmbZFZrUCeA5qQYZTF1w2Ev9rKXf7ca4RXcs
-                cotwo82Ej1TPg4W9b2aHMcsw7AuOYTq6bWrFeNp0bGIw8lxGgjQv/0rP73va
-                uaHZWkknIMNY88+dESS7rjrO4zMFc7jDcL/Vp2fUn1qjczLuKbgvpGS4edRk
-                fEF5KdTa0Iq5qr4G9/U3cwwjl2UeXdUaZFV3tILmaDQnlQ4D9HIyUckMbF90
-                JJp/bYgeBUgqzDF2t3K0pFSOFGlQUqRw0G1PhgGvlU5blRZr67WiSp5Z7AYt
-                x8KRYER6KiXYzWC4cqRK8yE1EKOJ97+FJDUYi6htJ5CQB4kNq3Ks051sd2sl
-                Ea4utVPDVIWYr51YdVxEfD32Qu08gXSdQlQBmQ+r3bHgIEtE5mfUnthEmEWU
-                SA3cV+snBhL9kVDExSV6BW148Kn81ztWOXL3iL7/VaIQhaMiePOUSi3/UWBZ
-                humrvQVTV1Jatkwl1/RIdU/ryOWCBfHIe6nlz7cmnpzTnqQvgxsID0GGa5BH
-                rx2d7rBl1vbLvnE51DM+z+47dD8WrQJdk64VIlwrl7Z1Oyv8E2e28uIW2YYY
-                e5PtGWPX1JyyTf2hZ9XTps1Dgxu0/PBUdEiR6ldPxOMMrCNtmrq9WNQ412mo
-                ZKyyndcfG2KzqEeRO0dPeiIhCPFrQ5RKCAF8T6N71FLE0XEMZXPyLTorUH8X
-                VxY/UB1y1zqxKRBVHLoRofZHFyNjy0OFqY2iB73neQcE72AFsXre/oa8fXW8
-                Q/jI4x2hVfELH+PG5lvcFJzMxznoMXxcx3ALo+cZxohhvJ5hyGO4XccwgUmK
-                oGDYICYhZpHpSPwd7h7jvvDw8woenPUwRHtuuju6aCRdD0UvRYW5vVl8SRbV
-                HafcHRXqTYvzUfmJSperp5hxazEZwAsXRu+DSxfFz655Di+pfUPzC/SBv9pC
-                II2v03hINb5JYxFLaTzC4y0wjid4uoUYRxtHmuNbjm6OEMcQxzLHLY4VjlWO
-                NY4ejnWOXo4Jjg2OJEeK4zuOWY5nHBmOrDt8zjH5HwVy1ew1DQAA
+                H4sIAAAAAAAAAKVYW1PbVhD+jm1sIxwQBgKIBEjiBDAXG5ombXBJU3LB5drg
+                0KY0TYQtQGBLro5MkzemD33sj+gvaJ+SNDMdJn3rT+mP6HSPLBvb2AZSz0jn
+                tvudb/fs2dX473//+BPATRwwjKpGxjL1zMtY2szlTa7FrIJh6zkttm6oeb5r
+                2uu2amuLdgCMQd5TD9RYVjV2Yqtbe1qaZr0M7RnN0g+0jCO5us0wO7pUKzg7
+                ttRwp/sV6rMMjxKpOyf150ZTqbOCJEh0jpCuLZnWTmxPs7csVTd4TDUMk9Z1
+                k/orpr1SyGZJauxMmMlcPhtAK4M/oRu6PcfQU8/KjRDaEJIg4QLD9TMhB9DB
+                0HKgZgsaQ/gkJjk4V7DVraz2oQ5erlD/YAdXgpQc3Nh1ldJF112U0NvcKZU6
+                AfSTMyrtXtK5LWyfGm1CsipohQaRTDYw9zwwJYOjZ1cJYJDBO1qMiGEJQ7jC
+                0Flp0bKaFwZNnpkJKRCH54nFOvZs/C8bCTmRWpxNbZxyrLVKAdyQMCIsC+Ut
+                M1NIFy1j2K4ToXVm9k07qxuxvYNcbLtgpItX86Hbm2kWjqVg/qdxMJ97v8Rk
+                4/3WKsxbT5t59w5MliDTpmUWbN3QeGzeJBWj4CSaRFngCWUNUhivQ/ZUO0vh
+                d72x3LwzFrFFcpFmiY+ynisWdM/MCmKKYbDCObpha5ahZmNJw7YIQU/zAOKU
+                89K7WnrfzZ1rqqXmNBJkGGl+3OsCZMfJjjP4SMI0bjLcPmvpiVSGVmQ6gFsS
+                botUMtjcawF8SnEpsrWuZjeK+dW3r72aZhg+LfLIOTua7Sq9GD0tDhuHmqVt
+                Z2kcW6QAymuW/YoOu06KzzcI49MCY9yJjHNsn4hSuJGSKGT2rs7ngrhXjARn
+                OYh5hu7ROhxDmMODNtzBQ4YLET2yHTl2EEtSkYoIuIrJ4dMvb0CoED6D0thf
+                xI6XQXebeKSqzJ3nROrVcYYfz30kJ0vkOQ9GVGC6IysItUHBVyVHH5vvOvl4
+                YuTMVb+ztPOyZqsZ1VZpzpM78NKXIBOvAB3jvuh4aP6lLnp04T2ZacbeHB2u
+                SEeHkqfPI3mCPqctD71u6zluZVosrZce2VOlTnrKEMkpwbAv7FnwxNlVX/Do
+                UPbM+GWvQhPvf/V7ZJ8SllvKIn5XRBmUA0q7M9nqvKV4sLjUSg2TJUJuK2uF
+                6gFfUJ7J7WWRjmMRWYjMBOVOxdfH4uGZSblLGQuysBQuCfeU+vHe+MWwP+zI
+                xbsFbLBvIfDXG3Z06OzRr9yUFQHnokfL2xH+gIsvyZcUf5i8Eb+88P5nyVEc
+                VBLykEL4tYqh+ooly8oAw+9/8pCbg/3i/GaaBknNtzdLMUyc7/Nq/FwfL2yR
+                HrpcEJ+6bkBWZt0mm5+owLMVebxB+SWRwZLIg5e2RpXMNEr7pV45GHIVzal9
+                m6rEvJmhy9WxRIArhdyWZqXEVRKczbSoJZYuxu5k67q+Y6h2waL+wOMi26Rx
+                oHOdlu8dl16qy7Wr5RJaJRZKGoZmzWdVzjUaSutmwUprD3WxWb8LsXECnqqq
+                Bz6IH309owV+eJGj0S1qyeMIvYP0NPoa7UeQfxMXHQa9/c6aDFNIFOXQiTC1
+                eUcmgB9cqSC1/ehC90ncXoHbdwSlFrevIW5PDe4ALrm4w7QqfsF3GHr6GlcF
+                JqvAVFyEyzUI1xA5iTBCCKO1CJddhOs1CGOIkgcFwhohiRQYngjH3uDjd7gt
+                LPzkCHeqLfTjhmPhcFEas46Fopeghzm9KXxGGsUdx50dJepNCH70WPR0OFkY
+                k867SGUOd11jnrnH2hMNf0FUJsL36e2di77FI4ZqNu2IOWyEFe10cgtIOrx6
+                8CUWHV49WHJ59WAey2Venzs8urzu/tVcVrDqcsmRaAu1vVVcbvmik2/x2IPf
+                y2yEhR0UIRfpS810/mxooXEQ68RIGNOLFJ44jHrLjHpdRqInIsXrcltzuPX4
+                6nADCXFnO/qedMb9sB2lLArU/kLzG7T115vwJvFNEk/pjW+T2MR3SfLs95tg
+                HM/xYhNXOFo4VI4tjk4OP8cAR5rjGkeGQ+PY5ujieMLRzTHGscgxy5Hg2OGY
+                4tjl0Dn2nOE+R5RjjmOJY55jmeMuxwrH6n8UZ3xFehEAAA==
                 """,
-        """
+                """
                 androidx/compose/runtime/SnapshotStateList.class:
-                H4sIAAAAAAAAAI1QTUsjQRB93ZNkdIzr+LmJ6+5e3SCOiiCoCO6CEBhd2IRc
-                cupkGm2TdMt0RzzOb/EfeBI8yODRHyXWxL3oXrYPr6peP6pe1fPLwyOAXXxn
-                aAidpEYlN1HfjK6MlVE61k6NZNTS4speGNdywslYWeeDMawftvfjS3EtoqHQ
-                59Hv3qXsu4OjfymG8CPno8RQOVRauSMGb/1Hp4oK/ABlTDGU3IWyDBvx/zui
-                IfPxwLih0tGpdCIRThDHR9ce7ccK8BnYgKgbVVRblCXbtEWeVQNe40GeBTwk
-                yLNanjVKU3kWsh2+xX+Wn24rPPQK/Q61aDPqh/Cdg82BI9e/TCIZ5mKl5dl4
-                1JNpW/SGxCzEpi+GHZGqov5LTrfUuRZunFIetMw47csTVXzU/7zt2FFWkfJY
-                a0MjlNEW2+B0oOKRj+JehHWqokkNlBv3mL6jhGOVsDIh6/hCWH0TIMAMRQ9r
-                E5WHr5NYwzeKe6Spkma2C6+JT03MESIsYL6JBSx2wSyWsNxFyWLGYsXis4X/
-                Crt4fDJFAgAA
+                H4sIAAAAAAAAAI1QXUsbQRQ9M5tkdY26ftTGj9pXG8Q1UhCsCFYoBLYWmpCX
+                PE2yg45JZmRnInnc3+I/6FOhD7L46I8S70ZftC/OwLn3nDncj3l4/HcH4Cs+
+                M9SFTlKjkknUN6NrY2WUjrVTIxm1tLi2l8a1nHAyVtb5YAw7x+2j+ErciGgo
+                9EX0q3cl++7byf8SQ/hW81FiqBwrrdwJg7fzpVNFBX6AMmYYSu5SWYbd+P0T
+                UZOleGDcUOnop3QiEU6Qxkc3Hu3HCvAZ2ICkiSrYPmVJg7bIs2rAazzIs4CH
+                BHlWy7N6aSbPQnbA9/n38v1thYde4T+gEm1G9RC+mmBv4GjqM5NIhsVYaXk+
+                HvVk2ha9ISnLsemLYUekquAv4mxLXWjhxinlQcuM0778oYqH9d/PO3aUVeQ8
+                1dpQC2W0RQOcPqg4NEfxX4TrxKIpB8r1v5j9QwnHBmFlKm7SBarPBgSYo+hh
+                a+ry8Gkaa9imeEieKnnmu/CaWGhikRBhAUtNLGOlC2axig9dlCzmLNYsPlr4
+                TxVS9+dFAgAA
                 """,
-        """
+                """
                 androidx/compose/runtime/SnapshotStateMap.class:
-                H4sIAAAAAAAAAI1QTW8TMRB9402y6Ta025aPlK9ypEVi24pTiSoBElLULUgE
-                7SUnJ2u1bhI7WjtVj/tb+g84IXFAK478KMRsyoWPA7b8Zub5eWY83398+Qrg
-                BZ4QdqXJC6vzq2RsZ3PrVFIsjNczlQyMnLtz6wdeenUq5yGI0OudHKUX8lIm
-                U2nOkvejCzX2L7N/cMd/U4T4Ty5Eg9DqaaP9MSF4upt10EIYoYk2oeHPtSM8
-                S/+7Sa6xkU6sn2qTnCovc+klc2J2GfCPqYaQQBOmrnQd7bOXHxCSqlyLRFdE
-                os0nrsqoKrtVuddoV2VMbCgWh2I/eN38dt0ScaN+dsiZTvhkxKkR/9bL84nn
-                /t/YXBHWU23Uu8VspIqPcjRlZjO1YznNZKHr+Be5MtBnRvpFwX40sItirN7q
-                +mL7w81vM+00K18ZY7mEtsbhAIJHVS/uo54c432OkmUMNPc+Y+UTOwIPGFtL
-                8iFvoHMjQIRVtgEeLVUBHi/tNnbYHrGmw5pbQwR9rPWxzoi4ho0+NrE1BDnc
-                xp0hmg6rDncd7jl0HcKfilH6lmUCAAA=
+                H4sIAAAAAAAAAI1QTU8bMRB99ibZsKSwQKGBftBjoVIXUE80QqKVkCKWVmqq
+                veTkZC0wSexo7SCO+1v4Bz1V6qFa9ciPqjoOvbTlgCW/N/P8bM/M7a/vPwC8
+                xUuGHaHzwqj8OhmaydRYmRQz7dREJj0tpvbCuJ4TTp6JaQjG0OmcHqaX4kok
+                Y6HPk0+DSzl077J7tKP/JYb4Xy1EjaHRUVq5I4bg1U7WQgNhhDqaDDV3oSzD
+                6/TBRdIfK+nIuLHSyZl0IhdOkMYnVwF1zDyEDGxE0rXy2R5F+T5DUpVLEW/z
+                iDdpx1UZVWW7KndrzaqMGRGL+QHfC97Xf940eFzz1w7opVPaGaOnEf9Vy5uR
+                o/o/mFwyLKdKy4+zyUAWX8RgTMpqaoZinIlC+fyPuNBT51q4WUFx1DOzYihP
+                lD/Y/HzXbaasIuex1oa+UEZb7IPTqPyiOvzkCLcoS+Y5UN/9hoWvFHA8JWzM
+                xRd4Rti6MyDCInGA53NXQKeeN7FNfEieFnke9RF0sdTFMiFiDytdrGKtD2bx
+                GOt91C0WLTYsnli0LcLftbcdUGUCAAA=
                 """,
-        """
+                """
                 androidx/compose/runtime/State.class:
                 H4sIAAAAAAAAAH1QTUvDQBB9k7RpjF/xu1YQj9WDUfEgfoEXoVARbBGhp7Vd
                 69p0I91t8Zjf4sEf4UGCR3+UOFFPKu7hzbw3O7Nv5+39+QXALlYIq0J3Bonq
@@ -672,6 +693,174 @@
                 waLJaekDuDg1Tf4BAAA=
                 """
     )
+
+    val Dp: TestFile = compiledStub(
+        filename = "Dp.kt",
+        filepath = "androidx/compose/ui/unit",
+        checksum = 0x9e27930c,
+        """
+            package androidx.compose.ui.unit
+
+            @kotlin.jvm.JvmInline
+            value class Dp(val value: Float) : Comparable<Dp> {
+                override operator fun compareTo(other: Dp) = value.compareTo(other.value)
+            }
+
+            inline val Int.dp: Dp get() = Dp(value = this.toFloat())
+        """,
+        """
+                META-INF/main.kotlin_module:
+                H4sIAAAAAAAAAGNgYGBmYGBgBGJ2KM3ApcAlkZiXUpSfmVKhl5yfW5BfnKpX
+                mqlXmpdZIsTiUuBdosSgxQAA2sByTDoAAAA=
+                """,
+        """
+                androidx/compose/ui/unit/Dp.class:
+                H4sIAAAAAAAAAH1V3VMbVRT/3c3XZlnKkrZA6KektgGkCVihSsG2UFoQWi2I
+                /dDWJdnCQrKbZjdMxyfGF/0L+uCbPnc6OqOUsTMO0jf/IJ8cx3M2NyENkZnk
+                fpx7Pn7nd869+9e/v/8B4BI2BU6YTr7s2vlnmZxbLLmelanYmYpj+5npUgxC
+                4Ob8urlpZgqms5q5s7Ju5fzxBskUGZllc6VgXZk/xNP45LiA0ewohrDAsVbO
+                YogKqKuWv2wWKpZAKN0/IxDZrO7EjA4NbXEo0AXC/prtCZw6NL5AZy7wbi25
+                Q9nRy9n1x5fIYXpmpn9WoGMfw0zBNQlYQiAmDXQcQ6eGozhOsczyapbsXH/N
+                KtM2TeY6DD5X0CvQ7ruLftl2VofsYqkgcJwUGtiqnhGY7mbZ9YpdyFvlGE4L
+                RK/YhHoyyHpZx1m8o+EM+gTi06V0QMGEinOkZ5ZKlpMXGEofjHEwrAwxruM8
+                LrDHtMDJVvgaFQdYcZAVpw5XHGLFi1S0GgNU2XSL3HVkMcy6IzpO4hTzRoVo
+                XzO9tSk3b0ne1NpexxiSTP7lgA4ie5T3CojENutpxSx40qQrPXOwU/sfCGgV
+                Z8V9Fmjp+Bhxtr5K5Q2YvPOEcb5FQtABhPM6pjjwtMDpDdcv2E5mfbOYsR3f
+                KjtmITPrcEKenfNioN5UqVNuMB6BC+lDr0wdmo5bmNVwE3MCiYMKVOBqgtxG
+                re0nMMnZ3Kl24rKGCLeJkXMdzy9Xcr5bluTwMYOsESFwlpM+7MZw433G3r+g
+                C0cPhd7AdlZeHWJXKQ3zMELdWb9g/wM4uClB8b6mcs03kDq3WZx1aGPxPa0d
+                LFi+mTd9k2RKcTNED5bgIUZwNkj0zOYdIVHyhODv3a2LmtKjaIrRoe1u0RTT
+                FDVCs0pzmOY2+vOBGqXFEZoVde+7qz27WyNqIpxQsrtbWXE9kYgaSq+SDb3Z
+                Ebtbez9Fw2rYiMydNlQSxkeihtbLmrf2niukIfa12gx9rtdop9MjIypphXtE
+                tuPWm+eh4NQwOucMI8E+SCYC2VHjGMmOk6yrLus2eu52VgHQXqVEesNq1Ijt
+                fS+UaqxvFcpDTWoRde/H01nB2RP1oHpMly5u+FRpvjX0os0Tm7crxRWrvMQP
+                KneYmzMLy2bZ5r0Uti/6Zm5jwSzJfXzRXnVMv1KmtbboVso5a8bmg+TdiuPb
+                RWvZ9mzSvOY4rm/6NjUahqmgEUJAXwsk+F2msnSgEyriJHFpl6GZQCIy8Cva
+                X9JCQYnGaFWIpzTqcn2ETEGG9KRK449IW2HtvtQOul40WUcD666qBrqD4Lzq
+                oRUHpYaTfiaknziDIFcnDnMVl0B4VXUV59dKuhojHbZIvsaZ+6+QSry7jf6+
+                bbxn9G8js433f+ZmbcgrKZEJfvykk/OSFJXx7OCDZhu1zsVoPYdUjci+HXz4
+                oskgUg8yRqS1DHKl2WY/CD0l0uYeZcdXKzX4J5QfEAm9GNyFso1rNyjqjXP0
+                38EngTxcpbDMtxJK/B90Kw0cpurlSBGH8wGSBdyWUYYbyzG4g0/3obUqAZkb
+                Cr9I0nxSmmsDr3B3IPUb2n9p2VdVX1rdlxY0KJdzEUvS11lJktL3sokepdrO
+                RhKfY1lqXyBy+Cz+Gsr9vle411y4OO4HRp38sWkuXO0GiBZdn8QDPJQGl2R+
+                OnOeqnLezJCOLyXBOr7irIxreITH0sPVmocBWb5tmM0tH37LW40jXZYrBC/Q
+                D8EPZgcVmr+h1QrNOcKdf4jQLKxZPKERqzyszcLGOqXhYQOFh0h66PBQ9KAF
+                46KHJQ+qh7iHR4Gkx4PhodPDQrCl34SHSQ9jHkY9Ns8GwpMeTv0H1Ho+rbgK
+                AAA=
+                """,
+        """
+                androidx/compose/ui/unit/DpKt.class:
+                H4sIAAAAAAAAAH1Qz0/UQBT+ZtrtlopQUJBdXH9gD0CiXYwHg1yMm00aV02U
+                cNnTbFtx2LbTtFPCccOBP8Q/wDPxYDZw848yviGcmcP3vve9N9/Me3///f4D
+                4A0Chp4okkrJ5CyMVV6qOg0bGTaF1OGg/KjbYAz+iTgVYSaK4/DL5CSNSbUY
+                WsepHpQM9na0M2TYvMOnjTa5xKqoddXEWlUvZV5m5upwZ7iIBXgeXNxj8AIZ
+                fA9ujVnE4Ab6h6yDhNKV0VTpTBbhp1SLRGjxjoHnpxYNwgzQE2xqCCf9TBrW
+                J5bsMezPZ0vefObxDe5x3/W4y7c6/nzW5X22y/v87fUFv75k89nVT8fp2q7l
+                21fn3Ka+jnF4bYB+0BvdMSP9BrSUQflqqmmyDypJGZZHskg/N/kkrQ7FJCNl
+                daRikR2JSpr8VvS+qaaK06E0SedrU2iZp0eyllR9XxRKCy1pedgDhw1zqA0t
+                OBSfUnZAkVN0rYPuxSUWf5kt4Bmhc1NZwHPi68Q4KfexRCp1Y5mY6dy6wSd4
+                QXGfaj55r4xhRViN8IAQDyOsYT3CI2yMwWp6vTtGq8Zmjcc1erXhzn8XAJq+
+                VwIAAA==
+                """
+    )
+
+    val Animatable: TestFile = compiledStub(
+        filename = "Animatable.kt",
+        filepath = "androidx/compose/animation/core",
+        checksum = 0x68ff47da,
+        """
+            package androidx.compose.animation.core
+
+            import androidx.compose.runtime.mutableStateOf
+
+            class Animatable<T, V>(
+                initialValue: T,
+                val typeConverter: V? = null
+            ){
+                private var internalState = mutableStateOf(initialValue)
+                val value: T
+                    get() = internalState.value
+            }
+
+            fun Animatable(initialValue: Float): Animatable<Float, Any> = Animatable(initialValue)
+        """,
+        """
+                META-INF/main.kotlin_module:
+                H4sIAAAAAAAAAGNgYGBmYGBgBGJ2KM3Apc8ln5iXUpSfmVKhl5yfW5BfnKqX
+                mJeZm1iSmZ8HFClKFeJxBPMTk3JSvUu4tLkkMDQUleaVZOamCvEH5yUWFGfk
+                lwSXJJYAFSsxaDEAAKFdFhZ2AAAA
+                """,
+        """
+                androidx/compose/animation/core/Animatable.class:
+                H4sIAAAAAAAAAI1VXW8aRxQ9syywrAEv1EkwidvEcRrATtZ20tYNlNZxGgkF
+                ksimqJLzsoaNswZ2rZ0BpS8V6m/oS1/7C1qpUdo+VCiP/VFR7yzEMYZUfti5
+                M/fj3DP33oF/3/79D4C7+JahYLkt33NaL82m1z32uG1artO1hOO5pPFtczs4
+                WgcdOwrGUCrV71WPrL5ldiz30HxycGQ3RbExQ1eeVjEYZ3VRqAyRkuM6osxw
+                MzcdNK3JNxhiuXq9WG8E+5Wq5x+aR7Y48C3H5XQD1xPBFbj5uNfpSPKUO5TL
+                N+KIQNcRxhxDQvxwbO94bt/2he0zpKczxZFAMgYF8wy5qUr5PVc4Xdvcc61j
+                /sITe5TUfkRXSjEku72gaIHuyXOG4oyr5asfxKydCicaH2FBRxoXiLXjElvX
+                6gQmKtm5MS4hI6+yyKCKFw5nWJsO/WDzqX5x2STH6jSsTo8SN87Vq0q17YmO
+                45pH/a75jrr5wH5u9TqCis+F32sKz69Zftv2i6MORXXi+QlNy6Et6pNNWsjl
+                Z81VOJenYWDQKGLMT6rqpLpxrvpE8WkcK1iew03kaFYCtBkFmhVbojxlcr/+
+                f3PoCTmK5JV6V5GaLawWVZd0SrcfohfJ5BJlYG1SvXTkaZ12rQ2Gn4eDjK5k
+                FF3R6DOGA9qoY0U4MxwUVG04MBgJZiibynro/mI6YqhZZWs4SOuaYoSzaoZt
+                sTe/RhQjsrtgRLNaWk1L87r2/ZufktKgDwe7F0556pRpLqtqMUPfTRnxAGzr
+                IRkipEwYuuS2SXTr9NE7BBW9Pyp+4v3k3G4Leq57zqFriZ5Ptsu7oxpW3L7D
+                HfLYfl8nms0dr0VO81XHtR/3uge2X5co8nl6TTl8viPPY+XKWaynlm91bRqV
+                CdAE9anZrlnH4zB9z+v5TfuhIw+LY4zGFBts0ByGqQsKvT36JSBZCk4FfEUy
+                QheOBWd6Wie21RPbGkmVJA00QijT6RnZZVfThdeIF9ZewSis/omLr5D9PYj9
+                WtooRsar0AhdR4r235Dm6igSl3EFCHZLxIgFu9PcNGyTjClyniQ9QxL4mPaS
+                QIlA5IXml8I//oIwqxVW117j6ij7fVpDYNoEjQgBarQmKUkK17A8vopJiDJ5
+                uPAHjN9O2EcCpRYwjo8cxoxH7K5PVC4lnxxpy8Hf0QhQJ8DsX8gznEWNn0LV
+                J1BvEKnRLoSdQBbxgOR35HuLGNzeR6gCs4J1WrEhl80K7uDuPhjHZ/h8H0mO
+                KxxfcGxxfMmxxJHgiHJc4shwXONY5tLnHsfKfxpFtNlABwAA
+                """,
+        """
+                androidx/compose/animation/core/AnimatableKt.class:
+                H4sIAAAAAAAAAJVRTW/TQBB9a+eDuqFxw1ebAoVyoRJi08KJIKQKKZKFCRKt
+                eslpE6+iTezdyl5HPeYncUQcUM78KMSsGykSXKi1np33/GY8H79+//gJ4C2O
+                GF4JneRGJdd8YrIrU0gutMqEVUYTk0t+VkExTuUn2wRjCGdiIXgq9JR/Gc/k
+                hFifIdjoGPjLwXH8/4n7DBe3i3gfb4oYpEbYfvx3Vf0PlPZFbPIpn0k7zoXS
+                BSXUxlYZCz40dlimab+FOhoBPGwxtJRWVon0UqQl9cEGDLvx3NhUaf5ZWpHQ
+                7ymtly18GiBzpkmyuXM84q+V83rkJScMb1bLMFgtA2/PC7ywSS+B1bLbpbu7
+                06l1vJ5XWb/HThthrUvYhZ7SWm43PjDc3RCv55ah9tEk1EI7VloOy2ws84ub
+                5XRiM3Ed5srhNbl1rqZa2DIn/+Brqa3KZKQXqlD0+WwzNVr0uSnziRwoF7a/
+                ll7+I8QJTbQG95DMjRg+DghxwlQw6kffEXxzc8Njso2KbOMJ2daNANvkAU8r
+                TROHa9WdCj+rbBfP6X7n2if9zgh+hHaEkCx2I3RwL8J9PBiBFXiIRyPUC3f2
+                CuxXZ/sPX0TSqAsDAAA=
+                """
+    )
+
+    val IntOffset: TestFile = compiledStub(
+        filename = "IntOffset.kt",
+        filepath = "androidx/compose/ui/unit",
+        checksum = 0xfd7af994,
+        """
+            package androidx.compose.ui.unit
+
+            class IntOffset(val x: Int, val y: Int)
+        """,
+        """
+                META-INF/main.kotlin_module:
+                H4sIAAAAAAAAAGNgYGBmYGBgBGJ2KM3ApcAlkZiXUpSfmVKhl5yfW5BfnKpX
+                mqlXmpdZIsTiUuBdosSgxQAA2sByTDoAAAA=
+                """,
+        """
+                androidx/compose/ui/unit/IntOffset.class:
+                H4sIAAAAAAAAAI1QTWsTURQ9781HJuO0mUwbTdOqtVZts3DS4k4RVCgMpBZq
+                CUo2TpJpfU0yI3kvJe7yW1y7ESyCCwku/VHifZMgCAWFmXPvuffcj3d//vr2
+                HcAjPGDYitPeKBO9SdjNhu8zmYRjEY5TocIoVUenpzJRBTAG/zy+iMNBnJ6F
+                R53zpEtRg8F+Ikj6lMHaiaLdFoOxs9vyYKHgwoTDwCb0Rx5cXCuCwyP2wcPy
+                nJUYTPVOSIbt5r/XeEzqs0S9zodEc/KGodzsZ2og0vAwUXEvVjHp+PDCoAcy
+                DQUa2afQRGjWIK+3x/B2Ng1cXuUu92dTlz7uOy53rOpsus8b7HklsH1e4w2D
+                rKntj482963j8jxKzKGqmunYfoGC5t9Bxy/oOfuMdoD35wUP+4rWfpH1EoZS
+                U6TJy/Gwk4xO4s6AIkEz68aDVjwSmi+C7qtsPOomB0KTteNxqsQwaQkpKPss
+                TTMVK5GlEnt0TpPexxHoW5MX6CuTNWgFCzbhFrFDUug7lOpfUayvX2KpvnEJ
+                /3NeepdQC0Gttgk351KUqRlyT7dmuaebc8qsYHXROiSrc1b9C5Y+XdnQmwsW
+                DcuoXFns/08xx70c7+A+2QPKXafcjTaMCNUIa4SoaViPsIGbbTCJW7jdRlEi
+                kNiUcHNclrAlViRWJSq/AaJQvyMZAwAA
+                """
+    )
 }
 
 /**
diff --git a/compose/lint/common/src/main/java/androidx/compose/lint/Names.kt b/compose/lint/common/src/main/java/androidx/compose/lint/Names.kt
index 6982dbf..ca943ef 100644
--- a/compose/lint/common/src/main/java/androidx/compose/lint/Names.kt
+++ b/compose/lint/common/src/main/java/androidx/compose/lint/Names.kt
@@ -24,6 +24,10 @@
 object Names {
     object Animation {
         val PackageName = Package("androidx.compose.animation")
+        object Core {
+            val PackageName = Package("androidx.compose.animation.core")
+            val Animatable = Name(PackageName, "Animatable")
+        }
     }
     object AnimationCore {
         val PackageName = Package("androidx.compose.animation.core")
@@ -34,6 +38,7 @@
         val Composable = Name(PackageName, "Composable")
         val CompositionLocal = Name(PackageName, "CompositionLocal")
         val DerivedStateOf = Name(PackageName, "derivedStateOf")
+        val State = Name(PackageName, "State")
         val MutableState = Name(PackageName, "MutableState")
         val MutableStateOf = Name(PackageName, "mutableStateOf")
         val MutableStateListOf = Name(PackageName, "mutableStateListOf")
@@ -49,7 +54,20 @@
             val PackageName = Package("androidx.compose.ui.layout")
             val ParentDataModifier = Name(PackageName, "ParentDataModifier")
         }
+
+        object Pointer {
+            val PackageName = Package(Ui.PackageName, "input.pointer")
+            val PointerInputScope = Name(PackageName, "PointerInputScope")
+            val PointerInputScopeModifier = Name(PackageName, "pointerInput")
+            val AwaitPointerEventScope = Name(PackageName, "awaitPointerEventScope")
+        }
+
+        object Unit {
+            val PackageName = Package("androidx.compose.ui.unit")
+            val Dp = Name(PackageName, "Dp")
+        }
     }
+
     object UiGraphics {
         val PackageName = Package("androidx.compose.ui.graphics")
         val Color = Name(PackageName, "Color")
diff --git a/compose/material/material/icons/generator/api/icons.txt b/compose/material/material/icons/generator/api/icons.txt
index 8ff7235..e5c38de 100644
--- a/compose/material/material/icons/generator/api/icons.txt
+++ b/compose/material/material/icons/generator/api/icons.txt
@@ -26,6 +26,8 @@
 Filled.AddCircle
 Filled.AddCircleOutline
 Filled.AddComment
+Filled.AddHome
+Filled.AddHomeWork
 Filled.AddIcCall
 Filled.AddLink
 Filled.AddLocation
@@ -111,6 +113,7 @@
 Filled.ArrowForward
 Filled.ArrowForwardIos
 Filled.ArrowLeft
+Filled.ArrowOutward
 Filled.ArrowRight
 Filled.ArrowRightAlt
 Filled.ArrowUpward
@@ -124,6 +127,7 @@
 Filled.AssignmentReturn
 Filled.AssignmentReturned
 Filled.AssignmentTurnedIn
+Filled.AssistWalker
 Filled.Assistant
 Filled.AssistantDirection
 Filled.AssistantPhoto
@@ -190,6 +194,7 @@
 Filled.BikeScooter
 Filled.Biotech
 Filled.Blender
+Filled.Blind
 Filled.Blinds
 Filled.BlindsClosed
 Filled.Block
@@ -378,6 +383,7 @@
 Filled.ConnectedTv
 Filled.ConnectingAirports
 Filled.Construction
+Filled.ContactEmergency
 Filled.ContactMail
 Filled.ContactPage
 Filled.ContactPhone
@@ -445,6 +451,8 @@
 Filled.DataSaverOn
 Filled.DataThresholding
 Filled.DataUsage
+Filled.Dataset
+Filled.DatasetLinked
 Filled.DateRange
 Filled.Deblur
 Filled.Deck
@@ -504,6 +512,9 @@
 Filled.DiscFull
 Filled.Discount
 Filled.DisplaySettings
+Filled.Diversity1
+Filled.Diversity2
+Filled.Diversity3
 Filled.Dns
 Filled.DoDisturb
 Filled.DoDisturbAlt
@@ -629,6 +640,11 @@
 Filled.Extension
 Filled.ExtensionOff
 Filled.Face
+Filled.Face2
+Filled.Face3
+Filled.Face4
+Filled.Face5
+Filled.Face6
 Filled.FaceRetouchingNatural
 Filled.FaceRetouchingOff
 Filled.Facebook
@@ -687,6 +703,8 @@
 Filled.FindReplace
 Filled.Fingerprint
 Filled.FireExtinguisher
+Filled.FireHydrantAlt
+Filled.FireTruck
 Filled.Fireplace
 Filled.FirstPage
 Filled.FitScreen
@@ -713,6 +731,7 @@
 Filled.FlipToFront
 Filled.Flood
 Filled.Flourescent
+Filled.Fluorescent
 Filled.FlutterDash
 Filled.FmdBad
 Filled.FmdGood
@@ -809,6 +828,8 @@
 Filled.GroupRemove
 Filled.GroupWork
 Filled.Groups
+Filled.Groups2
+Filled.Groups3
 Filled.HMobiledata
 Filled.HPlusMobiledata
 Filled.Hail
@@ -1054,11 +1075,15 @@
 Filled.Luggage
 Filled.LunchDining
 Filled.Lyrics
+Filled.MacroOff
 Filled.Mail
 Filled.MailLock
 Filled.MailOutline
 Filled.Male
 Filled.Man
+Filled.Man2
+Filled.Man3
+Filled.Man4
 Filled.ManageAccounts
 Filled.ManageHistory
 Filled.ManageSearch
@@ -1289,6 +1314,9 @@
 Filled.PermPhoneMsg
 Filled.PermScanWifi
 Filled.Person
+Filled.Person2
+Filled.Person3
+Filled.Person4
 Filled.PersonAdd
 Filled.PersonAddAlt
 Filled.PersonAddAlt1
@@ -1395,6 +1423,7 @@
 Filled.Propane
 Filled.PropaneTank
 Filled.Psychology
+Filled.PsychologyAlt
 Filled.Public
 Filled.PublicOff
 Filled.Publish
@@ -1449,6 +1478,7 @@
 Filled.RemoveRoad
 Filled.RemoveShoppingCart
 Filled.Reorder
+Filled.Repartition
 Filled.Repeat
 Filled.RepeatOn
 Filled.RepeatOne
@@ -1585,6 +1615,7 @@
 Filled.SettingsSystemDaydream
 Filled.SettingsVoice
 Filled.SevereCold
+Filled.ShapeLine
 Filled.Share
 Filled.ShareLocation
 Filled.Shield
@@ -1858,6 +1889,7 @@
 Filled.Traffic
 Filled.Train
 Filled.Tram
+Filled.Transcribe
 Filled.TransferWithinAStation
 Filled.Transform
 Filled.Transgender
@@ -1868,6 +1900,7 @@
 Filled.TrendingFlat
 Filled.TrendingUp
 Filled.TripOrigin
+Filled.Troubleshoot
 Filled.Try
 Filled.Tsunami
 Filled.Tty
@@ -1884,13 +1917,16 @@
 Filled.Tv
 Filled.TvOff
 Filled.TwoWheeler
+Filled.TypeSpecimen
 Filled.UTurnLeft
 Filled.UTurnRight
 Filled.Umbrella
 Filled.Unarchive
 Filled.Undo
 Filled.UnfoldLess
+Filled.UnfoldLessDouble
 Filled.UnfoldMore
+Filled.UnfoldMoreDouble
 Filled.Unpublished
 Filled.Unsubscribe
 Filled.Upcoming
@@ -1917,6 +1953,7 @@
 Filled.VideoCall
 Filled.VideoCameraBack
 Filled.VideoCameraFront
+Filled.VideoChat
 Filled.VideoFile
 Filled.VideoLabel
 Filled.VideoLibrary
@@ -1989,6 +2026,7 @@
 Filled.Web
 Filled.WebAsset
 Filled.WebAssetOff
+Filled.WebStories
 Filled.Webhook
 Filled.Weekend
 Filled.West
@@ -2019,6 +2057,7 @@
 Filled.Window
 Filled.WineBar
 Filled.Woman
+Filled.Woman2
 Filled.Work
 Filled.WorkHistory
 Filled.WorkOff
@@ -2119,6 +2158,8 @@
 Outlined.AddCircle
 Outlined.AddCircleOutline
 Outlined.AddComment
+Outlined.AddHome
+Outlined.AddHomeWork
 Outlined.AddIcCall
 Outlined.AddLink
 Outlined.AddLocation
@@ -2204,6 +2245,7 @@
 Outlined.ArrowForward
 Outlined.ArrowForwardIos
 Outlined.ArrowLeft
+Outlined.ArrowOutward
 Outlined.ArrowRight
 Outlined.ArrowRightAlt
 Outlined.ArrowUpward
@@ -2217,6 +2259,7 @@
 Outlined.AssignmentReturn
 Outlined.AssignmentReturned
 Outlined.AssignmentTurnedIn
+Outlined.AssistWalker
 Outlined.Assistant
 Outlined.AssistantDirection
 Outlined.AssistantPhoto
@@ -2283,6 +2326,7 @@
 Outlined.BikeScooter
 Outlined.Biotech
 Outlined.Blender
+Outlined.Blind
 Outlined.Blinds
 Outlined.BlindsClosed
 Outlined.Block
@@ -2471,6 +2515,7 @@
 Outlined.ConnectedTv
 Outlined.ConnectingAirports
 Outlined.Construction
+Outlined.ContactEmergency
 Outlined.ContactMail
 Outlined.ContactPage
 Outlined.ContactPhone
@@ -2538,6 +2583,8 @@
 Outlined.DataSaverOn
 Outlined.DataThresholding
 Outlined.DataUsage
+Outlined.Dataset
+Outlined.DatasetLinked
 Outlined.DateRange
 Outlined.Deblur
 Outlined.Deck
@@ -2597,6 +2644,9 @@
 Outlined.DiscFull
 Outlined.Discount
 Outlined.DisplaySettings
+Outlined.Diversity1
+Outlined.Diversity2
+Outlined.Diversity3
 Outlined.Dns
 Outlined.DoDisturb
 Outlined.DoDisturbAlt
@@ -2722,6 +2772,11 @@
 Outlined.Extension
 Outlined.ExtensionOff
 Outlined.Face
+Outlined.Face2
+Outlined.Face3
+Outlined.Face4
+Outlined.Face5
+Outlined.Face6
 Outlined.FaceRetouchingNatural
 Outlined.FaceRetouchingOff
 Outlined.Facebook
@@ -2780,6 +2835,8 @@
 Outlined.FindReplace
 Outlined.Fingerprint
 Outlined.FireExtinguisher
+Outlined.FireHydrantAlt
+Outlined.FireTruck
 Outlined.Fireplace
 Outlined.FirstPage
 Outlined.FitScreen
@@ -2806,6 +2863,7 @@
 Outlined.FlipToFront
 Outlined.Flood
 Outlined.Flourescent
+Outlined.Fluorescent
 Outlined.FlutterDash
 Outlined.FmdBad
 Outlined.FmdGood
@@ -2902,6 +2960,8 @@
 Outlined.GroupRemove
 Outlined.GroupWork
 Outlined.Groups
+Outlined.Groups2
+Outlined.Groups3
 Outlined.HMobiledata
 Outlined.HPlusMobiledata
 Outlined.Hail
@@ -3147,11 +3207,15 @@
 Outlined.Luggage
 Outlined.LunchDining
 Outlined.Lyrics
+Outlined.MacroOff
 Outlined.Mail
 Outlined.MailLock
 Outlined.MailOutline
 Outlined.Male
 Outlined.Man
+Outlined.Man2
+Outlined.Man3
+Outlined.Man4
 Outlined.ManageAccounts
 Outlined.ManageHistory
 Outlined.ManageSearch
@@ -3382,6 +3446,9 @@
 Outlined.PermPhoneMsg
 Outlined.PermScanWifi
 Outlined.Person
+Outlined.Person2
+Outlined.Person3
+Outlined.Person4
 Outlined.PersonAdd
 Outlined.PersonAddAlt
 Outlined.PersonAddAlt1
@@ -3488,6 +3555,7 @@
 Outlined.Propane
 Outlined.PropaneTank
 Outlined.Psychology
+Outlined.PsychologyAlt
 Outlined.Public
 Outlined.PublicOff
 Outlined.Publish
@@ -3542,6 +3610,7 @@
 Outlined.RemoveRoad
 Outlined.RemoveShoppingCart
 Outlined.Reorder
+Outlined.Repartition
 Outlined.Repeat
 Outlined.RepeatOn
 Outlined.RepeatOne
@@ -3678,6 +3747,7 @@
 Outlined.SettingsSystemDaydream
 Outlined.SettingsVoice
 Outlined.SevereCold
+Outlined.ShapeLine
 Outlined.Share
 Outlined.ShareLocation
 Outlined.Shield
@@ -3951,6 +4021,7 @@
 Outlined.Traffic
 Outlined.Train
 Outlined.Tram
+Outlined.Transcribe
 Outlined.TransferWithinAStation
 Outlined.Transform
 Outlined.Transgender
@@ -3961,6 +4032,7 @@
 Outlined.TrendingFlat
 Outlined.TrendingUp
 Outlined.TripOrigin
+Outlined.Troubleshoot
 Outlined.Try
 Outlined.Tsunami
 Outlined.Tty
@@ -3977,13 +4049,16 @@
 Outlined.Tv
 Outlined.TvOff
 Outlined.TwoWheeler
+Outlined.TypeSpecimen
 Outlined.UTurnLeft
 Outlined.UTurnRight
 Outlined.Umbrella
 Outlined.Unarchive
 Outlined.Undo
 Outlined.UnfoldLess
+Outlined.UnfoldLessDouble
 Outlined.UnfoldMore
+Outlined.UnfoldMoreDouble
 Outlined.Unpublished
 Outlined.Unsubscribe
 Outlined.Upcoming
@@ -4010,6 +4085,7 @@
 Outlined.VideoCall
 Outlined.VideoCameraBack
 Outlined.VideoCameraFront
+Outlined.VideoChat
 Outlined.VideoFile
 Outlined.VideoLabel
 Outlined.VideoLibrary
@@ -4082,6 +4158,7 @@
 Outlined.Web
 Outlined.WebAsset
 Outlined.WebAssetOff
+Outlined.WebStories
 Outlined.Webhook
 Outlined.Weekend
 Outlined.West
@@ -4112,6 +4189,7 @@
 Outlined.Window
 Outlined.WineBar
 Outlined.Woman
+Outlined.Woman2
 Outlined.Work
 Outlined.WorkHistory
 Outlined.WorkOff
@@ -4212,6 +4290,8 @@
 Rounded.AddCircle
 Rounded.AddCircleOutline
 Rounded.AddComment
+Rounded.AddHome
+Rounded.AddHomeWork
 Rounded.AddIcCall
 Rounded.AddLink
 Rounded.AddLocation
@@ -4297,6 +4377,7 @@
 Rounded.ArrowForward
 Rounded.ArrowForwardIos
 Rounded.ArrowLeft
+Rounded.ArrowOutward
 Rounded.ArrowRight
 Rounded.ArrowRightAlt
 Rounded.ArrowUpward
@@ -4310,6 +4391,7 @@
 Rounded.AssignmentReturn
 Rounded.AssignmentReturned
 Rounded.AssignmentTurnedIn
+Rounded.AssistWalker
 Rounded.Assistant
 Rounded.AssistantDirection
 Rounded.AssistantPhoto
@@ -4376,6 +4458,7 @@
 Rounded.BikeScooter
 Rounded.Biotech
 Rounded.Blender
+Rounded.Blind
 Rounded.Blinds
 Rounded.BlindsClosed
 Rounded.Block
@@ -4564,6 +4647,7 @@
 Rounded.ConnectedTv
 Rounded.ConnectingAirports
 Rounded.Construction
+Rounded.ContactEmergency
 Rounded.ContactMail
 Rounded.ContactPage
 Rounded.ContactPhone
@@ -4631,6 +4715,8 @@
 Rounded.DataSaverOn
 Rounded.DataThresholding
 Rounded.DataUsage
+Rounded.Dataset
+Rounded.DatasetLinked
 Rounded.DateRange
 Rounded.Deblur
 Rounded.Deck
@@ -4690,6 +4776,9 @@
 Rounded.DiscFull
 Rounded.Discount
 Rounded.DisplaySettings
+Rounded.Diversity1
+Rounded.Diversity2
+Rounded.Diversity3
 Rounded.Dns
 Rounded.DoDisturb
 Rounded.DoDisturbAlt
@@ -4815,6 +4904,11 @@
 Rounded.Extension
 Rounded.ExtensionOff
 Rounded.Face
+Rounded.Face2
+Rounded.Face3
+Rounded.Face4
+Rounded.Face5
+Rounded.Face6
 Rounded.FaceRetouchingNatural
 Rounded.FaceRetouchingOff
 Rounded.Facebook
@@ -4873,6 +4967,8 @@
 Rounded.FindReplace
 Rounded.Fingerprint
 Rounded.FireExtinguisher
+Rounded.FireHydrantAlt
+Rounded.FireTruck
 Rounded.Fireplace
 Rounded.FirstPage
 Rounded.FitScreen
@@ -4899,6 +4995,7 @@
 Rounded.FlipToFront
 Rounded.Flood
 Rounded.Flourescent
+Rounded.Fluorescent
 Rounded.FlutterDash
 Rounded.FmdBad
 Rounded.FmdGood
@@ -4995,6 +5092,8 @@
 Rounded.GroupRemove
 Rounded.GroupWork
 Rounded.Groups
+Rounded.Groups2
+Rounded.Groups3
 Rounded.HMobiledata
 Rounded.HPlusMobiledata
 Rounded.Hail
@@ -5240,11 +5339,15 @@
 Rounded.Luggage
 Rounded.LunchDining
 Rounded.Lyrics
+Rounded.MacroOff
 Rounded.Mail
 Rounded.MailLock
 Rounded.MailOutline
 Rounded.Male
 Rounded.Man
+Rounded.Man2
+Rounded.Man3
+Rounded.Man4
 Rounded.ManageAccounts
 Rounded.ManageHistory
 Rounded.ManageSearch
@@ -5475,6 +5578,9 @@
 Rounded.PermPhoneMsg
 Rounded.PermScanWifi
 Rounded.Person
+Rounded.Person2
+Rounded.Person3
+Rounded.Person4
 Rounded.PersonAdd
 Rounded.PersonAddAlt
 Rounded.PersonAddAlt1
@@ -5581,6 +5687,7 @@
 Rounded.Propane
 Rounded.PropaneTank
 Rounded.Psychology
+Rounded.PsychologyAlt
 Rounded.Public
 Rounded.PublicOff
 Rounded.Publish
@@ -5635,6 +5742,7 @@
 Rounded.RemoveRoad
 Rounded.RemoveShoppingCart
 Rounded.Reorder
+Rounded.Repartition
 Rounded.Repeat
 Rounded.RepeatOn
 Rounded.RepeatOne
@@ -5771,6 +5879,7 @@
 Rounded.SettingsSystemDaydream
 Rounded.SettingsVoice
 Rounded.SevereCold
+Rounded.ShapeLine
 Rounded.Share
 Rounded.ShareLocation
 Rounded.Shield
@@ -6044,6 +6153,7 @@
 Rounded.Traffic
 Rounded.Train
 Rounded.Tram
+Rounded.Transcribe
 Rounded.TransferWithinAStation
 Rounded.Transform
 Rounded.Transgender
@@ -6054,6 +6164,7 @@
 Rounded.TrendingFlat
 Rounded.TrendingUp
 Rounded.TripOrigin
+Rounded.Troubleshoot
 Rounded.Try
 Rounded.Tsunami
 Rounded.Tty
@@ -6070,13 +6181,16 @@
 Rounded.Tv
 Rounded.TvOff
 Rounded.TwoWheeler
+Rounded.TypeSpecimen
 Rounded.UTurnLeft
 Rounded.UTurnRight
 Rounded.Umbrella
 Rounded.Unarchive
 Rounded.Undo
 Rounded.UnfoldLess
+Rounded.UnfoldLessDouble
 Rounded.UnfoldMore
+Rounded.UnfoldMoreDouble
 Rounded.Unpublished
 Rounded.Unsubscribe
 Rounded.Upcoming
@@ -6103,6 +6217,7 @@
 Rounded.VideoCall
 Rounded.VideoCameraBack
 Rounded.VideoCameraFront
+Rounded.VideoChat
 Rounded.VideoFile
 Rounded.VideoLabel
 Rounded.VideoLibrary
@@ -6175,6 +6290,7 @@
 Rounded.Web
 Rounded.WebAsset
 Rounded.WebAssetOff
+Rounded.WebStories
 Rounded.Webhook
 Rounded.Weekend
 Rounded.West
@@ -6205,6 +6321,7 @@
 Rounded.Window
 Rounded.WineBar
 Rounded.Woman
+Rounded.Woman2
 Rounded.Work
 Rounded.WorkHistory
 Rounded.WorkOff
@@ -6305,6 +6422,8 @@
 Sharp.AddCircle
 Sharp.AddCircleOutline
 Sharp.AddComment
+Sharp.AddHome
+Sharp.AddHomeWork
 Sharp.AddIcCall
 Sharp.AddLink
 Sharp.AddLocation
@@ -6390,6 +6509,7 @@
 Sharp.ArrowForward
 Sharp.ArrowForwardIos
 Sharp.ArrowLeft
+Sharp.ArrowOutward
 Sharp.ArrowRight
 Sharp.ArrowRightAlt
 Sharp.ArrowUpward
@@ -6403,6 +6523,7 @@
 Sharp.AssignmentReturn
 Sharp.AssignmentReturned
 Sharp.AssignmentTurnedIn
+Sharp.AssistWalker
 Sharp.Assistant
 Sharp.AssistantDirection
 Sharp.AssistantPhoto
@@ -6469,6 +6590,7 @@
 Sharp.BikeScooter
 Sharp.Biotech
 Sharp.Blender
+Sharp.Blind
 Sharp.Blinds
 Sharp.BlindsClosed
 Sharp.Block
@@ -6657,6 +6779,7 @@
 Sharp.ConnectedTv
 Sharp.ConnectingAirports
 Sharp.Construction
+Sharp.ContactEmergency
 Sharp.ContactMail
 Sharp.ContactPage
 Sharp.ContactPhone
@@ -6724,6 +6847,8 @@
 Sharp.DataSaverOn
 Sharp.DataThresholding
 Sharp.DataUsage
+Sharp.Dataset
+Sharp.DatasetLinked
 Sharp.DateRange
 Sharp.Deblur
 Sharp.Deck
@@ -6783,6 +6908,9 @@
 Sharp.DiscFull
 Sharp.Discount
 Sharp.DisplaySettings
+Sharp.Diversity1
+Sharp.Diversity2
+Sharp.Diversity3
 Sharp.Dns
 Sharp.DoDisturb
 Sharp.DoDisturbAlt
@@ -6908,6 +7036,11 @@
 Sharp.Extension
 Sharp.ExtensionOff
 Sharp.Face
+Sharp.Face2
+Sharp.Face3
+Sharp.Face4
+Sharp.Face5
+Sharp.Face6
 Sharp.FaceRetouchingNatural
 Sharp.FaceRetouchingOff
 Sharp.Facebook
@@ -6966,6 +7099,8 @@
 Sharp.FindReplace
 Sharp.Fingerprint
 Sharp.FireExtinguisher
+Sharp.FireHydrantAlt
+Sharp.FireTruck
 Sharp.Fireplace
 Sharp.FirstPage
 Sharp.FitScreen
@@ -6992,6 +7127,7 @@
 Sharp.FlipToFront
 Sharp.Flood
 Sharp.Flourescent
+Sharp.Fluorescent
 Sharp.FlutterDash
 Sharp.FmdBad
 Sharp.FmdGood
@@ -7088,6 +7224,8 @@
 Sharp.GroupRemove
 Sharp.GroupWork
 Sharp.Groups
+Sharp.Groups2
+Sharp.Groups3
 Sharp.HMobiledata
 Sharp.HPlusMobiledata
 Sharp.Hail
@@ -7333,11 +7471,15 @@
 Sharp.Luggage
 Sharp.LunchDining
 Sharp.Lyrics
+Sharp.MacroOff
 Sharp.Mail
 Sharp.MailLock
 Sharp.MailOutline
 Sharp.Male
 Sharp.Man
+Sharp.Man2
+Sharp.Man3
+Sharp.Man4
 Sharp.ManageAccounts
 Sharp.ManageHistory
 Sharp.ManageSearch
@@ -7568,6 +7710,9 @@
 Sharp.PermPhoneMsg
 Sharp.PermScanWifi
 Sharp.Person
+Sharp.Person2
+Sharp.Person3
+Sharp.Person4
 Sharp.PersonAdd
 Sharp.PersonAddAlt
 Sharp.PersonAddAlt1
@@ -7674,6 +7819,7 @@
 Sharp.Propane
 Sharp.PropaneTank
 Sharp.Psychology
+Sharp.PsychologyAlt
 Sharp.Public
 Sharp.PublicOff
 Sharp.Publish
@@ -7728,6 +7874,7 @@
 Sharp.RemoveRoad
 Sharp.RemoveShoppingCart
 Sharp.Reorder
+Sharp.Repartition
 Sharp.Repeat
 Sharp.RepeatOn
 Sharp.RepeatOne
@@ -7864,6 +8011,7 @@
 Sharp.SettingsSystemDaydream
 Sharp.SettingsVoice
 Sharp.SevereCold
+Sharp.ShapeLine
 Sharp.Share
 Sharp.ShareLocation
 Sharp.Shield
@@ -8137,6 +8285,7 @@
 Sharp.Traffic
 Sharp.Train
 Sharp.Tram
+Sharp.Transcribe
 Sharp.TransferWithinAStation
 Sharp.Transform
 Sharp.Transgender
@@ -8147,6 +8296,7 @@
 Sharp.TrendingFlat
 Sharp.TrendingUp
 Sharp.TripOrigin
+Sharp.Troubleshoot
 Sharp.Try
 Sharp.Tsunami
 Sharp.Tty
@@ -8163,13 +8313,16 @@
 Sharp.Tv
 Sharp.TvOff
 Sharp.TwoWheeler
+Sharp.TypeSpecimen
 Sharp.UTurnLeft
 Sharp.UTurnRight
 Sharp.Umbrella
 Sharp.Unarchive
 Sharp.Undo
 Sharp.UnfoldLess
+Sharp.UnfoldLessDouble
 Sharp.UnfoldMore
+Sharp.UnfoldMoreDouble
 Sharp.Unpublished
 Sharp.Unsubscribe
 Sharp.Upcoming
@@ -8196,6 +8349,7 @@
 Sharp.VideoCall
 Sharp.VideoCameraBack
 Sharp.VideoCameraFront
+Sharp.VideoChat
 Sharp.VideoFile
 Sharp.VideoLabel
 Sharp.VideoLibrary
@@ -8268,6 +8422,7 @@
 Sharp.Web
 Sharp.WebAsset
 Sharp.WebAssetOff
+Sharp.WebStories
 Sharp.Webhook
 Sharp.Weekend
 Sharp.West
@@ -8298,6 +8453,7 @@
 Sharp.Window
 Sharp.WineBar
 Sharp.Woman
+Sharp.Woman2
 Sharp.Work
 Sharp.WorkHistory
 Sharp.WorkOff
@@ -8398,6 +8554,8 @@
 TwoTone.AddCircle
 TwoTone.AddCircleOutline
 TwoTone.AddComment
+TwoTone.AddHome
+TwoTone.AddHomeWork
 TwoTone.AddIcCall
 TwoTone.AddLink
 TwoTone.AddLocation
@@ -8483,6 +8641,7 @@
 TwoTone.ArrowForward
 TwoTone.ArrowForwardIos
 TwoTone.ArrowLeft
+TwoTone.ArrowOutward
 TwoTone.ArrowRight
 TwoTone.ArrowRightAlt
 TwoTone.ArrowUpward
@@ -8496,6 +8655,7 @@
 TwoTone.AssignmentReturn
 TwoTone.AssignmentReturned
 TwoTone.AssignmentTurnedIn
+TwoTone.AssistWalker
 TwoTone.Assistant
 TwoTone.AssistantDirection
 TwoTone.AssistantPhoto
@@ -8562,6 +8722,7 @@
 TwoTone.BikeScooter
 TwoTone.Biotech
 TwoTone.Blender
+TwoTone.Blind
 TwoTone.Blinds
 TwoTone.BlindsClosed
 TwoTone.Block
@@ -8750,6 +8911,7 @@
 TwoTone.ConnectedTv
 TwoTone.ConnectingAirports
 TwoTone.Construction
+TwoTone.ContactEmergency
 TwoTone.ContactMail
 TwoTone.ContactPage
 TwoTone.ContactPhone
@@ -8817,6 +8979,8 @@
 TwoTone.DataSaverOn
 TwoTone.DataThresholding
 TwoTone.DataUsage
+TwoTone.Dataset
+TwoTone.DatasetLinked
 TwoTone.DateRange
 TwoTone.Deblur
 TwoTone.Deck
@@ -8876,6 +9040,9 @@
 TwoTone.DiscFull
 TwoTone.Discount
 TwoTone.DisplaySettings
+TwoTone.Diversity1
+TwoTone.Diversity2
+TwoTone.Diversity3
 TwoTone.Dns
 TwoTone.DoDisturb
 TwoTone.DoDisturbAlt
@@ -9001,6 +9168,11 @@
 TwoTone.Extension
 TwoTone.ExtensionOff
 TwoTone.Face
+TwoTone.Face2
+TwoTone.Face3
+TwoTone.Face4
+TwoTone.Face5
+TwoTone.Face6
 TwoTone.FaceRetouchingNatural
 TwoTone.FaceRetouchingOff
 TwoTone.Facebook
@@ -9059,6 +9231,8 @@
 TwoTone.FindReplace
 TwoTone.Fingerprint
 TwoTone.FireExtinguisher
+TwoTone.FireHydrantAlt
+TwoTone.FireTruck
 TwoTone.Fireplace
 TwoTone.FirstPage
 TwoTone.FitScreen
@@ -9085,6 +9259,7 @@
 TwoTone.FlipToFront
 TwoTone.Flood
 TwoTone.Flourescent
+TwoTone.Fluorescent
 TwoTone.FlutterDash
 TwoTone.FmdBad
 TwoTone.FmdGood
@@ -9181,6 +9356,8 @@
 TwoTone.GroupRemove
 TwoTone.GroupWork
 TwoTone.Groups
+TwoTone.Groups2
+TwoTone.Groups3
 TwoTone.HMobiledata
 TwoTone.HPlusMobiledata
 TwoTone.Hail
@@ -9426,11 +9603,15 @@
 TwoTone.Luggage
 TwoTone.LunchDining
 TwoTone.Lyrics
+TwoTone.MacroOff
 TwoTone.Mail
 TwoTone.MailLock
 TwoTone.MailOutline
 TwoTone.Male
 TwoTone.Man
+TwoTone.Man2
+TwoTone.Man3
+TwoTone.Man4
 TwoTone.ManageAccounts
 TwoTone.ManageHistory
 TwoTone.ManageSearch
@@ -9661,6 +9842,9 @@
 TwoTone.PermPhoneMsg
 TwoTone.PermScanWifi
 TwoTone.Person
+TwoTone.Person2
+TwoTone.Person3
+TwoTone.Person4
 TwoTone.PersonAdd
 TwoTone.PersonAddAlt
 TwoTone.PersonAddAlt1
@@ -9767,6 +9951,7 @@
 TwoTone.Propane
 TwoTone.PropaneTank
 TwoTone.Psychology
+TwoTone.PsychologyAlt
 TwoTone.Public
 TwoTone.PublicOff
 TwoTone.Publish
@@ -9821,6 +10006,7 @@
 TwoTone.RemoveRoad
 TwoTone.RemoveShoppingCart
 TwoTone.Reorder
+TwoTone.Repartition
 TwoTone.Repeat
 TwoTone.RepeatOn
 TwoTone.RepeatOne
@@ -9957,6 +10143,7 @@
 TwoTone.SettingsSystemDaydream
 TwoTone.SettingsVoice
 TwoTone.SevereCold
+TwoTone.ShapeLine
 TwoTone.Share
 TwoTone.ShareLocation
 TwoTone.Shield
@@ -10230,6 +10417,7 @@
 TwoTone.Traffic
 TwoTone.Train
 TwoTone.Tram
+TwoTone.Transcribe
 TwoTone.TransferWithinAStation
 TwoTone.Transform
 TwoTone.Transgender
@@ -10240,6 +10428,7 @@
 TwoTone.TrendingFlat
 TwoTone.TrendingUp
 TwoTone.TripOrigin
+TwoTone.Troubleshoot
 TwoTone.Try
 TwoTone.Tsunami
 TwoTone.Tty
@@ -10256,13 +10445,16 @@
 TwoTone.Tv
 TwoTone.TvOff
 TwoTone.TwoWheeler
+TwoTone.TypeSpecimen
 TwoTone.UTurnLeft
 TwoTone.UTurnRight
 TwoTone.Umbrella
 TwoTone.Unarchive
 TwoTone.Undo
 TwoTone.UnfoldLess
+TwoTone.UnfoldLessDouble
 TwoTone.UnfoldMore
+TwoTone.UnfoldMoreDouble
 TwoTone.Unpublished
 TwoTone.Unsubscribe
 TwoTone.Upcoming
@@ -10289,6 +10481,7 @@
 TwoTone.VideoCall
 TwoTone.VideoCameraBack
 TwoTone.VideoCameraFront
+TwoTone.VideoChat
 TwoTone.VideoFile
 TwoTone.VideoLabel
 TwoTone.VideoLibrary
@@ -10361,6 +10554,7 @@
 TwoTone.Web
 TwoTone.WebAsset
 TwoTone.WebAssetOff
+TwoTone.WebStories
 TwoTone.Webhook
 TwoTone.Weekend
 TwoTone.West
@@ -10391,6 +10585,7 @@
 TwoTone.Window
 TwoTone.WineBar
 TwoTone.Woman
+TwoTone.Woman2
 TwoTone.Work
 TwoTone.WorkHistory
 TwoTone.WorkOff
diff --git a/compose/material/material/icons/generator/raw-icons/filled/account_box.xml b/compose/material/material/icons/generator/raw-icons/filled/account_box.xml
index 3481c02..32f6b3f 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/account_box.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/account_box.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3,5v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2L5,3c-1.11,0 -2,0.9 -2,2zM15,9c0,1.66 -1.34,3 -3,3s-3,-1.34 -3,-3 1.34,-3 3,-3 3,1.34 3,3zM6,17c0,-2 4,-3.1 6,-3.1s6,1.1 6,3.1v1L6,18v-1z"/>
+      android:pathData="M19,3H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5C21,3.9 20.1,3 19,3zM12,6c1.93,0 3.5,1.57 3.5,3.5c0,1.93 -1.57,3.5 -3.5,3.5s-3.5,-1.57 -3.5,-3.5C8.5,7.57 10.07,6 12,6zM19,19H5v-0.23c0,-0.62 0.28,-1.2 0.76,-1.58C7.47,15.82 9.64,15 12,15s4.53,0.82 6.24,2.19c0.48,0.38 0.76,0.97 0.76,1.58V19z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/account_circle.xml b/compose/material/material/icons/generator/raw-icons/filled/account_circle.xml
index 89199eb..6476320 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/account_circle.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/account_circle.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,5c1.66,0 3,1.34 3,3s-1.34,3 -3,3 -3,-1.34 -3,-3 1.34,-3 3,-3zM12,19.2c-2.5,0 -4.71,-1.28 -6,-3.22 0.03,-1.99 4,-3.08 6,-3.08 1.99,0 5.97,1.09 6,3.08 -1.29,1.94 -3.5,3.22 -6,3.22z"/>
+      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,6c1.93,0 3.5,1.57 3.5,3.5S13.93,13 12,13s-3.5,-1.57 -3.5,-3.5S10.07,6 12,6zM12,20c-2.03,0 -4.43,-0.82 -6.14,-2.88C7.55,15.8 9.68,15 12,15s4.45,0.8 6.14,2.12C16.43,19.18 14.03,20 12,20z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/add_home.xml b/compose/material/material/icons/generator/raw-icons/filled/add_home.xml
new file mode 100644
index 0000000..8286982
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/add_home.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18,11c0.7,0 1.37,0.1 2,0.29V9l-8,-6L4,9v12h7.68C11.25,20.09 11,19.08 11,18C11,14.13 14.13,11 18,11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18,13c-2.76,0 -5,2.24 -5,5s2.24,5 5,5s5,-2.24 5,-5S20.76,13 18,13zM21,18.5h-2.5V21h-1v-2.5H15v-1h2.5V15h1v2.5H21V18.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/add_home_work.xml b/compose/material/material/icons/generator/raw-icons/filled/add_home_work.xml
new file mode 100644
index 0000000..bcc11f9
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/add_home_work.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,11.68V11L8,6l-7,5v10h5v-6h4v6h1.68C11.25,20.09 11,19.08 11,18C11,15.21 12.64,12.81 15,11.68z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M23,13.11V3H10v1.97l7,5v1.11c0.33,-0.05 0.66,-0.08 1,-0.08C19.96,11 21.73,11.81 23,13.11zM17,7h2v2h-2V7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M23,18c0,-2.76 -2.24,-5 -5,-5s-5,2.24 -5,5s2.24,5 5,5S23,20.76 23,18zM17.5,21v-2.5H15v-1h2.5V15h1v2.5H21v1h-2.5V21H17.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/arrow_outward.xml b/compose/material/material/icons/generator/raw-icons/filled/arrow_outward.xml
new file mode 100644
index 0000000..842e1d7
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/arrow_outward.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,6l0,2l8.59,0l-9.59,9.59l1.41,1.41l9.59,-9.59l0,8.59l2,0l0,-12z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/assist_walker.xml b/compose/material/material/icons/generator/raw-icons/filled/assist_walker.xml
new file mode 100644
index 0000000..cca770a
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/assist_walker.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.5,4.5m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.77,17.72l-0.64,-6.37C19.06,10.58 18.41,10 17.64,10H16c-1.5,-0.02 -2.86,-0.54 -3.76,-1.44l-2,-1.98C10.08,6.42 9.62,6 8.83,6C8.32,6 7.81,6.2 7.42,6.59L4.08,9.91c-0.53,0.68 -0.51,1.57 -0.21,2.13l1.43,2.8l-3.15,4.05l1.57,1.24l3.68,-4.73l-0.17,-1.36L8,14.75V20h2v-6.12l-2.12,-2.12l2.36,-2.36c0.94,0.94 1.72,1.82 3.59,2.32L13,20h1.5l0.41,-3.5h3.18l0.14,1.22c-0.44,0.26 -0.73,0.74 -0.73,1.28c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5C20.5,18.46 20.21,17.98 19.77,17.72zM15.09,15l0.41,-3.5h2l0.41,3.5H15.09z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/bar_chart.xml b/compose/material/material/icons/generator/raw-icons/filled/bar_chart.xml
index ed958c5..bbc825d 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/bar_chart.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/bar_chart.xml
@@ -6,5 +6,11 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M5,9.2h3L8,19L5,19zM10.6,5h2.8v14h-2.8zM16.2,13L19,13v6h-2.8z"/>
+      android:pathData="M4,9h4v11h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,13h4v7h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,4h4v16h-4z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/bed.xml b/compose/material/material/icons/generator/raw-icons/filled/bed.xml
index b4ccfba..10c9ae8 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/bed.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/bed.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M21,10.78V8c0,-1.65 -1.35,-3 -3,-3h-4c-0.77,0 -1.47,0.3 -2,0.78C11.47,5.3 10.77,5 10,5H6C4.35,5 3,6.35 3,8v2.78C2.39,11.33 2,12.12 2,13v6h2v-2h16v2h2v-6C22,12.12 21.61,11.33 21,10.78zM14,7h4c0.55,0 1,0.45 1,1v2h-6V8C13,7.45 13.45,7 14,7zM5,8c0,-0.55 0.45,-1 1,-1h4c0.55,0 1,0.45 1,1v2H5V8zM4,15v-2c0,-0.55 0.45,-1 1,-1h14c0.55,0 1,0.45 1,1v2H4z"/>
+      android:pathData="M21,10.78V8c0,-1.65 -1.35,-3 -3,-3h-4c-0.77,0 -1.47,0.3 -2,0.78C11.47,5.3 10.77,5 10,5H6C4.35,5 3,6.35 3,8v2.78C2.39,11.33 2,12.12 2,13v6h2v-2h16v2h2v-6C22,12.12 21.61,11.33 21,10.78zM14,7h4c0.55,0 1,0.45 1,1v2h-6V8C13,7.45 13.45,7 14,7zM5,8c0,-0.55 0.45,-1 1,-1h4c0.55,0 1,0.45 1,1v2H5V8z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/blind.xml b/compose/material/material/icons/generator/raw-icons/filled/blind.xml
new file mode 100644
index 0000000..803b7dc
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/blind.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11.5,3.5m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.13,7.12c-0.17,-0.35 -0.44,-0.65 -0.8,-0.85C10.72,5.91 9.99,5.93 9.4,6.24l0,-0.01L4,9.3V14h2v-3.54l1.5,-0.85C7.18,10.71 7,11.85 7,13v5.33L4.4,21.8L6,23l3,-4l0.22,-3.54L11,18v5h2v-6.5l-1.97,-2.81c-0.04,-0.52 -0.14,-1.76 0.45,-3.4c0.75,1.14 1.88,1.98 3.2,2.41L20.63,23l0.87,-0.5L16.02,13H17v-2c-0.49,0 -2.88,0.17 -4.08,-2.21"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/construction.xml b/compose/material/material/icons/generator/raw-icons/filled/construction.xml
index 1828ec8..2c31758 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/construction.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/construction.xml
@@ -6,7 +6,7 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M13.7827,15.1719l2.1213,-2.1213l5.9962,5.9962l-2.1213,2.1213z"/>
+      android:pathData="M13.783,15.172l2.121,-2.121l5.996,5.996l-2.121,2.121z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M17.5,10c1.93,0 3.5,-1.57 3.5,-3.5c0,-0.58 -0.16,-1.12 -0.41,-1.6l-2.7,2.7L16.4,6.11l2.7,-2.7C18.62,3.16 18.08,3 17.5,3C15.57,3 14,4.57 14,6.5c0,0.41 0.08,0.8 0.21,1.16l-1.85,1.85l-1.78,-1.78l0.71,-0.71L9.88,5.61L12,3.49c-1.17,-1.17 -3.07,-1.17 -4.24,0L4.22,7.03l1.41,1.41H2.81L2.1,9.15l3.54,3.54l0.71,-0.71V9.15l1.41,1.41l0.71,-0.71l1.78,1.78l-7.41,7.41l2.12,2.12L16.34,9.79C16.7,9.92 17.09,10 17.5,10z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/contact_emergency.xml b/compose/material/material/icons/generator/raw-icons/filled/contact_emergency.xml
new file mode 100644
index 0000000..fc1965d
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/contact_emergency.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22,3H2C0.9,3 0,3.9 0,5v14c0,1.1 0.9,2 2,2h20c1.1,0 1.99,-0.9 1.99,-2L24,5C24,3.9 23.1,3 22,3zM9,8c1.65,0 3,1.35 3,3s-1.35,3 -3,3s-3,-1.35 -3,-3S7.35,8 9,8zM2.08,19c1.38,-2.39 3.96,-4 6.92,-4s5.54,1.61 6.92,4H2.08zM20.97,9.85l-0.75,1.3l-1.47,-0.85V12h-1.5v-1.7l-1.47,0.85l-0.75,-1.3L16.5,9l-1.47,-0.85l0.75,-1.3l1.47,0.85V6h1.5v1.7l1.47,-0.85l0.75,1.3L19.5,9L20.97,9.85z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/crop_16_9.xml b/compose/material/material/icons/generator/raw-icons/filled/crop_16_9.xml
index f66421e..7bc13cb 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/crop_16_9.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/crop_16_9.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,6L5,6c-1.1,0 -2,0.9 -2,2v8c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,8c0,-1.1 -0.9,-2 -2,-2zM19,16L5,16L5,8h14v8z"/>
+      android:pathData="M19,7H5C3.9,7 3,7.9 3,9v6c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V9C21,7.9 20.1,7 19,7zM19,15H5V9h14V15z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/crop_3_2.xml b/compose/material/material/icons/generator/raw-icons/filled/crop_3_2.xml
index 2984303..acaa273 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/crop_3_2.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/crop_3_2.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,4L5,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.9,-2 -2,-2zM19,18L5,18L5,6h14v12z"/>
+      android:pathData="M19,6H5C3.9,6 3,6.9 3,8v8c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V8C21,6.9 20.1,6 19,6zM19,16H5V8h14V16z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/crop_5_4.xml b/compose/material/material/icons/generator/raw-icons/filled/crop_5_4.xml
index 9ebb272..e9fc8e8 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/crop_5_4.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/crop_5_4.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,5L5,5c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,7c0,-1.1 -0.9,-2 -2,-2zM19,17L5,17L5,7h14v10z"/>
+      android:pathData="M19,4H5C3.9,4 3,4.9 3,6v12c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V6C21,4.9 20.1,4 19,4zM19,18H5V6h14V18z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/crop_7_5.xml b/compose/material/material/icons/generator/raw-icons/filled/crop_7_5.xml
index 03c21aa..d151917 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/crop_7_5.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/crop_7_5.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,7L5,7c-1.1,0 -2,0.9 -2,2v6c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,9c0,-1.1 -0.9,-2 -2,-2zM19,15L5,15L5,9h14v6z"/>
+      android:pathData="M19,5H5C3.9,5 3,5.9 3,7v10c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V7C21,5.9 20.1,5 19,5zM19,17H5V7h14V17z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/dataset.xml b/compose/material/material/icons/generator/raw-icons/filled/dataset.xml
new file mode 100644
index 0000000..a19cab0
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/dataset.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19,3H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5C21,3.9 20.1,3 19,3zM11,17H7v-4h4V17zM11,11H7V7h4V11zM17,17h-4v-4h4V17zM17,11h-4V7h4V11z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/dataset_linked.xml b/compose/material/material/icons/generator/raw-icons/filled/dataset_linked.xml
new file mode 100644
index 0000000..3f2aa35
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/dataset_linked.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8.09,17H7v-4h3.69c0.95,-0.63 2.09,-1 3.31,-1h6c0.34,0 0.67,0.04 1,0.09V5c0,-1.1 -0.9,-2 -2,-2H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h3.81C8.3,20.12 8,19.09 8,18C8,17.66 8.04,17.33 8.09,17zM13,7h4v4h-4V7zM7,7h4v4H7V7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,18c0,-1.1 0.9,-2 2,-2h2v-2h-2c-2.21,0 -4,1.79 -4,4c0,2.21 1.79,4 4,4h2v-2h-2C12.9,20 12,19.1 12,18z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,14h-2v2h2c1.1,0 2,0.9 2,2s-0.9,2 -2,2h-2v2h2c2.21,0 4,-1.79 4,-4C24,15.79 22.21,14 20,14z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,17h6v2h-6z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/desktop_windows.xml b/compose/material/material/icons/generator/raw-icons/filled/desktop_windows.xml
index 01ab0aa..bd4cb0b 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/desktop_windows.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/desktop_windows.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M21,2L3,2c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h7v2L8,20v2h8v-2h-2v-2h7c1.1,0 2,-0.9 2,-2L23,4c0,-1.1 -0.9,-2 -2,-2zM21,16L3,16L3,4h18v12z"/>
+      android:pathData="M20,3H4C2.9,3 2,3.9 2,5v10c0,1.1 0.9,2 2,2h6v2H8v2h8v-2h-2v-2h6c1.1,0 2,-0.9 2,-2V5C22,3.9 21.1,3 20,3"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/directions_off.xml b/compose/material/material/icons/generator/raw-icons/filled/directions_off.xml
index 6cab033..445f47b 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/directions_off.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/directions_off.xml
@@ -6,11 +6,8 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M9.41,6.58L12,4h0l8,8l-2.58,2.59L18.83,16l2.58,-2.59c0.78,-0.78 0.78,-2.05 0,-2.83l-8,-8c-0.78,-0.78 -2.05,-0.78 -2.83,0L8,5.17L9.41,6.58z"/>
+      android:pathData="M12.83,10h0.67V7.5L17,11l-1.59,1.59L18.83,16l2.59,-2.59c0.78,-0.78 0.78,-2.05 0,-2.83l-7.99,-8c-0.78,-0.78 -2.05,-0.78 -2.83,0L8,5.17L12.83,10z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M2.81,2.81L1.39,4.22L5.17,8l-2.58,2.59c-0.78,0.78 -0.78,2.05 0,2.83l8,8c0.78,0.78 2.05,0.78 2.83,0L16,18.83l3.78,3.78l1.41,-1.41L2.81,2.81zM12,20l-8,-8l2.58,-2.59L8.17,11H7v2h3.17l1.5,1.5l-1.08,1.09L12,17l1.09,-1.09l1.5,1.5L12,20z"/>
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M10.9165,8.0873l1.0889,-1.0889l4.9992,4.9992l-1.0889,1.0889z"/>
+      android:pathData="M2.81,2.81L1.39,4.22L5.17,8l-2.59,2.59c-0.78,0.78 -0.78,2.05 0,2.83l8.01,8c0.78,0.78 2.05,0.78 2.83,0L16,18.83l3.78,3.78l1.41,-1.41L2.81,2.81zM10,15H8v-4c0,-0.05 0.02,-0.09 0.03,-0.14L10,12.83V15z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/diversity_1.xml b/compose/material/material/icons/generator/raw-icons/filled/diversity_1.xml
new file mode 100644
index 0000000..e99d32f
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/diversity_1.xml
@@ -0,0 +1,28 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,14m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.22,17.58C0.48,17.9 0,18.62 0,19.43V21l4.5,0v-1.61c0,-0.83 0.23,-1.61 0.63,-2.29C4.76,17.04 4.39,17 4,17C3.01,17 2.07,17.21 1.22,17.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,14m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.78,17.58C21.93,17.21 20.99,17 20,17c-0.39,0 -0.76,0.04 -1.13,0.1c0.4,0.68 0.63,1.46 0.63,2.29V21l4.5,0v-1.57C24,18.62 23.52,17.9 22.78,17.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.24,16.65c-1.17,-0.52 -2.61,-0.9 -4.24,-0.9c-1.63,0 -3.07,0.39 -4.24,0.9C6.68,17.13 6,18.21 6,19.39V21h12v-1.61C18,18.21 17.32,17.13 16.24,16.65z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,12c0,1.66 1.34,3 3,3s3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3S9,10.34 9,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2.48,10.86C2.17,10.1 2,9.36 2,8.6C2,6.02 4.02,4 6.6,4c2.68,0 3.82,1.74 5.4,3.59C13.57,5.76 14.7,4 17.4,4C19.98,4 22,6.02 22,8.6c0,0.76 -0.17,1.5 -0.48,2.26c0.65,0.31 1.18,0.82 1.53,1.44C23.65,11.1 24,9.88 24,8.6C24,4.9 21.1,2 17.4,2c-2.09,0 -4.09,0.97 -5.4,2.51C10.69,2.97 8.69,2 6.6,2C2.9,2 0,4.9 0,8.6c0,1.28 0.35,2.5 0.96,3.7C1.31,11.68 1.84,11.17 2.48,10.86z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/diversity_2.xml b/compose/material/material/icons/generator/raw-icons/filled/diversity_2.xml
new file mode 100644
index 0000000..b333db5
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/diversity_2.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10.1,15.9l1.42,-1.42C8.79,12.05 7,10.41 7,8.85C7,7.8 7.8,7 8.85,7c1.11,0 1.54,0.65 2.68,2h0.93c1.12,-1.31 1.53,-2 2.68,-2c0.87,0 1.55,0.54 1.77,1.32c0.35,-0.04 0.68,-0.06 1,-0.06c0.36,0 0.7,0.03 1.03,0.08C18.7,6.43 17.13,5 15.15,5c-0.12,0 -0.23,0.03 -0.35,0.04C14.92,4.71 15,4.37 15,4c0,-1.66 -1.34,-3 -3,-3S9,2.34 9,4c0,0.37 0.08,0.71 0.2,1.04C9.08,5.03 8.97,5 8.85,5C6.69,5 5,6.69 5,8.85C5,11.27 7.04,13.16 10.1,15.9z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.5,16.24c-0.32,-0.18 -0.66,-0.29 -1,-0.35c0.07,-0.1 0.15,-0.18 0.21,-0.28c1.08,-1.87 0.46,-4.18 -1.41,-5.26c-2.09,-1.21 -4.76,-0.39 -8.65,0.9l0.52,1.94c3.47,-1.14 5.79,-1.88 7.14,-1.1c0.91,0.53 1.2,1.61 0.68,2.53c-0.56,0.96 -1.33,1 -3.07,1.32l-0.47,0.81c0.58,1.62 0.97,2.33 0.39,3.32c-0.53,0.91 -1.61,1.2 -2.53,0.68c-0.06,-0.03 -0.11,-0.09 -0.17,-0.13c-0.3,0.67 -0.64,1.24 -1.03,1.73c0.07,0.04 0.13,0.09 0.2,0.14c1.87,1.08 4.18,0.46 5.26,-1.41c0.06,-0.1 0.09,-0.21 0.14,-0.32c0.22,0.27 0.48,0.51 0.8,0.69c1.43,0.83 3.27,0.34 4.1,-1.1S23.93,17.06 22.5,16.24z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.32,14.01c-0.74,3.58 -1.27,5.95 -2.62,6.73c-0.91,0.53 -2,0.24 -2.53,-0.68c-0.56,-0.96 -0.2,-1.66 0.39,-3.32L7.1,15.93c-1.7,-0.31 -2.5,-0.33 -3.07,-1.32c-0.53,-0.91 -0.24,-2 0.68,-2.53c0.09,-0.05 0.19,-0.08 0.29,-0.11c-0.35,-0.56 -0.64,-1.17 -0.82,-1.85c-0.16,0.07 -0.32,0.14 -0.48,0.23c-1.87,1.08 -2.49,3.39 -1.41,5.26c0.06,0.1 0.14,0.18 0.21,0.28c-0.34,0.06 -0.68,0.17 -1,0.35c-1.43,0.83 -1.93,2.66 -1.1,4.1s2.66,1.93 4.1,1.1c0.32,-0.18 0.58,-0.42 0.8,-0.69c0.05,0.11 0.08,0.22 0.14,0.32c1.08,1.87 3.39,2.49 5.26,1.41c2.09,-1.21 2.71,-3.93 3.55,-7.94L12.32,14.01z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/diversity_3.xml b/compose/material/material/icons/generator/raw-icons/filled/diversity_3.xml
new file mode 100644
index 0000000..bb41d74
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/diversity_3.xml
@@ -0,0 +1,22 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6.32,13.01c0.96,0.02 1.85,0.5 2.45,1.34C9.5,15.38 10.71,16 12,16c1.29,0 2.5,-0.62 3.23,-1.66c0.6,-0.84 1.49,-1.32 2.45,-1.34C16.96,11.78 14.08,11 12,11C9.93,11 7.04,11.78 6.32,13.01z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,13L4,13c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3s-3,1.34 -3,3C1,11.66 2.34,13 4,13z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,13L20,13c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3s-3,1.34 -3,3C17,11.66 18.34,13 20,13z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,10c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3S9,5.34 9,7C9,8.66 10.34,10 12,10z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21,14h-3.27c-0.77,0 -1.35,0.45 -1.68,0.92C16.01,14.98 14.69,17 12,17c-1.43,0 -3.03,-0.64 -4.05,-2.08C7.56,14.37 6.95,14 6.27,14H3c-1.1,0 -2,0.9 -2,2v4h7v-2.26c1.15,0.8 2.54,1.26 4,1.26s2.85,-0.46 4,-1.26V20h7v-4C23,14.9 22.1,14 21,14z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/emoji_symbols.xml b/compose/material/material/icons/generator/raw-icons/filled/emoji_symbols.xml
index 8366721..5c3024a 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/emoji_symbols.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/emoji_symbols.xml
@@ -12,7 +12,7 @@
       android:pathData="M6,11l2,0l0,-4l3,0l0,-2l-8,0l0,2l3,0z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12.4036,20.1819l7.7781,-7.7781l1.4142,1.4142l-7.7781,7.7781z"/>
+      android:pathData="M12.404,20.182l7.778,-7.778l1.414,1.414l-7.778,7.778z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M14.5,14.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/face_2.xml b/compose/material/material/icons/generator/raw-icons/filled/face_2.xml
new file mode 100644
index 0000000..4b29f67
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/face_2.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21.97,13.52c0,-0.01 0,-0.02 0,-0.04C23.21,12.38 24,10.78 24,9c0,-3.31 -2.69,-6 -6,-6c-0.26,0 -0.52,0.02 -0.78,0.06C16.19,1.23 14.24,0 12,0S7.81,1.23 6.78,3.06C6.52,3.02 6.26,3 6,3C2.69,3 0,5.69 0,9c0,1.78 0.79,3.38 2.02,4.48c0,0.01 0,0.02 0,0.04C0.79,14.62 0,16.22 0,18c0,3.31 2.69,6 6,6c1.39,0 2.67,-0.48 3.69,-1.28C10.43,22.9 11.2,23 12,23s1.57,-0.1 2.31,-0.28C15.33,23.52 16.61,24 18,24c3.31,0 6,-2.69 6,-6C24,16.22 23.21,14.62 21.97,13.52zM12,21c-4.41,0 -8,-3.59 -8,-8c0,-3.72 2.56,-6.85 6,-7.74c0,0.02 0,0.03 0,0.05c0,3.34 2.72,6.06 6.06,6.06c1.26,0 2.45,-0.39 3.45,-1.09C19.82,11.14 20,12.05 20,13C20,17.41 16.41,21 12,21z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,14m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,14m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/face_3.xml b/compose/material/material/icons/generator/raw-icons/filled/face_3.xml
new file mode 100644
index 0000000..c7d50ae
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/face_3.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.91,11.96C22.39,6.32 17.66,2 12,2S1.61,6.32 1.09,11.96l-0.9,9.86C0.09,22.99 1.01,24 2.19,24h19.62c1.18,0 2.1,-1.01 1.99,-2.18L22.91,11.96zM4.54,9.13C5.41,9.68 6.43,10 7.5,10C9.36,10 11,9.07 12,7.65C13,9.07 14.64,10 16.5,10c1.07,0 2.09,-0.32 2.96,-0.87C19.8,10.02 20,10.99 20,12c0,4.41 -3.59,8 -8,8s-8,-3.59 -8,-8C4,10.99 4.2,10.02 4.54,9.13z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/face_4.xml b/compose/material/material/icons/generator/raw-icons/filled/face_4.xml
new file mode 100644
index 0000000..655df37
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/face_4.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,2c-0.96,0 -1.88,0.14 -2.75,0.39C8.37,0.96 6.8,0 5,0C2.24,0 0,2.24 0,5c0,1.8 0.96,3.37 2.39,4.25C2.14,10.12 2,11.04 2,12c0,5.52 4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8c0,-0.05 0.01,-0.1 0.01,-0.15c2.6,-0.98 4.68,-2.99 5.74,-5.55C11.58,8.56 14.37,10 17.5,10c0.75,0 1.47,-0.09 2.17,-0.24C19.88,10.47 20,11.22 20,12C20,16.41 16.41,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/face_5.xml b/compose/material/material/icons/generator/raw-icons/filled/face_5.xml
new file mode 100644
index 0000000..525db6c
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/face_5.xml
@@ -0,0 +1,76 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8c0,-1.12 0.23,-2.18 0.65,-3.15C4.74,8.94 4.86,9 5,9c0.28,0 0.5,-0.22 0.5,-0.5c0,-0.25 -0.19,-0.45 -0.43,-0.49c0.15,-0.26 0.32,-0.51 0.49,-0.75C5.53,7.34 5.5,7.41 5.5,7.5C5.5,7.78 5.72,8 6,8s0.5,-0.22 0.5,-0.5C6.5,7.22 6.28,7 6,7C5.87,7 5.75,7.05 5.66,7.13c0.52,-0.68 1.15,-1.28 1.86,-1.76C7.51,5.41 7.5,5.45 7.5,5.5C7.5,5.78 7.72,6 8,6s0.5,-0.22 0.5,-0.5c0,-0.24 -0.17,-0.43 -0.4,-0.48c0.16,-0.09 0.32,-0.17 0.49,-0.25C8.68,4.91 8.83,5 9,5c0.28,0 0.5,-0.22 0.5,-0.5c0,-0.03 -0.01,-0.06 -0.02,-0.09c0.39,-0.13 0.79,-0.23 1.21,-0.3C10.58,4.21 10.5,4.34 10.5,4.5C10.5,4.78 10.72,5 11,5s0.5,-0.22 0.5,-0.5c0,-0.21 -0.13,-0.38 -0.3,-0.46C11.46,4.01 11.73,4 12,4s0.54,0.01 0.8,0.04c-0.18,0.08 -0.3,0.25 -0.3,0.46C12.5,4.78 12.72,5 13,5s0.5,-0.22 0.5,-0.5c0,-0.16 -0.08,-0.29 -0.19,-0.38c0.41,0.07 0.82,0.17 1.21,0.3C14.51,4.44 14.5,4.47 14.5,4.5C14.5,4.78 14.72,5 15,5c0.17,0 0.32,-0.09 0.41,-0.23c0.17,0.08 0.33,0.16 0.49,0.25c-0.23,0.05 -0.4,0.24 -0.4,0.48C15.5,5.78 15.72,6 16,6s0.5,-0.22 0.5,-0.5c0,-0.05 -0.01,-0.09 -0.03,-0.13c0.71,0.48 1.34,1.08 1.86,1.76C18.25,7.05 18.13,7 18,7c-0.28,0 -0.5,0.22 -0.5,0.5C17.5,7.78 17.72,8 18,8s0.5,-0.22 0.5,-0.5c0,-0.09 -0.03,-0.16 -0.07,-0.23c0.18,0.24 0.34,0.49 0.49,0.75C18.69,8.05 18.5,8.25 18.5,8.5C18.5,8.78 18.72,9 19,9c0.14,0 0.26,-0.06 0.35,-0.15C19.77,9.82 20,10.88 20,12C20,16.41 16.41,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,5.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,5.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,5.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/face_6.xml b/compose/material/material/icons/generator/raw-icons/filled/face_6.xml
new file mode 100644
index 0000000..8c34172
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/face_6.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8c0,-0.01 0,-0.02 0,-0.03c2.31,-0.22 3.43,-1.59 4.34,-3.41C8.51,8.21 8.85,8 9.24,8h5.53c0.38,0 0.72,0.21 0.89,0.55c0.9,1.8 1.99,3.19 4.34,3.41c0,0.01 0,0.02 0,0.03C20,16.41 16.41,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/fire_hydrant_alt.xml b/compose/material/material/icons/generator/raw-icons/filled/fire_hydrant_alt.xml
new file mode 100644
index 0000000..7e81f57
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/fire_hydrant_alt.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19,11h-1V8h2V6h-2.35C16.83,3.67 14.61,2 12,2S7.17,3.67 6.35,6H4v2h2v3H5c-1.1,0 -2,0.9 -2,2v2c0,1.1 0.9,2 2,2h1v3H4v2h16v-2h-2v-3h1c1.1,0 2,-0.9 2,-2v-2C21,11.9 20.1,11 19,11zM12,17.5c-1.93,0 -3.5,-1.57 -3.5,-3.5s1.57,-3.5 3.5,-3.5s3.5,1.57 3.5,3.5S13.93,17.5 12,17.5z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,14m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/fire_truck.xml b/compose/material/material/icons/generator/raw-icons/filled/fire_truck.xml
new file mode 100644
index 0000000..f908f13
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/fire_truck.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.9,10.69l-1.44,-4.32C21.18,5.55 20.42,5 19.56,5H19V4c0,-0.55 -0.45,-1 -1,-1h-1c-0.55,0 -1,0.45 -1,1v1h-2c-1.1,0 -2,0.9 -2,2v4H1v5c0,1.1 0.9,2 2,2h1c0,1.66 1.34,3 3,3s3,-1.34 3,-3h4c0,1.66 1.34,3 3,3s3,-1.34 3,-3h3v-6.68C23,11.11 22.97,10.9 22.9,10.69zM7,19c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1s1,0.45 1,1S7.55,19 7,19zM17,19c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1s1,0.45 1,1S17.55,19 17,19zM14,11V7h5.56l1.33,4H14z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,8.5h-1v-2h1V5H1v1.5h1v2H1V10h10V8.5zM5.25,8.5H3.5v-2h1.75V8.5zM8.5,8.5H6.75v-2H8.5V8.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/fluorescent.xml b/compose/material/material/icons/generator/raw-icons/filled/fluorescent.xml
new file mode 100644
index 0000000..2056c86
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/fluorescent.xml
@@ -0,0 +1,28 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M5,9h14v6h-14z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,2h2v3h-2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.286,6.399l1.79,-1.802l1.419,1.409l-1.79,1.802z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,19h2v3h-2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.29,17.71l1.79,1.8l1.42,-1.42l-1.8,-1.79z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3.495,6.009l1.407,-1.407l1.789,1.789l-1.407,1.407z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3.492,18.076l1.802,-1.79l1.409,1.419l-1.802,1.79z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/gavel.xml b/compose/material/material/icons/generator/raw-icons/filled/gavel.xml
index cbe17b2..df53184 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/gavel.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/gavel.xml
@@ -6,13 +6,13 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M5.2496,8.0688l2.83,-2.8268l14.134,14.15l-2.83,2.8268z"/>
+      android:pathData="M5.25,8.069l2.83,-2.827l14.134,14.15l-2.83,2.827z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M9.4857,3.8272l2.828,-2.8288l5.6576,5.656l-2.828,2.8288z"/>
+      android:pathData="M9.486,3.827l2.828,-2.829l5.658,5.656l-2.828,2.829z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M0.9989,12.3147l2.8284,-2.8284l5.6568,5.6568l-2.8284,2.8284z"/>
+      android:pathData="M0.999,12.315l2.828,-2.828l5.657,5.657l-2.828,2.828z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M1,21h12v2h-12z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/groups_2.xml b/compose/material/material/icons/generator/raw-icons/filled/groups_2.xml
new file mode 100644
index 0000000..de0bfd4
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/groups_2.xml
@@ -0,0 +1,25 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10.27,12h3.46c0.93,0 1.63,-0.83 1.48,-1.75l-0.3,-1.79C14.67,7.04 13.44,6 12,6S9.33,7.04 9.09,8.47l-0.3,1.79C8.64,11.17 9.34,12 10.27,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.66,11.11c-0.13,0.26 -0.18,0.57 -0.1,0.88c0.16,0.69 0.76,1.03 1.53,1c0,0 1.49,0 1.95,0c0.83,0 1.51,-0.58 1.51,-1.29c0,-0.14 -0.03,-0.27 -0.07,-0.4c-0.01,-0.03 -0.01,-0.05 0.01,-0.08c0.09,-0.16 0.14,-0.34 0.14,-0.53c0,-0.31 -0.14,-0.6 -0.36,-0.82c-0.03,-0.03 -0.03,-0.06 -0.02,-0.1c0.07,-0.2 0.07,-0.43 0.01,-0.65C6.1,8.69 5.71,8.4 5.27,8.38c-0.03,0 -0.05,-0.01 -0.07,-0.03C5.03,8.14 4.72,8 4.37,8C4.07,8 3.8,8.1 3.62,8.26C3.59,8.29 3.56,8.29 3.53,8.28c-0.14,-0.06 -0.3,-0.09 -0.46,-0.09c-0.65,0 -1.18,0.49 -1.24,1.12c0,0.02 -0.01,0.04 -0.03,0.06c-0.29,0.26 -0.46,0.65 -0.41,1.05c0.03,0.22 0.12,0.43 0.25,0.6C1.67,11.04 1.67,11.08 1.66,11.11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.24,13.65c-1.17,-0.52 -2.61,-0.9 -4.24,-0.9c-1.63,0 -3.07,0.39 -4.24,0.9C6.68,14.13 6,15.21 6,16.39V18h12v-1.61C18,15.21 17.32,14.13 16.24,13.65z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.22,14.58C0.48,14.9 0,15.62 0,16.43V18l4.5,0v-1.61c0,-0.83 0.23,-1.61 0.63,-2.29C4.76,14.04 4.39,14 4,14C3.01,14 2.07,14.21 1.22,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.78,14.58C21.93,14.21 20.99,14 20,14c-0.39,0 -0.76,0.04 -1.13,0.1c0.4,0.68 0.63,1.46 0.63,2.29V18l4.5,0v-1.57C24,15.62 23.52,14.9 22.78,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22,11v-0.5c0,-1.1 -0.9,-2 -2,-2h-2c-0.42,0 -0.65,0.48 -0.39,0.81l0.7,0.63C18.12,10.25 18,10.61 18,11c0,1.1 0.9,2 2,2S22,12.1 22,11z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/groups_3.xml b/compose/material/material/icons/generator/raw-icons/filled/groups_3.xml
new file mode 100644
index 0000000..66b5e90
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/groups_3.xml
@@ -0,0 +1,25 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.24,13.65c-1.17,-0.52 -2.61,-0.9 -4.24,-0.9c-1.63,0 -3.07,0.39 -4.24,0.9C6.68,14.13 6,15.21 6,16.39V18h12v-1.61C18,15.21 17.32,14.13 16.24,13.65z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.22,14.58C0.48,14.9 0,15.62 0,16.43V18l4.5,0v-1.61c0,-0.83 0.23,-1.61 0.63,-2.29C4.76,14.04 4.39,14 4,14C3.01,14 2.07,14.21 1.22,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.78,14.58C21.93,14.21 20.99,14 20,14c-0.39,0 -0.76,0.04 -1.13,0.1c0.4,0.68 0.63,1.46 0.63,2.29V18l4.5,0v-1.57C24,15.62 23.52,14.9 22.78,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,12c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3S9,7.34 9,9C9,10.66 10.34,12 12,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.497,11l2.503,-2.503l2.503,2.503l-2.503,2.503z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,9l-2.5,4l5,0z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/home_work.xml b/compose/material/material/icons/generator/raw-icons/filled/home_work.xml
index 96d57ee..2ba7ff2 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/home_work.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/home_work.xml
@@ -6,8 +6,8 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M8.17,5.7L1,10.48V21h5v-8h4v8h5V10.25z"/>
+      android:pathData="M1,11l0,10l5,0l0,-6l4,0l0,6l5,0l0,-10l-7,-5z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M10,3v1.51l2,1.33L13.73,7L15,7v0.85l2,1.34L17,11h2v2h-2v2h2v2h-2v4h6L23,3L10,3zM19,9h-2L17,7h2v2z"/>
+      android:pathData="M10,3v1.97l7,5V11h2v2h-2v2h2v2h-2v4h6V3H10zM19,9h-2V7h2V9z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/local_fire_department.xml b/compose/material/material/icons/generator/raw-icons/filled/local_fire_department.xml
index adb2a4a..4bc17cf 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/local_fire_department.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/local_fire_department.xml
@@ -6,5 +6,8 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19.48,12.35c-1.57,-4.08 -7.16,-4.3 -5.81,-10.23c0.1,-0.44 -0.37,-0.78 -0.75,-0.55C9.29,3.71 6.68,8 8.87,13.62c0.18,0.46 -0.36,0.89 -0.75,0.59c-1.81,-1.37 -2,-3.34 -1.84,-4.75c0.06,-0.52 -0.62,-0.77 -0.91,-0.34C4.69,10.16 4,11.84 4,14.37c0.38,5.6 5.11,7.32 6.81,7.54c2.43,0.31 5.06,-0.14 6.95,-1.87C19.84,18.11 20.6,15.03 19.48,12.35zM10.2,17.38c1.44,-0.35 2.18,-1.39 2.38,-2.31c0.33,-1.43 -0.96,-2.83 -0.09,-5.09c0.33,1.87 3.27,3.04 3.27,5.08C15.84,17.59 13.1,19.76 10.2,17.38z"/>
+      android:pathData="M12,12.9l-2.13,2.09C9.31,15.55 9,16.28 9,17.06C9,18.68 10.35,20 12,20s3,-1.32 3,-2.94c0,-0.78 -0.31,-1.52 -0.87,-2.07L12,12.9z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,6l-0.44,0.55C14.38,8.02 12,7.19 12,5.3V2c0,0 -8,4 -8,11c0,2.92 1.56,5.47 3.89,6.86C7.33,19.07 7,18.1 7,17.06c0,-1.32 0.52,-2.56 1.47,-3.5L12,10.1l3.53,3.47c0.95,0.93 1.47,2.17 1.47,3.5c0,1.02 -0.31,1.96 -0.85,2.75c1.89,-1.15 3.29,-3.06 3.71,-5.3C20.52,10.97 18.79,7.62 16,6z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/macro_off.xml b/compose/material/material/icons/generator/raw-icons/filled/macro_off.xml
new file mode 100644
index 0000000..bae1caf
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/macro_off.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.98,17.15C20.63,15.91 21,14.5 21,13c-1.5,0 -2.91,0.37 -4.15,1.02L19.98,17.15z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3,13c0,4.97 4.03,9 9,9C12,17.03 7.97,13 3,13z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,5.5c1.38,0 2.5,1.12 2.5,2.5c0,0.99 -0.58,1.84 -1.42,2.25l2.48,2.48c0.11,0.02 0.23,0.03 0.35,0.03c1.38,0 2.5,-1.12 2.5,-2.5c0,-1 -0.59,-1.85 -1.43,-2.25c0.84,-0.4 1.43,-1.25 1.43,-2.25c0,-1.38 -1.12,-2.5 -2.5,-2.5c-0.53,0 -1.01,0.16 -1.42,0.44L14.5,3.5C14.5,2.12 13.38,1 12,1S9.5,2.12 9.5,3.5l0.02,0.19C9.12,3.41 8.63,3.25 8.1,3.25c-0.57,0 -1.09,0.2 -1.51,0.52l3.16,3.16C10.16,6.08 11.01,5.5 12,5.5z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2.81,2.81L1.39,4.22l4.64,4.64C5.76,9.26 5.6,9.73 5.6,10.25c0,1.38 1.12,2.5 2.5,2.5c0.52,0 0.99,-0.16 1.4,-0.43l0.02,0.02L9.5,12.5c0,1.38 1.12,2.5 2.5,2.5c0.05,0 0.1,-0.01 0.16,-0.02l1.64,1.64C12.67,18.12 12,19.98 12,22c2.02,0 3.88,-0.67 5.38,-1.8l2.4,2.4l1.41,-1.41L2.81,2.81z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/man_2.xml b/compose/material/material/icons/generator/raw-icons/filled/man_2.xml
new file mode 100644
index 0000000..230adba
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/man_2.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,7h-4C8.9,7 8,7.9 8,9v6h2.5v7h3v-7H16V9C16,7.9 15.1,7 14,7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/man_3.xml b/compose/material/material/icons/generator/raw-icons/filled/man_3.xml
new file mode 100644
index 0000000..af7bb64
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/man_3.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,7h-4C8.9,7 8,7.9 8,9v6h2v7h4v-7h2V9C16,7.9 15.1,7 14,7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,1.751l2.249,2.249l-2.249,2.249l-2.249,-2.249z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/man_4.xml b/compose/material/material/icons/generator/raw-icons/filled/man_4.xml
new file mode 100644
index 0000000..3f70493
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/man_4.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.75,7h-3.5C9.04,7 8.11,8.07 8.27,9.26L10,22h4l1.73,-12.74C15.89,8.07 14.96,7 13.75,7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/noise_aware.xml b/compose/material/material/icons/generator/raw-icons/filled/noise_aware.xml
index dd729e1..cc4e0b7 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/noise_aware.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/noise_aware.xml
@@ -6,29 +6,50 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M4.07,13H2.05c0.2,2.01 1,3.84 2.21,5.33l1.43,-1.43C4.83,15.79 4.25,14.46 4.07,13z"/>
+      android:pathData="M16,15h-2c0,0.55 -0.45,1 -1,1c-0.43,0 -0.81,-0.27 -0.95,-0.68c-0.15,-0.44 -0.4,-1.08 -0.93,-1.61l-1.36,-1.36C9.28,11.87 9,11.19 9,10.5C9,9.12 10.12,8 11.5,8c1.21,0 2.22,0.86 2.45,2h2.02c-0.25,-2.25 -2.16,-4 -4.47,-4C9.02,6 7,8.02 7,10.5c0,1.22 0.49,2.41 1.35,3.27l1.36,1.36c0.17,0.17 0.31,0.44 0.44,0.82C10.56,17.17 11.71,18 13,18C14.65,18 16,16.65 16,15z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M5.69,7.1L4.26,5.67C3.05,7.16 2.25,8.99 2.05,11h2.02C4.25,9.54 4.83,8.21 5.69,7.1z"/>
+      android:pathData="M13.5,12.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M11,4.07V2.05c-2.01,0.2 -3.84,1 -5.33,2.21L7.1,5.69C8.21,4.83 9.54,4.25 11,4.07z"/>
+      android:pathData="M3.6,6.58l1.58,1.26c0.35,-0.57 0.77,-1.1 1.24,-1.57L4.85,5.02C4.38,5.49 3.97,6.02 3.6,6.58z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M18.33,4.26C16.84,3.05 15.01,2.25 13,2.05v2.02c1.46,0.18 2.79,0.76 3.9,1.62L18.33,4.26z"/>
+      android:pathData="M9.46,4.42L8.59,2.61c-0.63,0.23 -1.24,0.52 -1.8,0.87l0.87,1.81C8.22,4.93 8.82,4.64 9.46,4.42z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M18.31,16.9l1.43,1.43c1.21,-1.48 2.01,-3.32 2.21,-5.33h-2.02C19.75,14.46 19.17,15.79 18.31,16.9z"/>
+      android:pathData="M4.49,9.26L2.53,8.81c-0.21,0.63 -0.36,1.28 -0.44,1.95l1.96,0.45C4.11,10.53 4.27,9.88 4.49,9.26z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19.93,11h2.02c-0.2,-2.01 -1,-3.84 -2.21,-5.33L18.31,7.1C19.17,8.21 19.75,9.54 19.93,11z"/>
+      android:pathData="M20.4,6.58c-0.36,-0.56 -0.78,-1.09 -1.25,-1.56l-1.58,1.26c0.48,0.47 0.89,0.99 1.24,1.57L20.4,6.58z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M13,19.93v2.02c2.01,-0.2 3.84,-1 5.33,-2.21l-1.43,-1.43C15.79,19.17 14.46,19.75 13,19.93z"/>
+      android:pathData="M4.04,12.79l-1.96,0.45c0.08,0.67 0.23,1.33 0.44,1.95l1.97,-0.45C4.27,14.12 4.11,13.47 4.04,12.79z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M5.67,19.74c1.48,1.21 3.32,2.01 5.33,2.21v-2.02c-1.46,-0.18 -2.79,-0.76 -3.9,-1.62L5.67,19.74z"/>
+      android:pathData="M17.21,3.48c-0.57,-0.35 -1.17,-0.64 -1.8,-0.87l-0.87,1.81c0.64,0.22 1.24,0.51 1.8,0.87L17.21,3.48z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,12m-5,0a5,5 0,1 1,10 0a5,5 0,1 1,-10 0"/>
+      android:pathData="M13,4.07V2.05C12.67,2.02 12.34,2 12,2s-0.67,0.02 -1,0.05v2.02C11.33,4.03 11.66,4 12,4S12.67,4.03 13,4.07z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,19.93v2.02c0.33,0.03 0.66,0.05 1,0.05s0.67,-0.02 1,-0.05v-2.02C12.67,19.97 12.34,20 12,20S11.33,19.97 11,19.93z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.51,14.74l1.97,0.45c0.21,-0.63 0.36,-1.28 0.44,-1.95l-1.96,-0.45C19.89,13.47 19.73,14.12 19.51,14.74z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.96,11.21l1.96,-0.45c-0.08,-0.67 -0.23,-1.33 -0.44,-1.95l-1.97,0.45C19.73,9.88 19.89,10.53 19.96,11.21z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.58,17.73l1.58,1.26c0.47,-0.48 0.88,-1 1.25,-1.56l-1.58,-1.26C18.47,16.73 18.05,17.26 17.58,17.73z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6.79,20.52c0.57,0.35 1.17,0.64 1.8,0.87l0.87,-1.81c-0.64,-0.22 -1.24,-0.51 -1.8,-0.87L6.79,20.52z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14.54,19.58l0.87,1.81c0.63,-0.23 1.24,-0.52 1.8,-0.87l-0.87,-1.81C15.78,19.07 15.18,19.36 14.54,19.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3.6,17.42c0.36,0.56 0.78,1.09 1.25,1.56l1.58,-1.26c-0.48,-0.47 -0.89,-0.99 -1.24,-1.57L3.6,17.42z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/noise_control_off.xml b/compose/material/material/icons/generator/raw-icons/filled/noise_control_off.xml
index 4e65652..4d023ad 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/noise_control_off.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/noise_control_off.xml
@@ -6,5 +6,20 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,12m-5,0a5,5 0,1 1,10 0a5,5 0,1 1,-10 0"/>
+      android:pathData="M12,4c1.44,0 2.79,0.38 3.95,1.05l1.45,-1.45C15.85,2.59 13.99,2 12,2S8.15,2.59 6.59,3.59l1.45,1.45C9.21,4.38 10.56,4 12,4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,12c0,1.44 -0.38,2.79 -1.05,3.95l1.45,1.45C21.41,15.85 22,13.99 22,12s-0.59,-3.85 -1.59,-5.41l-1.45,1.45C19.62,9.21 20,10.56 20,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,20c-1.44,0 -2.79,-0.38 -3.95,-1.05l-1.45,1.45C8.15,21.41 10.01,22 12,22s3.85,-0.59 5.41,-1.59l-1.45,-1.45C14.79,19.62 13.44,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,12c0,-1.44 0.38,-2.79 1.05,-3.95L3.59,6.59C2.59,8.15 2,10.01 2,12s0.59,3.85 1.59,5.41l1.45,-1.45C4.38,14.79 4,13.44 4,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11.5,6C9.02,6 7,8.02 7,10.5c0,1.22 0.49,2.41 1.35,3.27l1.36,1.36c0.17,0.17 0.31,0.44 0.44,0.82C10.56,17.17 11.71,18 13,18c1.65,0 3,-1.35 3,-3h-2c0,0.55 -0.45,1 -1,1c-0.43,0 -0.81,-0.27 -0.95,-0.68c-0.15,-0.44 -0.4,-1.08 -0.93,-1.61l-1.36,-1.36C9.28,11.87 9,11.19 9,10.5C9,9.12 10.12,8 11.5,8c1.21,0 2.22,0.86 2.45,2h2.02C15.72,7.75 13.81,6 11.5,6z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.5,12.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/percent.xml b/compose/material/material/icons/generator/raw-icons/filled/percent.xml
index 573e219..f41ca90 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/percent.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/percent.xml
@@ -9,7 +9,7 @@
       android:pathData="M7.5,11C9.43,11 11,9.43 11,7.5S9.43,4 7.5,4S4,5.57 4,7.5S5.57,11 7.5,11zM7.5,6C8.33,6 9,6.67 9,7.5S8.33,9 7.5,9S6,8.33 6,7.5S6.67,6 7.5,6z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M4.0025,18.5831l14.5875,-14.5875l1.4142,1.4142l-14.5875,14.5875z"/>
+      android:pathData="M4.002,18.583l14.587,-14.587l1.414,1.414l-14.587,14.587z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M16.5,13c-1.93,0 -3.5,1.57 -3.5,3.5s1.57,3.5 3.5,3.5s3.5,-1.57 3.5,-3.5S18.43,13 16.5,13zM16.5,18c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5s1.5,0.67 1.5,1.5S17.33,18 16.5,18z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/person_2.xml b/compose/material/material/icons/generator/raw-icons/filled/person_2.xml
new file mode 100644
index 0000000..add7774
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/person_2.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18.39,14.56C16.71,13.7 14.53,13 12,13c-2.53,0 -4.71,0.7 -6.39,1.56C4.61,15.07 4,16.1 4,17.22V20h16v-2.78C20,16.1 19.39,15.07 18.39,14.56z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9.78,12h4.44c1.21,0 2.14,-1.06 1.98,-2.26l-0.32,-2.45C15.57,5.39 13.92,4 12,4S8.43,5.39 8.12,7.29L7.8,9.74C7.64,10.94 8.57,12 9.78,12z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/person_3.xml b/compose/material/material/icons/generator/raw-icons/filled/person_3.xml
new file mode 100644
index 0000000..a4391aa
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/person_3.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18.39,14.56C16.71,13.7 14.53,13 12,13c-2.53,0 -4.71,0.7 -6.39,1.56C4.61,15.07 4,16.1 4,17.22V20h16v-2.78C20,16.1 19.39,15.07 18.39,14.56z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,12c0.17,0 3.83,0 4,0c1.66,0 3,-1.34 3,-3c0,-0.73 -0.27,-1.4 -0.71,-1.92C16.42,6.75 16.5,6.38 16.5,6c0,-1.25 -0.77,-2.32 -1.86,-2.77C14,2.48 13.06,2 12,2s-2,0.48 -2.64,1.23C8.27,3.68 7.5,4.75 7.5,6c0,0.38 0.08,0.75 0.21,1.08C7.27,7.6 7,8.27 7,9C7,10.66 8.34,12 10,12z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/person_4.xml b/compose/material/material/icons/generator/raw-icons/filled/person_4.xml
new file mode 100644
index 0000000..301f5c8
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/person_4.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18.39,14.56C16.71,13.7 14.53,13 12,13c-2.53,0 -4.71,0.7 -6.39,1.56C4.61,15.07 4,16.1 4,17.22V20h16v-2.78C20,16.1 19.39,15.07 18.39,14.56z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,12c2.21,0 4,-1.79 4,-4c0,-1.37 0,-3.5 0,-3.5C16,3.67 15.33,3 14.5,3c-0.52,0 -0.98,0.27 -1.25,0.67C12.98,3.27 12.52,3 12,3s-0.98,0.27 -1.25,0.67C10.48,3.27 10.02,3 9.5,3C8.67,3 8,3.67 8,4.5c0,0 0,2.12 0,3.5C8,10.21 9.79,12 12,12z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/psychology_alt.xml b/compose/material/material/icons/generator/raw-icons/filled/psychology_alt.xml
new file mode 100644
index 0000000..1cd3a7d
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/psychology_alt.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.94,9.06C19.5,5.73 16.57,3 13,3C9.47,3 6.57,5.61 6.08,9l-1.93,3.48C3.74,13.14 4.22,14 5,14h1l0,2c0,1.1 0.9,2 2,2h1v3h7l0,-4.68C18.62,15.07 20.35,12.24 19.94,9.06zM12.5,14c-0.41,0 -0.74,-0.33 -0.74,-0.74c0,-0.41 0.33,-0.73 0.74,-0.73c0.41,0 0.73,0.32 0.73,0.73C13.23,13.67 12.92,14 12.5,14zM14.26,9.68c-0.44,0.65 -0.86,0.85 -1.09,1.27c-0.09,0.17 -0.13,0.28 -0.13,0.82h-1.06c0,-0.29 -0.04,-0.75 0.18,-1.16c0.28,-0.51 0.83,-0.81 1.14,-1.26c0.33,-0.47 0.15,-1.36 -0.8,-1.36c-0.62,0 -0.92,0.47 -1.05,0.86l-0.96,-0.4C10.76,7.67 11.46,7 12.5,7c0.86,0 1.45,0.39 1.75,0.88C14.51,8.31 14.66,9.1 14.26,9.68z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/repartition.xml b/compose/material/material/icons/generator/raw-icons/filled/repartition.xml
new file mode 100644
index 0000000..69784ee
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/repartition.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3,21h18v-6H3V21zM10.33,19v-2h3.33v2H10.33zM19,19h-3.33v-2H19V19zM5,17h3.33v2H5V17z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,10l1.42,-1.42L5.83,7H17c1.1,0 2,0.9 2,2s-0.9,2 -2,2H3v2h14c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4H5.83l1.59,-1.59L6,2L2,6L6,10z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/screen_search_desktop.xml b/compose/material/material/icons/generator/raw-icons/filled/screen_search_desktop.xml
index 258bfd5..713b706 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/screen_search_desktop.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/screen_search_desktop.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M20,18C21.1,18 21.99,17.1 21.99,16L22,6C22,4.89 21.1,4 20,4L4,4C2.89,4 2,4.89 2,6L2,16C2,17.1 2.89,18 4,18L0,18L0,20L24,20L24,18L20,18ZM4,16L4,6L20,6L20,16L20,16.01L4,16ZM9.0967,9.9531C9.0967,8.9261 9.9327,8.0891 10.9607,8.0891C11.9877,8.0891 12.8247,8.9261 12.8247,9.9531C12.8247,10.9801 11.9877,11.8171 10.9607,11.8171C9.9327,11.8171 9.0967,10.9801 9.0967,9.9531ZM16.1287,14.1891L13.6467,11.7071C13.9777,11.2021 14.1737,10.6001 14.1737,9.9531C14.1737,8.1811 12.7327,6.7401 10.9607,6.7401C9.1887,6.7401 7.7467,8.1811 7.7467,9.9531C7.7467,11.7251 9.1887,13.1671 10.9607,13.1671C11.5967,13.1671 12.1857,12.9751 12.6847,12.6561L15.1737,15.1441L16.1287,14.1891Z"/>
+      android:pathData="M20,18C21.1,18 21.99,17.1 21.99,16L22,6C22,4.89 21.1,4 20,4L4,4C2.89,4 2,4.89 2,6L2,16C2,17.1 2.89,18 4,18L0,18L0,20L24,20L24,18L20,18ZM4,16L4,6L20,6L20,16L20,16.01L4,16ZM9.097,9.953C9.097,8.926 9.933,8.089 10.961,8.089C11.988,8.089 12.825,8.926 12.825,9.953C12.825,10.98 11.988,11.817 10.961,11.817C9.933,11.817 9.097,10.98 9.097,9.953ZM16.129,14.189L13.647,11.707C13.978,11.202 14.174,10.6 14.174,9.953C14.174,8.181 12.733,6.74 10.961,6.74C9.189,6.74 7.747,8.181 7.747,9.953C7.747,11.725 9.189,13.167 10.961,13.167C11.597,13.167 12.186,12.975 12.685,12.656L15.174,15.144L16.129,14.189Z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/shape_line.xml b/compose/material/material/icons/generator/raw-icons/filled/shape_line.xml
new file mode 100644
index 0000000..1007dca
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/shape_line.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,11c2.76,0 5,-2.24 5,-5S8.76,1 6,1S1,3.24 1,6S3.24,11 6,11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21,14h-5c-1.1,0 -2,0.9 -2,2v5c0,1.1 0.9,2 2,2h5c1.1,0 2,-0.9 2,-2v-5C23,14.9 22.1,14 21,14z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.71,7.7C18.11,7.89 18.54,8 19,8c1.65,0 3,-1.35 3,-3s-1.35,-3 -3,-3s-3,1.35 -3,3c0,0.46 0.11,0.89 0.3,1.29L6.29,16.3C5.89,16.11 5.46,16 5,16c-1.65,0 -3,1.35 -3,3s1.35,3 3,3s3,-1.35 3,-3c0,-0.46 -0.11,-0.89 -0.3,-1.29L17.71,7.7z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/sports_cricket.xml b/compose/material/material/icons/generator/raw-icons/filled/sports_cricket.xml
index 85c13a9..9258e4a 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/sports_cricket.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/sports_cricket.xml
@@ -9,7 +9,7 @@
       android:pathData="M15.05,12.81L6.56,4.32c-0.39,-0.39 -1.02,-0.39 -1.41,0L2.32,7.15c-0.39,0.39 -0.39,1.02 0,1.41l8.49,8.49c0.39,0.39 1.02,0.39 1.41,0l2.83,-2.83C15.44,13.83 15.44,13.2 15.05,12.81z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M14.3412,17.7562l1.4142,-1.4142l4.2426,4.2426l-1.4142,1.4142z"/>
+      android:pathData="M14.341,17.756l1.414,-1.414l4.243,4.243l-1.414,1.414z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M18.5,5.5m-3.5,0a3.5,3.5 0,1 1,7 0a3.5,3.5 0,1 1,-7 0"/>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/stacked_bar_chart.xml b/compose/material/material/icons/generator/raw-icons/filled/stacked_bar_chart.xml
index 5d5e671..2a7fd72 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/stacked_bar_chart.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/stacked_bar_chart.xml
@@ -6,5 +6,20 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M6,10h3v10L6,20zM6,5h3v4L6,9zM16,16h3v4h-3zM16,13h3v2h-3zM11,13h3v7h-3zM11,9h3v3h-3z"/>
+      android:pathData="M4,9h4v11h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,4h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,7h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,10h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,15h4v5h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,12h4v8h-4z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/transcribe.xml b/compose/material/material/icons/generator/raw-icons/filled/transcribe.xml
new file mode 100644
index 0000000..b9be39a
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/transcribe.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.93,16l1.63,-1.63c-2.77,-3.02 -2.77,-7.56 0,-10.74L17.93,2C14.03,5.89 14.02,11.95 17.93,16zM22.92,10.95c-0.84,-1.18 -0.84,-2.71 0,-3.89l-1.68,-1.69c-2.02,2.02 -2.02,5.07 0,7.27L22.92,10.95zM9,13c2.21,0 4,-1.79 4,-4c0,-2.21 -1.79,-4 -4,-4S5,6.79 5,9C5,11.21 6.79,13 9,13zM15.39,15.56C13.71,14.7 11.53,14 9,14c-2.53,0 -4.71,0.7 -6.39,1.56C1.61,16.07 1,17.1 1,18.22V21h16v-2.78C17,17.1 16.39,16.07 15.39,15.56z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/troubleshoot.xml b/compose/material/material/icons/generator/raw-icons/filled/troubleshoot.xml
new file mode 100644
index 0000000..97931d3
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/troubleshoot.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22,20.59l-4.69,-4.69C18.37,14.55 19,12.85 19,11c0,-4.42 -3.58,-8 -8,-8c-4.08,0 -7.44,3.05 -7.93,7h2.02C5.57,7.17 8.03,5 11,5c3.31,0 6,2.69 6,6s-2.69,6 -6,6c-2.42,0 -4.5,-1.44 -5.45,-3.5H3.4C4.45,16.69 7.46,19 11,19c1.85,0 3.55,-0.63 4.9,-1.69L20.59,22L22,20.59z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8.43,9.69l1.22,5.31l1.64,0l1.26,-3.78l0.95,2.28l2,0l0,-1.5l-1,0l-1.25,-3l-1.54,0l-1.12,3.37l-1.24,-5.37l-1.65,0l-1.25,4l-5.45,0l0,1.5l6.55,0z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/tungsten.xml b/compose/material/material/icons/generator/raw-icons/filled/tungsten.xml
index 98a63a7..54ae6a7 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/tungsten.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/tungsten.xml
@@ -15,10 +15,10 @@
       android:pathData="M19,11h3v2h-3z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M15.8941,17.8014l1.4071,-1.4071l2.1213,2.1213l-1.4071,1.4071z"/>
+      android:pathData="M15.894,17.801l1.407,-1.407l2.121,2.121l-1.407,1.407z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M4.5842,18.5085l2.1213,-2.1213l1.4071,1.4071l-2.1213,2.1213z"/>
+      android:pathData="M4.584,18.509l2.121,-2.121l1.407,1.407l-2.121,2.121z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M15,8.02V3H9v5.02C7.79,8.94 7,10.37 7,12c0,2.76 2.24,5 5,5s5,-2.24 5,-5C17,10.37 16.21,8.94 15,8.02zM11,5h2v2.1C12.68,7.04 12.34,7 12,7s-0.68,0.04 -1,0.1V5z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/type_specimen.xml b/compose/material/material/icons/generator/raw-icons/filled/type_specimen.xml
new file mode 100644
index 0000000..ea74671
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/type_specimen.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,6H2v14c0,1.1 0.9,2 2,2h14v-2H4V6z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,2H8C6.9,2 6,2.9 6,4v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2V4C22,2.9 21.1,2 20,2zM16.63,14.5l-0.8,-2.3h-3.63l-0.82,2.3H9.81l3.38,-9h1.61l3.38,9H16.63z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.96,7.17l-1.31,3.72l2.69,0l-1.3,-3.72z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/unfold_less_double.xml b/compose/material/material/icons/generator/raw-icons/filled/unfold_less_double.xml
new file mode 100644
index 0000000..92f9c80
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/unfold_less_double.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.58,1.41l-1.42,-1.41l-3.17,3.17l-3.17,-3.17l-1.41,1.41l4.58,4.59z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.58,6.41l-1.42,-1.41l-3.17,3.17l-3.17,-3.17l-1.41,1.41l4.58,4.59z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7.42,17.59l1.42,1.41l3.17,-3.17l3.17,3.17l1.41,-1.41l-4.58,-4.59z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7.42,22.59l1.42,1.41l3.17,-3.17l3.17,3.17l1.41,-1.41l-4.58,-4.59z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/unfold_more_double.xml b/compose/material/material/icons/generator/raw-icons/filled/unfold_more_double.xml
new file mode 100644
index 0000000..4d100fe
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/unfold_more_double.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,7.83L15.17,11l1.41,-1.41L12,5L7.41,9.59L8.83,11L12,7.83zM12,2.83L15.17,6l1.41,-1.41L12,0L7.41,4.59L8.83,6L12,2.83zM12,21.17L8.83,18l-1.41,1.41L12,24l4.59,-4.59L15.17,18L12,21.17zM12,16.17L8.83,13l-1.41,1.41L12,19l4.59,-4.59L15.17,13L12,16.17z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/video_chat.xml b/compose/material/material/icons/generator/raw-icons/filled/video_chat.xml
new file mode 100644
index 0000000..c618290
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/video_chat.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,2H4C2.9,2 2.01,2.9 2.01,4L2,22l4,-4h14c1.1,0 2,-0.9 2,-2V4C22,2.9 21.1,2 20,2zM17,13l-2,-1.99V13c0,0.55 -0.45,1 -1,1H8c-0.55,0 -1,-0.45 -1,-1V7c0,-0.55 0.45,-1 1,-1h6c0.55,0 1,0.45 1,1v1.99L17,7V13z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/view_comfy.xml b/compose/material/material/icons/generator/raw-icons/filled/view_comfy.xml
index cc452d4..7cf71d3 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/view_comfy.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/view_comfy.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3,9h4L7,5L3,5v4zM3,14h4v-4L3,10v4zM8,14h4v-4L8,10v4zM13,14h4v-4h-4v4zM8,9h4L12,5L8,5v4zM13,5v4h4L17,5h-4zM18,14h4v-4h-4v4zM3,19h4v-4L3,15v4zM8,19h4v-4L8,15v4zM13,19h4v-4h-4v4zM18,19h4v-4h-4v4zM18,5v4h4L22,5h-4z"/>
+      android:pathData="M2,4v7h20V4H2zM10,20h12v-7H10V20zM2,20h6v-7H2V20z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/view_compact.xml b/compose/material/material/icons/generator/raw-icons/filled/view_compact.xml
index fba7877..f2330a0 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/view_compact.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/view_compact.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3,19h6v-7L3,12v7zM10,19h12v-7L10,12v7zM3,5v6h19L22,5L3,5z"/>
+      android:pathData="M4,18h2.5v-2.5H4V18zM4,13.25h2.5v-2.5H4V13.25zM4,8.5h2.5V6H4V8.5zM17.5,6v2.5H20V6H17.5zM13,8.5h2.5V6H13V8.5zM17.5,18H20v-2.5h-2.5V18zM17.5,13.25H20v-2.5h-2.5V13.25zM8.5,18H11v-2.5H8.5V18zM13,18h2.5v-2.5H13V18zM8.5,8.5H11V6H8.5V8.5zM13,13.25h2.5v-2.5H13V13.25zM8.5,13.25H11v-2.5H8.5V13.25z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/voice_chat.xml b/compose/material/material/icons/generator/raw-icons/filled/voice_chat.xml
index 3891024..5cd0bda 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/voice_chat.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/voice_chat.xml
@@ -6,5 +6,20 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M20,2L4,2c-1.1,0 -1.99,0.9 -1.99,2L2,22l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM18,14l-4,-3.2L14,14L6,14L6,6h8v3.2L18,6v8z"/>
+      android:pathData="M20,2H4C2.9,2 2,2.9 2,4v18l4,-4h14c1.1,0 2,-0.9 2,-2V4C22,2.9 21.1,2 20,2zM20,16H6l-2,2V4h16V16z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11.25,5h1.5v10h-1.5z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8.5,7h1.5v6h-1.5z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,9h1.5v2h-1.5z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,7h1.5v6h-1.5z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.5,9h1.5v2h-1.5z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/wb_twilight.xml b/compose/material/material/icons/generator/raw-icons/filled/wb_twilight.xml
index 8431091..474dbed 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/wb_twilight.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/wb_twilight.xml
@@ -6,7 +6,7 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M16.9552,8.662l2.1207,-2.1222l1.4148,1.4138l-2.1207,2.1222z"/>
+      android:pathData="M16.955,8.662l2.121,-2.122l1.415,1.414l-2.121,2.122z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M2,18h20v2h-20z"/>
@@ -15,7 +15,7 @@
       android:pathData="M11,4h2v3h-2z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3.5425,7.9248l1.4142,-1.4142l2.1213,2.1213l-1.4142,1.4142z"/>
+      android:pathData="M3.543,7.925l1.414,-1.414l2.121,2.121l-1.414,1.414z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M5,16h14c0,-3.87 -3.13,-7 -7,-7S5,12.13 5,16z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/web_stories.xml b/compose/material/material/icons/generator/raw-icons/filled/web_stories.xml
new file mode 100644
index 0000000..a5b16c6
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/web_stories.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,4c1.1,0 2,0.9 2,2v12c0,1.1 -0.9,2 -2,2V4zM2,20c0,1.1 0.9,2 2,2h9c1.1,0 2,-0.9 2,-2V4c0,-1.1 -0.9,-2 -2,-2H4C2.9,2 2,2.9 2,4V20zM21,18c0.83,0 1.5,-0.67 1.5,-1.5v-9C22.5,6.67 21.83,6 21,6V18z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/window.xml b/compose/material/material/icons/generator/raw-icons/filled/window.xml
index ab563fe..85e9280 100644
--- a/compose/material/material/icons/generator/raw-icons/filled/window.xml
+++ b/compose/material/material/icons/generator/raw-icons/filled/window.xml
@@ -6,5 +6,14 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M20,2H4C2.9,2 2,2.9 2,4v16c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V4C22,2.9 21.1,2 20,2zM20,11h-7V4h7V11zM11,4v7H4V4H11zM4,13h7v7H4V13zM13,20v-7h7v7H13z"/>
+      android:pathData="M11,11V3H5C3.9,3 3,3.9 3,5v6H11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,11h8V5c0,-1.1 -0.9,-2 -2,-2h-6V11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,13H3v6c0,1.1 0.9,2 2,2h6V13z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,13v8h6c1.1,0 2,-0.9 2,-2v-6H13z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/filled/woman_2.xml b/compose/material/material/icons/generator/raw-icons/filled/woman_2.xml
new file mode 100644
index 0000000..1f42b3f
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/filled/woman_2.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.94,8.31C13.62,7.52 12.85,7 12,7s-1.62,0.52 -1.94,1.31L7,16h3.5v6h3v-6H17L13.94,8.31z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/account_box.xml b/compose/material/material/icons/generator/raw-icons/outlined/account_box.xml
index f53111e..e54cccb 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/account_box.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/account_box.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,5v14L5,19L5,5h14m0,-2L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM12,12c-1.65,0 -3,-1.35 -3,-3s1.35,-3 3,-3 3,1.35 3,3 -1.35,3 -3,3zM12,8c-0.55,0 -1,0.45 -1,1s0.45,1 1,1 1,-0.45 1,-1 -0.45,-1 -1,-1zM18,18L6,18v-1.53c0,-2.5 3.97,-3.58 6,-3.58s6,1.08 6,3.58L18,18zM8.31,16h7.38c-0.69,-0.56 -2.38,-1.12 -3.69,-1.12s-3.01,0.56 -3.69,1.12z"/>
+      android:pathData="M19,3H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5C21,3.9 20.1,3 19,3zM17,19H7v-0.24C8.42,17.62 10.16,17 12,17s3.58,0.62 5,1.76V19zM19,17.86C17.2,16.09 14.73,15 12,15s-5.2,1.09 -7,2.86V5h14V17.86zM12,13c1.93,0 3.5,-1.57 3.5,-3.5S13.93,6 12,6c-1.93,0 -3.5,1.57 -3.5,3.5S10.07,13 12,13zM12,8c0.83,0 1.5,0.67 1.5,1.5S12.83,11 12,11s-1.5,-0.67 -1.5,-1.5S11.17,8 12,8z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/account_circle.xml b/compose/material/material/icons/generator/raw-icons/outlined/account_circle.xml
index f63eaa3..df8eb9a 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/account_circle.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/account_circle.xml
@@ -6,5 +6,8 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM7.07,18.28c0.43,-0.9 3.05,-1.78 4.93,-1.78s4.51,0.88 4.93,1.78C15.57,19.36 13.86,20 12,20s-3.57,-0.64 -4.93,-1.72zM18.36,16.83c-1.43,-1.74 -4.9,-2.33 -6.36,-2.33s-4.93,0.59 -6.36,2.33C4.62,15.49 4,13.82 4,12c0,-4.41 3.59,-8 8,-8s8,3.59 8,8c0,1.82 -0.62,3.49 -1.64,4.83zM12,6c-1.94,0 -3.5,1.56 -3.5,3.5S10.06,13 12,13s3.5,-1.56 3.5,-3.5S13.94,6 12,6zM12,11c-0.83,0 -1.5,-0.67 -1.5,-1.5S11.17,8 12,8s1.5,0.67 1.5,1.5S12.83,11 12,11z"/>
+      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM7.35,18.5C8.66,17.56 10.26,17 12,17s3.34,0.56 4.65,1.5C15.34,19.44 13.74,20 12,20S8.66,19.44 7.35,18.5zM18.14,17.12L18.14,17.12C16.45,15.8 14.32,15 12,15s-4.45,0.8 -6.14,2.12l0,0C4.7,15.73 4,13.95 4,12c0,-4.42 3.58,-8 8,-8s8,3.58 8,8C20,13.95 19.3,15.73 18.14,17.12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,6c-1.93,0 -3.5,1.57 -3.5,3.5S10.07,13 12,13s3.5,-1.57 3.5,-3.5S13.93,6 12,6zM12,11c-0.83,0 -1.5,-0.67 -1.5,-1.5S11.17,8 12,8s1.5,0.67 1.5,1.5S12.83,11 12,11z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/add_home.xml b/compose/material/material/icons/generator/raw-icons/outlined/add_home.xml
new file mode 100644
index 0000000..0988542
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/add_home.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,5.5l6,4.5v1c0.7,0 1.37,0.1 2,0.29V9l-8,-6L4,9v12h7.68c-0.3,-0.62 -0.5,-1.29 -0.6,-2H6v-9L12,5.5z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18,13c-2.76,0 -5,2.24 -5,5s2.24,5 5,5s5,-2.24 5,-5S20.76,13 18,13zM21,18.5h-2.5V21h-1v-2.5H15v-1h2.5V15h1v2.5H21V18.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/add_home_work.xml b/compose/material/material/icons/generator/raw-icons/outlined/add_home_work.xml
new file mode 100644
index 0000000..694cb00
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/add_home_work.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,14H5v5H3v-6.97l5,-3.57l5,3.57v1.08c0.57,-0.59 1.25,-1.07 2,-1.42V11L8,6l-7,5v10h6v-5h2v5h2.68C11.25,20.09 11,19.08 11,18V14z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,7h2v2h-2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M23,13.11V3H10v1.97l2,1.43V5h9v6.68C21.75,12.04 22.43,12.52 23,13.11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M23,18c0,-2.76 -2.24,-5 -5,-5s-5,2.24 -5,5s2.24,5 5,5S23,20.76 23,18zM17.5,21v-2.5H15v-1h2.5V15h1v2.5H21v1h-2.5V21H17.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/arrow_outward.xml b/compose/material/material/icons/generator/raw-icons/outlined/arrow_outward.xml
new file mode 100644
index 0000000..842e1d7
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/arrow_outward.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,6l0,2l8.59,0l-9.59,9.59l1.41,1.41l9.59,-9.59l0,8.59l2,0l0,-12z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/assist_walker.xml b/compose/material/material/icons/generator/raw-icons/outlined/assist_walker.xml
new file mode 100644
index 0000000..cca770a
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/assist_walker.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.5,4.5m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.77,17.72l-0.64,-6.37C19.06,10.58 18.41,10 17.64,10H16c-1.5,-0.02 -2.86,-0.54 -3.76,-1.44l-2,-1.98C10.08,6.42 9.62,6 8.83,6C8.32,6 7.81,6.2 7.42,6.59L4.08,9.91c-0.53,0.68 -0.51,1.57 -0.21,2.13l1.43,2.8l-3.15,4.05l1.57,1.24l3.68,-4.73l-0.17,-1.36L8,14.75V20h2v-6.12l-2.12,-2.12l2.36,-2.36c0.94,0.94 1.72,1.82 3.59,2.32L13,20h1.5l0.41,-3.5h3.18l0.14,1.22c-0.44,0.26 -0.73,0.74 -0.73,1.28c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5C20.5,18.46 20.21,17.98 19.77,17.72zM15.09,15l0.41,-3.5h2l0.41,3.5H15.09z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/bar_chart.xml b/compose/material/material/icons/generator/raw-icons/outlined/bar_chart.xml
index ce22825..bbc825d 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/bar_chart.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/bar_chart.xml
@@ -6,5 +6,11 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M5,9.2h3L8,19L5,19L5,9.2zM10.6,5h2.8v14h-2.8L10.6,5zM16.2,13L19,13v6h-2.8v-6z"/>
+      android:pathData="M4,9h4v11h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,13h4v7h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,4h4v16h-4z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/blind.xml b/compose/material/material/icons/generator/raw-icons/outlined/blind.xml
new file mode 100644
index 0000000..803b7dc
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/blind.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11.5,3.5m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.13,7.12c-0.17,-0.35 -0.44,-0.65 -0.8,-0.85C10.72,5.91 9.99,5.93 9.4,6.24l0,-0.01L4,9.3V14h2v-3.54l1.5,-0.85C7.18,10.71 7,11.85 7,13v5.33L4.4,21.8L6,23l3,-4l0.22,-3.54L11,18v5h2v-6.5l-1.97,-2.81c-0.04,-0.52 -0.14,-1.76 0.45,-3.4c0.75,1.14 1.88,1.98 3.2,2.41L20.63,23l0.87,-0.5L16.02,13H17v-2c-0.49,0 -2.88,0.17 -4.08,-2.21"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/construction.xml b/compose/material/material/icons/generator/raw-icons/outlined/construction.xml
index 1828ec8..2c31758 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/construction.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/construction.xml
@@ -6,7 +6,7 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M13.7827,15.1719l2.1213,-2.1213l5.9962,5.9962l-2.1213,2.1213z"/>
+      android:pathData="M13.783,15.172l2.121,-2.121l5.996,5.996l-2.121,2.121z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M17.5,10c1.93,0 3.5,-1.57 3.5,-3.5c0,-0.58 -0.16,-1.12 -0.41,-1.6l-2.7,2.7L16.4,6.11l2.7,-2.7C18.62,3.16 18.08,3 17.5,3C15.57,3 14,4.57 14,6.5c0,0.41 0.08,0.8 0.21,1.16l-1.85,1.85l-1.78,-1.78l0.71,-0.71L9.88,5.61L12,3.49c-1.17,-1.17 -3.07,-1.17 -4.24,0L4.22,7.03l1.41,1.41H2.81L2.1,9.15l3.54,3.54l0.71,-0.71V9.15l1.41,1.41l0.71,-0.71l1.78,1.78l-7.41,7.41l2.12,2.12L16.34,9.79C16.7,9.92 17.09,10 17.5,10z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/contact_emergency.xml b/compose/material/material/icons/generator/raw-icons/outlined/contact_emergency.xml
new file mode 100644
index 0000000..e014223
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/contact_emergency.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,14c1.65,0 3,-1.35 3,-3s-1.35,-3 -3,-3s-3,1.35 -3,3S7.35,14 9,14zM9,10c0.54,0 1,0.46 1,1s-0.46,1 -1,1s-1,-0.46 -1,-1S8.46,10 9,10z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22,3H2C0.9,3 0,3.9 0,5v14c0,1.1 0.9,2 2,2h20c1.1,0 1.99,-0.9 1.99,-2L24,5C24,3.9 23.1,3 22,3zM4.54,19c1.1,-1.22 2.69,-2 4.46,-2s3.36,0.78 4.46,2H4.54zM22,19h-6.08c-1.38,-2.39 -3.96,-4 -6.92,-4s-5.54,1.61 -6.92,4H2V5h20V19z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15.78,11.15l1.47,-0.85l0,1.7l1.5,0l0,-1.7l1.47,0.85l0.75,-1.3l-1.47,-0.85l1.47,-0.85l-0.75,-1.3l-1.47,0.85l0,-1.7l-1.5,0l0,1.7l-1.47,-0.85l-0.75,1.3l1.47,0.85l-1.47,0.85z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/crop_16_9.xml b/compose/material/material/icons/generator/raw-icons/outlined/crop_16_9.xml
index f66421e..7bc13cb 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/crop_16_9.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/crop_16_9.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,6L5,6c-1.1,0 -2,0.9 -2,2v8c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,8c0,-1.1 -0.9,-2 -2,-2zM19,16L5,16L5,8h14v8z"/>
+      android:pathData="M19,7H5C3.9,7 3,7.9 3,9v6c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V9C21,7.9 20.1,7 19,7zM19,15H5V9h14V15z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/crop_3_2.xml b/compose/material/material/icons/generator/raw-icons/outlined/crop_3_2.xml
index 2984303..acaa273 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/crop_3_2.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/crop_3_2.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,4L5,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.9,-2 -2,-2zM19,18L5,18L5,6h14v12z"/>
+      android:pathData="M19,6H5C3.9,6 3,6.9 3,8v8c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V8C21,6.9 20.1,6 19,6zM19,16H5V8h14V16z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/crop_5_4.xml b/compose/material/material/icons/generator/raw-icons/outlined/crop_5_4.xml
index 9ebb272..e9fc8e8 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/crop_5_4.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/crop_5_4.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,5L5,5c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,7c0,-1.1 -0.9,-2 -2,-2zM19,17L5,17L5,7h14v10z"/>
+      android:pathData="M19,4H5C3.9,4 3,4.9 3,6v12c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V6C21,4.9 20.1,4 19,4zM19,18H5V6h14V18z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/crop_7_5.xml b/compose/material/material/icons/generator/raw-icons/outlined/crop_7_5.xml
index 03c21aa..d151917 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/crop_7_5.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/crop_7_5.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,7L5,7c-1.1,0 -2,0.9 -2,2v6c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,9c0,-1.1 -0.9,-2 -2,-2zM19,15L5,15L5,9h14v6z"/>
+      android:pathData="M19,5H5C3.9,5 3,5.9 3,7v10c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V7C21,5.9 20.1,5 19,5zM19,17H5V7h14V17z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/dataset.xml b/compose/material/material/icons/generator/raw-icons/outlined/dataset.xml
new file mode 100644
index 0000000..c346a9e
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/dataset.xml
@@ -0,0 +1,22 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,13h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,13h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19,3H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5C21,3.9 20.1,3 19,3zM19,19H5V5h14V19z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,7h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,7h4v4h-4z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/dataset_linked.xml b/compose/material/material/icons/generator/raw-icons/outlined/dataset_linked.xml
new file mode 100644
index 0000000..c582668
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/dataset_linked.xml
@@ -0,0 +1,28 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,17h1.09c0.28,-1.67 1.24,-3.1 2.6,-4H7V17z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M5,19V5h14v7h1c0.34,0 0.67,0.04 1,0.09V5c0,-1.1 -0.9,-2 -2,-2H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h3.81c-0.35,-0.61 -0.6,-1.28 -0.72,-2H5z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,7h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,7h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,20h-2c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2h2v-2h-2c-2.21,0 -4,1.79 -4,4c0,2.21 1.79,4 4,4h2V20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,14h-2v2h2c1.1,0 2,0.9 2,2s-0.9,2 -2,2h-2v2h2c2.21,0 4,-1.79 4,-4C24,15.79 22.21,14 20,14z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,19l0,-2l-3,0l-3,0l0,2l5,0z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/diversity_1.xml b/compose/material/material/icons/generator/raw-icons/outlined/diversity_1.xml
new file mode 100644
index 0000000..db20944
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/diversity_1.xml
@@ -0,0 +1,28 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,14m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.22,17.58C0.48,17.9 0,18.62 0,19.43V21l4.5,0v-1.61c0,-0.83 0.23,-1.61 0.63,-2.29C4.76,17.04 4.39,17 4,17C3.01,17 2.07,17.21 1.22,17.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,14m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.78,17.58C21.93,17.21 20.99,17 20,17c-0.39,0 -0.76,0.04 -1.13,0.1c0.4,0.68 0.63,1.46 0.63,2.29V21l4.5,0v-1.57C24,18.62 23.52,17.9 22.78,17.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.24,16.65c-1.17,-0.52 -2.61,-0.9 -4.24,-0.9c-1.63,0 -3.07,0.39 -4.24,0.9C6.68,17.13 6,18.21 6,19.39V21h12v-1.61C18,18.21 17.32,17.13 16.24,16.65zM8.07,19c0.09,-0.23 0.27,-0.42 0.49,-0.52c1.1,-0.49 2.26,-0.73 3.43,-0.73c1.18,0 2.33,0.25 3.43,0.73c0.23,0.1 0.4,0.29 0.49,0.52H8.07z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,12c0,1.66 1.34,3 3,3s3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3S9,10.34 9,12zM13,12c0,0.55 -0.45,1 -1,1s-1,-0.45 -1,-1s0.45,-1 1,-1S13,11.45 13,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2.48,10.86C2.17,10.1 2,9.36 2,8.6C2,6.02 4.02,4 6.6,4c2.68,0 3.82,1.74 5.4,3.59C13.57,5.76 14.7,4 17.4,4C19.98,4 22,6.02 22,8.6c0,0.76 -0.17,1.5 -0.48,2.26c0.65,0.31 1.18,0.82 1.53,1.44C23.65,11.1 24,9.88 24,8.6C24,4.9 21.1,2 17.4,2c-2.09,0 -4.09,0.97 -5.4,2.51C10.69,2.97 8.69,2 6.6,2C2.9,2 0,4.9 0,8.6c0,1.28 0.35,2.5 0.96,3.7C1.31,11.68 1.84,11.17 2.48,10.86z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/diversity_2.xml b/compose/material/material/icons/generator/raw-icons/outlined/diversity_2.xml
new file mode 100644
index 0000000..b333db5
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/diversity_2.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10.1,15.9l1.42,-1.42C8.79,12.05 7,10.41 7,8.85C7,7.8 7.8,7 8.85,7c1.11,0 1.54,0.65 2.68,2h0.93c1.12,-1.31 1.53,-2 2.68,-2c0.87,0 1.55,0.54 1.77,1.32c0.35,-0.04 0.68,-0.06 1,-0.06c0.36,0 0.7,0.03 1.03,0.08C18.7,6.43 17.13,5 15.15,5c-0.12,0 -0.23,0.03 -0.35,0.04C14.92,4.71 15,4.37 15,4c0,-1.66 -1.34,-3 -3,-3S9,2.34 9,4c0,0.37 0.08,0.71 0.2,1.04C9.08,5.03 8.97,5 8.85,5C6.69,5 5,6.69 5,8.85C5,11.27 7.04,13.16 10.1,15.9z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.5,16.24c-0.32,-0.18 -0.66,-0.29 -1,-0.35c0.07,-0.1 0.15,-0.18 0.21,-0.28c1.08,-1.87 0.46,-4.18 -1.41,-5.26c-2.09,-1.21 -4.76,-0.39 -8.65,0.9l0.52,1.94c3.47,-1.14 5.79,-1.88 7.14,-1.1c0.91,0.53 1.2,1.61 0.68,2.53c-0.56,0.96 -1.33,1 -3.07,1.32l-0.47,0.81c0.58,1.62 0.97,2.33 0.39,3.32c-0.53,0.91 -1.61,1.2 -2.53,0.68c-0.06,-0.03 -0.11,-0.09 -0.17,-0.13c-0.3,0.67 -0.64,1.24 -1.03,1.73c0.07,0.04 0.13,0.09 0.2,0.14c1.87,1.08 4.18,0.46 5.26,-1.41c0.06,-0.1 0.09,-0.21 0.14,-0.32c0.22,0.27 0.48,0.51 0.8,0.69c1.43,0.83 3.27,0.34 4.1,-1.1S23.93,17.06 22.5,16.24z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.32,14.01c-0.74,3.58 -1.27,5.95 -2.62,6.73c-0.91,0.53 -2,0.24 -2.53,-0.68c-0.56,-0.96 -0.2,-1.66 0.39,-3.32L7.1,15.93c-1.7,-0.31 -2.5,-0.33 -3.07,-1.32c-0.53,-0.91 -0.24,-2 0.68,-2.53c0.09,-0.05 0.19,-0.08 0.29,-0.11c-0.35,-0.56 -0.64,-1.17 -0.82,-1.85c-0.16,0.07 -0.32,0.14 -0.48,0.23c-1.87,1.08 -2.49,3.39 -1.41,5.26c0.06,0.1 0.14,0.18 0.21,0.28c-0.34,0.06 -0.68,0.17 -1,0.35c-1.43,0.83 -1.93,2.66 -1.1,4.1s2.66,1.93 4.1,1.1c0.32,-0.18 0.58,-0.42 0.8,-0.69c0.05,0.11 0.08,0.22 0.14,0.32c1.08,1.87 3.39,2.49 5.26,1.41c2.09,-1.21 2.71,-3.93 3.55,-7.94L12.32,14.01z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/diversity_3.xml b/compose/material/material/icons/generator/raw-icons/outlined/diversity_3.xml
new file mode 100644
index 0000000..bb41d74
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/diversity_3.xml
@@ -0,0 +1,22 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6.32,13.01c0.96,0.02 1.85,0.5 2.45,1.34C9.5,15.38 10.71,16 12,16c1.29,0 2.5,-0.62 3.23,-1.66c0.6,-0.84 1.49,-1.32 2.45,-1.34C16.96,11.78 14.08,11 12,11C9.93,11 7.04,11.78 6.32,13.01z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,13L4,13c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3s-3,1.34 -3,3C1,11.66 2.34,13 4,13z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,13L20,13c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3s-3,1.34 -3,3C17,11.66 18.34,13 20,13z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,10c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3S9,5.34 9,7C9,8.66 10.34,10 12,10z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21,14h-3.27c-0.77,0 -1.35,0.45 -1.68,0.92C16.01,14.98 14.69,17 12,17c-1.43,0 -3.03,-0.64 -4.05,-2.08C7.56,14.37 6.95,14 6.27,14H3c-1.1,0 -2,0.9 -2,2v4h7v-2.26c1.15,0.8 2.54,1.26 4,1.26s2.85,-0.46 4,-1.26V20h7v-4C23,14.9 22.1,14 21,14z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/emoji_objects.xml b/compose/material/material/icons/generator/raw-icons/outlined/emoji_objects.xml
index b810dd6..34bed7d 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/emoji_objects.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/emoji_objects.xml
@@ -12,8 +12,8 @@
       android:pathData="M11.5,11h1v3h-1z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M9.6724,9.5808l0.7071,-0.7071l2.1213,2.1213l-0.7071,0.7071z"/>
+      android:pathData="M9.672,9.581l0.707,-0.707l2.121,2.121l-0.707,0.707z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12.2081,11.7123l-0.7071,-0.7071l2.1213,-2.1213l0.7071,0.7071z"/>
+      android:pathData="M12.208,11.712l-0.707,-0.707l2.121,-2.121l0.707,0.707z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/emoji_symbols.xml b/compose/material/material/icons/generator/raw-icons/outlined/emoji_symbols.xml
index 8366721..5c3024a 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/emoji_symbols.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/emoji_symbols.xml
@@ -12,7 +12,7 @@
       android:pathData="M6,11l2,0l0,-4l3,0l0,-2l-8,0l0,2l3,0z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12.4036,20.1819l7.7781,-7.7781l1.4142,1.4142l-7.7781,7.7781z"/>
+      android:pathData="M12.404,20.182l7.778,-7.778l1.414,1.414l-7.778,7.778z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M14.5,14.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/face_2.xml b/compose/material/material/icons/generator/raw-icons/outlined/face_2.xml
new file mode 100644
index 0000000..58abaea
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/face_2.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21.97,13.52c0,-0.01 0,-0.02 0,-0.04C23.21,12.38 24,10.78 24,9c0,-3.31 -2.69,-6 -6,-6c-0.26,0 -0.52,0.02 -0.78,0.06C16.19,1.23 14.24,0 12,0S7.81,1.23 6.78,3.06C6.52,3.02 6.26,3 6,3C2.69,3 0,5.69 0,9c0,1.78 0.79,3.38 2.02,4.48c0,0.01 0,0.02 0,0.04C0.79,14.62 0,16.22 0,18c0,3.31 2.69,6 6,6c1.39,0 2.67,-0.48 3.69,-1.28C10.43,22.9 11.2,23 12,23s1.57,-0.1 2.31,-0.28C15.33,23.52 16.61,24 18,24c3.31,0 6,-2.69 6,-6C24,16.22 23.21,14.62 21.97,13.52zM22,9c0,0.55 -0.12,1.07 -0.32,1.54c-0.57,-2.25 -1.9,-4.19 -3.7,-5.54c0.01,0 0.01,0 0.02,0C20.21,5 22,6.79 22,9zM12.03,5c2.73,0.01 5.13,1.39 6.57,3.48c-0.71,0.57 -1.6,0.89 -2.53,0.89C13.82,9.38 12,7.55 12,5.31C12,5.21 12.02,5.11 12.03,5zM12,2c1.25,0 2.36,0.59 3.1,1.5C14.12,3.18 13.08,3 12,3S9.88,3.18 8.9,3.5C9.64,2.59 10.75,2 12,2zM6,5c0.01,0 0.01,0 0.02,0c-1.8,1.35 -3.13,3.29 -3.7,5.54C2.12,10.07 2,9.55 2,9C2,6.79 3.79,5 6,5zM6,22c-2.21,0 -4,-1.79 -4,-4c0,-0.69 0.19,-1.32 0.5,-1.88c0.8,2.44 2.52,4.47 4.74,5.68C6.85,21.93 6.44,22 6,22zM4,13c0,-3.72 2.56,-6.85 6,-7.74c0,0.02 0,0.03 0,0.05c0,3.34 2.72,6.06 6.06,6.06c1.26,0 2.45,-0.39 3.45,-1.09C19.82,11.14 20,12.05 20,13c0,4.41 -3.59,8 -8,8S4,17.41 4,13zM18,22c-0.44,0 -0.85,-0.07 -1.25,-0.2c2.23,-1.21 3.94,-3.24 4.74,-5.68c0.31,0.56 0.5,1.2 0.5,1.88C22,20.21 20.21,22 18,22z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,14m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,14m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/face_3.xml b/compose/material/material/icons/generator/raw-icons/outlined/face_3.xml
new file mode 100644
index 0000000..144d59c
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/face_3.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.91,11.96C22.39,6.32 17.66,2 12,2S1.61,6.32 1.09,11.96l-0.9,9.86C0.09,22.99 1.01,24 2.19,24h19.62c1.18,0 2.1,-1.01 1.99,-2.18L22.91,11.96zM13,4.07c2.26,0.28 4.22,1.51 5.49,3.28C17.91,7.75 17.23,8 16.5,8C14.57,8 13,6.43 13,4.5V4.07zM11,4.07V4.5C11,6.43 9.43,8 7.5,8C6.77,8 6.09,7.75 5.51,7.35C6.78,5.58 8.74,4.35 11,4.07zM4.54,9.13C5.41,9.68 6.43,10 7.5,10C9.36,10 11,9.07 12,7.65C13,9.07 14.64,10 16.5,10c1.07,0 2.09,-0.32 2.96,-0.87C19.8,10.02 20,10.99 20,12c0,4.41 -3.59,8 -8,8s-8,-3.59 -8,-8C4,10.99 4.2,10.02 4.54,9.13zM12,22H2.19l0.56,-6.2C4.25,19.44 7.82,22 12,22s7.75,-2.56 9.25,-6.2l0.56,6.2H12z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/face_4.xml b/compose/material/material/icons/generator/raw-icons/outlined/face_4.xml
new file mode 100644
index 0000000..daeaee5
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/face_4.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,2c-0.96,0 -1.88,0.14 -2.75,0.39C8.37,0.96 6.8,0 5,0C2.24,0 0,2.24 0,5c0,1.8 0.96,3.37 2.39,4.25C2.14,10.12 2,11.04 2,12c0,5.52 4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,4c2.9,0 5.44,1.56 6.84,3.88C18.41,7.95 17.96,8 17.5,8c-2.9,0 -5.44,-1.56 -6.84,-3.88h0C11.09,4.05 11.54,4 12,4zM4.42,9.47L4.42,9.47C5.05,7.58 6.37,6 8.08,5.03C7.45,6.92 6.13,8.5 4.42,9.47zM2,5c0,-1.65 1.35,-3 3,-3c0.95,0 1.8,0.46 2.35,1.15C5.56,4.09 4.09,5.56 3.15,7.35C2.46,6.8 2,5.95 2,5zM12,20c-4.41,0 -8,-3.59 -8,-8c0,-0.05 0.01,-0.1 0.01,-0.15c2.6,-0.98 4.68,-2.99 5.74,-5.55C11.58,8.56 14.37,10 17.5,10c0.75,0 1.47,-0.09 2.17,-0.24C19.88,10.47 20,11.22 20,12C20,16.41 16.41,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/face_5.xml b/compose/material/material/icons/generator/raw-icons/outlined/face_5.xml
new file mode 100644
index 0000000..525db6c
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/face_5.xml
@@ -0,0 +1,76 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8c0,-1.12 0.23,-2.18 0.65,-3.15C4.74,8.94 4.86,9 5,9c0.28,0 0.5,-0.22 0.5,-0.5c0,-0.25 -0.19,-0.45 -0.43,-0.49c0.15,-0.26 0.32,-0.51 0.49,-0.75C5.53,7.34 5.5,7.41 5.5,7.5C5.5,7.78 5.72,8 6,8s0.5,-0.22 0.5,-0.5C6.5,7.22 6.28,7 6,7C5.87,7 5.75,7.05 5.66,7.13c0.52,-0.68 1.15,-1.28 1.86,-1.76C7.51,5.41 7.5,5.45 7.5,5.5C7.5,5.78 7.72,6 8,6s0.5,-0.22 0.5,-0.5c0,-0.24 -0.17,-0.43 -0.4,-0.48c0.16,-0.09 0.32,-0.17 0.49,-0.25C8.68,4.91 8.83,5 9,5c0.28,0 0.5,-0.22 0.5,-0.5c0,-0.03 -0.01,-0.06 -0.02,-0.09c0.39,-0.13 0.79,-0.23 1.21,-0.3C10.58,4.21 10.5,4.34 10.5,4.5C10.5,4.78 10.72,5 11,5s0.5,-0.22 0.5,-0.5c0,-0.21 -0.13,-0.38 -0.3,-0.46C11.46,4.01 11.73,4 12,4s0.54,0.01 0.8,0.04c-0.18,0.08 -0.3,0.25 -0.3,0.46C12.5,4.78 12.72,5 13,5s0.5,-0.22 0.5,-0.5c0,-0.16 -0.08,-0.29 -0.19,-0.38c0.41,0.07 0.82,0.17 1.21,0.3C14.51,4.44 14.5,4.47 14.5,4.5C14.5,4.78 14.72,5 15,5c0.17,0 0.32,-0.09 0.41,-0.23c0.17,0.08 0.33,0.16 0.49,0.25c-0.23,0.05 -0.4,0.24 -0.4,0.48C15.5,5.78 15.72,6 16,6s0.5,-0.22 0.5,-0.5c0,-0.05 -0.01,-0.09 -0.03,-0.13c0.71,0.48 1.34,1.08 1.86,1.76C18.25,7.05 18.13,7 18,7c-0.28,0 -0.5,0.22 -0.5,0.5C17.5,7.78 17.72,8 18,8s0.5,-0.22 0.5,-0.5c0,-0.09 -0.03,-0.16 -0.07,-0.23c0.18,0.24 0.34,0.49 0.49,0.75C18.69,8.05 18.5,8.25 18.5,8.5C18.5,8.78 18.72,9 19,9c0.14,0 0.26,-0.06 0.35,-0.15C19.77,9.82 20,10.88 20,12C20,16.41 16.41,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,5.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,5.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,5.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/face_6.xml b/compose/material/material/icons/generator/raw-icons/outlined/face_6.xml
new file mode 100644
index 0000000..ceb951f
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/face_6.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,4c3.68,0 6.78,2.51 7.71,5.9c-0.6,-0.16 -1.33,-0.37 -2.26,-2.24C16.94,6.64 15.91,6 14.76,6H9.24C8.09,6 7.06,6.64 6.55,7.66C5.62,9.52 4.97,9.72 4.29,9.9C5.22,6.51 8.32,4 12,4zM12,20c-4.41,0 -8,-3.59 -8,-8c0,-0.01 0,-0.02 0,-0.03c2.31,-0.22 3.43,-1.59 4.34,-3.41C8.51,8.21 8.85,8 9.24,8h5.53c0.38,0 0.72,0.21 0.89,0.55c0.9,1.8 1.99,3.19 4.34,3.41c0,0.01 0,0.02 0,0.03C20,16.41 16.41,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/fire_hydrant_alt.xml b/compose/material/material/icons/generator/raw-icons/outlined/fire_hydrant_alt.xml
new file mode 100644
index 0000000..f88449a
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/fire_hydrant_alt.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,10.5c-1.93,0 -3.5,1.57 -3.5,3.5s1.57,3.5 3.5,3.5s3.5,-1.57 3.5,-3.5S13.93,10.5 12,10.5zM12,15.5c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5s1.5,0.67 1.5,1.5S12.83,15.5 12,15.5z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19,11h-1V8h2V6h-2.35C16.83,3.67 14.61,2 12,2S7.17,3.67 6.35,6H4v2h2v3H5c-1.1,0 -2,0.9 -2,2v2c0,1.1 0.9,2 2,2h1v3H4v2h16v-2h-2v-3h1c1.1,0 2,-0.9 2,-2v-2C21,11.9 20.1,11 19,11zM12,4c1.47,0 2.75,0.81 3.44,2H8.56C9.25,4.81 10.53,4 12,4zM19,15h-3v5H8v-5H5v-2h3V8h8v5h3V15z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/fire_truck.xml b/compose/material/material/icons/generator/raw-icons/outlined/fire_truck.xml
new file mode 100644
index 0000000..009b590
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/fire_truck.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.9,10.69l-1.44,-4.32C21.18,5.55 20.42,5 19.56,5H19V4c0,-0.55 -0.45,-1 -1,-1h-1c-0.55,0 -1,0.45 -1,1v1h-2c-1.1,0 -2,0.9 -2,2v4H1v5c0,1.1 0.9,2 2,2h1c0,1.66 1.34,3 3,3s3,-1.34 3,-3h4c0,1.66 1.34,3 3,3s3,-1.34 3,-3h3v-6.68C23,11.11 22.97,10.9 22.9,10.69zM14,7h5.56l1.33,4H14V7zM7,19c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1s1,0.45 1,1S7.55,19 7,19zM12,16H9.22C8.67,15.39 7.89,15 7,15s-1.67,0.39 -2.22,1H3v-3h9V16zM17,19c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1s1,0.45 1,1S17.55,19 17,19zM19.22,16c-0.55,-0.61 -1.34,-1 -2.22,-1s-1.67,0.39 -2.22,1H14v-3h7v3H19.22z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,8.5h-1v-2h1V5H1v1.5h1v2H1V10h10V8.5zM8.5,8.5H6.75v-2H8.5V8.5zM3.5,6.5h1.75v2H3.5V6.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/fluorescent.xml b/compose/material/material/icons/generator/raw-icons/outlined/fluorescent.xml
new file mode 100644
index 0000000..335729c
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/fluorescent.xml
@@ -0,0 +1,28 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M5,15h14V9H5V15zM7,11h10v2H7V11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,2h2v3h-2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.286,6.399l1.79,-1.802l1.419,1.409l-1.79,1.802z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,19h2v3h-2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.29,17.71l1.79,1.8l1.42,-1.42l-1.8,-1.79z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3.495,6.009l1.407,-1.407l1.789,1.789l-1.407,1.407z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3.492,18.076l1.802,-1.79l1.409,1.419l-1.802,1.79z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/groups_2.xml b/compose/material/material/icons/generator/raw-icons/outlined/groups_2.xml
new file mode 100644
index 0000000..2abcc14
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/groups_2.xml
@@ -0,0 +1,25 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10.27,12h3.46c0.93,0 1.63,-0.83 1.48,-1.75l-0.3,-1.79C14.67,7.04 13.44,6 12,6S9.33,7.04 9.09,8.47l-0.3,1.79C8.64,11.17 9.34,12 10.27,12zM11.06,8.79C11.14,8.33 11.53,8 12,8s0.86,0.33 0.94,0.79l0.2,1.21h-2.28L11.06,8.79z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.66,11.11c-0.13,0.26 -0.18,0.57 -0.1,0.88c0.16,0.69 0.76,1.03 1.53,1c0,0 1.49,0 1.95,0c0.83,0 1.51,-0.58 1.51,-1.29c0,-0.14 -0.03,-0.27 -0.07,-0.4c-0.01,-0.03 -0.01,-0.05 0.01,-0.08c0.09,-0.16 0.14,-0.34 0.14,-0.53c0,-0.31 -0.14,-0.6 -0.36,-0.82c-0.03,-0.03 -0.03,-0.06 -0.02,-0.1c0.07,-0.2 0.07,-0.43 0.01,-0.65C6.1,8.69 5.71,8.4 5.27,8.38c-0.03,0 -0.05,-0.01 -0.07,-0.03C5.03,8.14 4.72,8 4.37,8C4.07,8 3.8,8.1 3.62,8.26C3.59,8.29 3.56,8.29 3.53,8.28c-0.14,-0.06 -0.3,-0.09 -0.46,-0.09c-0.65,0 -1.18,0.49 -1.24,1.12c0,0.02 -0.01,0.04 -0.03,0.06c-0.29,0.26 -0.46,0.65 -0.41,1.05c0.03,0.22 0.12,0.43 0.25,0.6C1.67,11.04 1.67,11.08 1.66,11.11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.24,13.65c-1.17,-0.52 -2.61,-0.9 -4.24,-0.9c-1.63,0 -3.07,0.39 -4.24,0.9C6.68,14.13 6,15.21 6,16.39V18h12v-1.61C18,15.21 17.32,14.13 16.24,13.65zM8.07,16c0.09,-0.23 0.27,-0.42 0.49,-0.52c1.1,-0.49 2.26,-0.73 3.43,-0.73c1.18,0 2.33,0.25 3.43,0.73c0.23,0.1 0.4,0.29 0.49,0.52H8.07z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.22,14.58C0.48,14.9 0,15.62 0,16.43V18l4.5,0v-1.61c0,-0.83 0.23,-1.61 0.63,-2.29C4.76,14.04 4.39,14 4,14C3.01,14 2.07,14.21 1.22,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.78,14.58C21.93,14.21 20.99,14 20,14c-0.39,0 -0.76,0.04 -1.13,0.1c0.4,0.68 0.63,1.46 0.63,2.29V18l4.5,0v-1.57C24,15.62 23.52,14.9 22.78,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22,11v-0.5c0,-1.1 -0.9,-2 -2,-2h-2c-0.42,0 -0.65,0.48 -0.39,0.81l0.7,0.63C18.12,10.25 18,10.61 18,11c0,1.1 0.9,2 2,2S22,12.1 22,11z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/groups_3.xml b/compose/material/material/icons/generator/raw-icons/outlined/groups_3.xml
new file mode 100644
index 0000000..51475b1
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/groups_3.xml
@@ -0,0 +1,25 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.24,13.65c-1.17,-0.52 -2.61,-0.9 -4.24,-0.9c-1.63,0 -3.07,0.39 -4.24,0.9C6.68,14.13 6,15.21 6,16.39V18h12v-1.61C18,15.21 17.32,14.13 16.24,13.65zM8.07,16c0.09,-0.23 0.27,-0.42 0.49,-0.52c1.1,-0.49 2.26,-0.73 3.43,-0.73c1.18,0 2.33,0.25 3.43,0.73c0.23,0.1 0.4,0.29 0.49,0.52H8.07z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.22,14.58C0.48,14.9 0,15.62 0,16.43V18l4.5,0v-1.61c0,-0.83 0.23,-1.61 0.63,-2.29C4.76,14.04 4.39,14 4,14C3.01,14 2.07,14.21 1.22,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.78,14.58C21.93,14.21 20.99,14 20,14c-0.39,0 -0.76,0.04 -1.13,0.1c0.4,0.68 0.63,1.46 0.63,2.29V18l4.5,0v-1.57C24,15.62 23.52,14.9 22.78,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,12c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3S9,7.34 9,9C9,10.66 10.34,12 12,12zM12,8c0.55,0 1,0.45 1,1s-0.45,1 -1,1s-1,-0.45 -1,-1S11.45,8 12,8z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.497,11l2.503,-2.503l2.503,2.503l-2.503,2.503z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,9l-2.5,4l5,0z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/home_work.xml b/compose/material/material/icons/generator/raw-icons/outlined/home_work.xml
index 3338c14..c08a4d6 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/home_work.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/home_work.xml
@@ -6,11 +6,17 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M17,15h2v2h-2zM17,11h2v2h-2zM17,7h2v2h-2zM13.74,7l1.26,0.84V7z"/>
+      android:pathData="M1,11v10h6v-5h2v5h6V11L8,6L1,11zM13,19h-2v-5H5v5H3v-6.97l5,-3.57l5,3.57V19z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M10,3v1.51l2,1.33V5h9v14h-4v2h6V3z"/>
+      android:pathData="M17,7h2v2h-2z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M8.17,5.7L15,10.25V21H1V10.48L8.17,5.7zM10,19h3v-7.84L8.17,8.09 3,11.38V19h3v-6h4v6z"/>
+      android:pathData="M17,11h2v2h-2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,15h2v2h-2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,3l0,1.97l2,1.43l0,-1.4l9,0l0,14l-4,0l0,2l6,0l0,-18z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/local_fire_department.xml b/compose/material/material/icons/generator/raw-icons/outlined/local_fire_department.xml
index adb2a4a..bd9a8b1 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/local_fire_department.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/local_fire_department.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19.48,12.35c-1.57,-4.08 -7.16,-4.3 -5.81,-10.23c0.1,-0.44 -0.37,-0.78 -0.75,-0.55C9.29,3.71 6.68,8 8.87,13.62c0.18,0.46 -0.36,0.89 -0.75,0.59c-1.81,-1.37 -2,-3.34 -1.84,-4.75c0.06,-0.52 -0.62,-0.77 -0.91,-0.34C4.69,10.16 4,11.84 4,14.37c0.38,5.6 5.11,7.32 6.81,7.54c2.43,0.31 5.06,-0.14 6.95,-1.87C19.84,18.11 20.6,15.03 19.48,12.35zM10.2,17.38c1.44,-0.35 2.18,-1.39 2.38,-2.31c0.33,-1.43 -0.96,-2.83 -0.09,-5.09c0.33,1.87 3.27,3.04 3.27,5.08C15.84,17.59 13.1,19.76 10.2,17.38z"/>
+      android:pathData="M16,6l-0.44,0.55c-0.42,0.52 -0.98,0.75 -1.54,0.75C13,7.3 12,6.52 12,5.3V2c0,0 -8,4 -8,11c0,4.42 3.58,8 8,8s8,-3.58 8,-8C20,10.04 18.39,7.38 16,6zM12,19c-1.1,0 -2,-0.87 -2,-1.94c0,-0.51 0.2,-0.99 0.58,-1.36l1.42,-1.4l1.43,1.4C13.8,16.07 14,16.55 14,17.06C14,18.13 13.1,19 12,19zM15.96,17.5L15.96,17.5c0.04,-0.36 0.22,-1.89 -1.13,-3.22l0,0L12,11.5l-2.83,2.78l0,0c-1.36,1.34 -1.17,2.88 -1.13,3.22C6.79,16.4 6,14.79 6,13c0,-3.16 2.13,-5.65 4.03,-7.25c0.23,1.99 1.93,3.55 3.99,3.55c0.78,0 1.54,-0.23 2.18,-0.66C17.34,9.78 18,11.35 18,13C18,14.79 17.21,16.4 15.96,17.5z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/macro_off.xml b/compose/material/material/icons/generator/raw-icons/outlined/macro_off.xml
new file mode 100644
index 0000000..018403e
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/macro_off.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8.66,4.93C8.9,4.93 9.12,5 9.3,5.13l0.81,0.56C9.82,5.93 9.57,6.23 9.39,6.56l1.66,1.66C11.03,8.14 11,8.08 11,8c0,-0.55 0.45,-1 1,-1s1,0.45 1,1s-0.45,1 -1,1c-0.08,0 -0.14,-0.03 -0.22,-0.04l4.06,4.06c1.49,-0.24 2.63,-1.53 2.63,-3.09c0,-0.71 -0.25,-1.39 -0.67,-1.93c0.43,-0.54 0.67,-1.22 0.67,-1.93c0,-1.73 -1.41,-3.14 -3.14,-3.14c-0.15,0 -0.29,0.01 -0.43,0.03C14.44,1.81 13.31,1 12,1S9.56,1.81 9.09,2.96C8.95,2.94 8.8,2.93 8.66,2.93c-0.8,0 -1.53,0.31 -2.09,0.81l1.42,1.42C8.19,5.03 8.41,4.93 8.66,4.93zM15.34,11.07c-0.24,0 -0.46,-0.07 -0.64,-0.2l-0.81,-0.57c0.55,-0.45 0.94,-1.09 1.06,-1.83l0.88,0.42c0.4,0.19 0.66,0.59 0.66,1.03C16.49,10.56 15.97,11.07 15.34,11.07zM14.69,5.13c0.2,-0.13 0.42,-0.2 0.65,-0.2c0.63,0 1.14,0.51 1.14,1.14c0,0.44 -0.25,0.83 -0.66,1.03l-0.88,0.42c-0.12,-0.74 -0.51,-1.38 -1.07,-1.83L14.69,5.13zM12,3c0.62,0 1.12,0.49 1.14,1.1l-0.11,1.09C12.71,5.07 12.36,5 12,5s-0.7,0.07 -1.02,0.19L10.86,4.1C10.88,3.49 11.38,3 12,3z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.98,17.15C20.63,15.91 21,14.5 21,13c-1.5,0 -2.91,0.37 -4.15,1.02L19.98,17.15z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3,13c0,4.97 4.03,9 9,9C12,17.03 7.97,13 3,13zM5.44,15.44c1.9,0.71 3.42,2.22 4.12,4.12C7.66,18.85 6.15,17.34 5.44,15.44z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2.81,2.81L1.39,4.22l4.42,4.42c-0.19,0.4 -0.3,0.84 -0.3,1.29c0,1.73 1.41,3.14 3.15,3.14c0.15,0 0.29,-0.01 0.43,-0.03C9.56,14.19 10.69,15 12,15c0.05,0 0.11,-0.01 0.16,-0.01l1.64,1.64C12.67,18.12 12,19.98 12,22c2.02,0 3.88,-0.67 5.38,-1.8l2.4,2.4l1.41,-1.41L2.81,2.81zM14.44,19.56c0.2,-0.54 0.47,-1.04 0.79,-1.5l0.72,0.72C15.48,19.09 14.98,19.36 14.44,19.56z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/man_2.xml b/compose/material/material/icons/generator/raw-icons/outlined/man_2.xml
new file mode 100644
index 0000000..230adba
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/man_2.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,7h-4C8.9,7 8,7.9 8,9v6h2.5v7h3v-7H16V9C16,7.9 15.1,7 14,7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/man_3.xml b/compose/material/material/icons/generator/raw-icons/outlined/man_3.xml
new file mode 100644
index 0000000..af7bb64
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/man_3.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,7h-4C8.9,7 8,7.9 8,9v6h2v7h4v-7h2V9C16,7.9 15.1,7 14,7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,1.751l2.249,2.249l-2.249,2.249l-2.249,-2.249z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/man_4.xml b/compose/material/material/icons/generator/raw-icons/outlined/man_4.xml
new file mode 100644
index 0000000..3f70493
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/man_4.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.75,7h-3.5C9.04,7 8.11,8.07 8.27,9.26L10,22h4l1.73,-12.74C15.89,8.07 14.96,7 13.75,7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/noise_aware.xml b/compose/material/material/icons/generator/raw-icons/outlined/noise_aware.xml
index dd729e1..cc4e0b7 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/noise_aware.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/noise_aware.xml
@@ -6,29 +6,50 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M4.07,13H2.05c0.2,2.01 1,3.84 2.21,5.33l1.43,-1.43C4.83,15.79 4.25,14.46 4.07,13z"/>
+      android:pathData="M16,15h-2c0,0.55 -0.45,1 -1,1c-0.43,0 -0.81,-0.27 -0.95,-0.68c-0.15,-0.44 -0.4,-1.08 -0.93,-1.61l-1.36,-1.36C9.28,11.87 9,11.19 9,10.5C9,9.12 10.12,8 11.5,8c1.21,0 2.22,0.86 2.45,2h2.02c-0.25,-2.25 -2.16,-4 -4.47,-4C9.02,6 7,8.02 7,10.5c0,1.22 0.49,2.41 1.35,3.27l1.36,1.36c0.17,0.17 0.31,0.44 0.44,0.82C10.56,17.17 11.71,18 13,18C14.65,18 16,16.65 16,15z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M5.69,7.1L4.26,5.67C3.05,7.16 2.25,8.99 2.05,11h2.02C4.25,9.54 4.83,8.21 5.69,7.1z"/>
+      android:pathData="M13.5,12.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M11,4.07V2.05c-2.01,0.2 -3.84,1 -5.33,2.21L7.1,5.69C8.21,4.83 9.54,4.25 11,4.07z"/>
+      android:pathData="M3.6,6.58l1.58,1.26c0.35,-0.57 0.77,-1.1 1.24,-1.57L4.85,5.02C4.38,5.49 3.97,6.02 3.6,6.58z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M18.33,4.26C16.84,3.05 15.01,2.25 13,2.05v2.02c1.46,0.18 2.79,0.76 3.9,1.62L18.33,4.26z"/>
+      android:pathData="M9.46,4.42L8.59,2.61c-0.63,0.23 -1.24,0.52 -1.8,0.87l0.87,1.81C8.22,4.93 8.82,4.64 9.46,4.42z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M18.31,16.9l1.43,1.43c1.21,-1.48 2.01,-3.32 2.21,-5.33h-2.02C19.75,14.46 19.17,15.79 18.31,16.9z"/>
+      android:pathData="M4.49,9.26L2.53,8.81c-0.21,0.63 -0.36,1.28 -0.44,1.95l1.96,0.45C4.11,10.53 4.27,9.88 4.49,9.26z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19.93,11h2.02c-0.2,-2.01 -1,-3.84 -2.21,-5.33L18.31,7.1C19.17,8.21 19.75,9.54 19.93,11z"/>
+      android:pathData="M20.4,6.58c-0.36,-0.56 -0.78,-1.09 -1.25,-1.56l-1.58,1.26c0.48,0.47 0.89,0.99 1.24,1.57L20.4,6.58z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M13,19.93v2.02c2.01,-0.2 3.84,-1 5.33,-2.21l-1.43,-1.43C15.79,19.17 14.46,19.75 13,19.93z"/>
+      android:pathData="M4.04,12.79l-1.96,0.45c0.08,0.67 0.23,1.33 0.44,1.95l1.97,-0.45C4.27,14.12 4.11,13.47 4.04,12.79z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M5.67,19.74c1.48,1.21 3.32,2.01 5.33,2.21v-2.02c-1.46,-0.18 -2.79,-0.76 -3.9,-1.62L5.67,19.74z"/>
+      android:pathData="M17.21,3.48c-0.57,-0.35 -1.17,-0.64 -1.8,-0.87l-0.87,1.81c0.64,0.22 1.24,0.51 1.8,0.87L17.21,3.48z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,12m-5,0a5,5 0,1 1,10 0a5,5 0,1 1,-10 0"/>
+      android:pathData="M13,4.07V2.05C12.67,2.02 12.34,2 12,2s-0.67,0.02 -1,0.05v2.02C11.33,4.03 11.66,4 12,4S12.67,4.03 13,4.07z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,19.93v2.02c0.33,0.03 0.66,0.05 1,0.05s0.67,-0.02 1,-0.05v-2.02C12.67,19.97 12.34,20 12,20S11.33,19.97 11,19.93z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.51,14.74l1.97,0.45c0.21,-0.63 0.36,-1.28 0.44,-1.95l-1.96,-0.45C19.89,13.47 19.73,14.12 19.51,14.74z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.96,11.21l1.96,-0.45c-0.08,-0.67 -0.23,-1.33 -0.44,-1.95l-1.97,0.45C19.73,9.88 19.89,10.53 19.96,11.21z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.58,17.73l1.58,1.26c0.47,-0.48 0.88,-1 1.25,-1.56l-1.58,-1.26C18.47,16.73 18.05,17.26 17.58,17.73z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6.79,20.52c0.57,0.35 1.17,0.64 1.8,0.87l0.87,-1.81c-0.64,-0.22 -1.24,-0.51 -1.8,-0.87L6.79,20.52z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14.54,19.58l0.87,1.81c0.63,-0.23 1.24,-0.52 1.8,-0.87l-0.87,-1.81C15.78,19.07 15.18,19.36 14.54,19.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3.6,17.42c0.36,0.56 0.78,1.09 1.25,1.56l1.58,-1.26c-0.48,-0.47 -0.89,-0.99 -1.24,-1.57L3.6,17.42z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/noise_control_off.xml b/compose/material/material/icons/generator/raw-icons/outlined/noise_control_off.xml
index 4e65652..4d023ad 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/noise_control_off.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/noise_control_off.xml
@@ -6,5 +6,20 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,12m-5,0a5,5 0,1 1,10 0a5,5 0,1 1,-10 0"/>
+      android:pathData="M12,4c1.44,0 2.79,0.38 3.95,1.05l1.45,-1.45C15.85,2.59 13.99,2 12,2S8.15,2.59 6.59,3.59l1.45,1.45C9.21,4.38 10.56,4 12,4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,12c0,1.44 -0.38,2.79 -1.05,3.95l1.45,1.45C21.41,15.85 22,13.99 22,12s-0.59,-3.85 -1.59,-5.41l-1.45,1.45C19.62,9.21 20,10.56 20,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,20c-1.44,0 -2.79,-0.38 -3.95,-1.05l-1.45,1.45C8.15,21.41 10.01,22 12,22s3.85,-0.59 5.41,-1.59l-1.45,-1.45C14.79,19.62 13.44,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,12c0,-1.44 0.38,-2.79 1.05,-3.95L3.59,6.59C2.59,8.15 2,10.01 2,12s0.59,3.85 1.59,5.41l1.45,-1.45C4.38,14.79 4,13.44 4,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11.5,6C9.02,6 7,8.02 7,10.5c0,1.22 0.49,2.41 1.35,3.27l1.36,1.36c0.17,0.17 0.31,0.44 0.44,0.82C10.56,17.17 11.71,18 13,18c1.65,0 3,-1.35 3,-3h-2c0,0.55 -0.45,1 -1,1c-0.43,0 -0.81,-0.27 -0.95,-0.68c-0.15,-0.44 -0.4,-1.08 -0.93,-1.61l-1.36,-1.36C9.28,11.87 9,11.19 9,10.5C9,9.12 10.12,8 11.5,8c1.21,0 2.22,0.86 2.45,2h2.02C15.72,7.75 13.81,6 11.5,6z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.5,12.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/person_2.xml b/compose/material/material/icons/generator/raw-icons/outlined/person_2.xml
new file mode 100644
index 0000000..67024bd
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/person_2.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18.39,14.56C16.71,13.7 14.53,13 12,13c-2.53,0 -4.71,0.7 -6.39,1.56C4.61,15.07 4,16.1 4,17.22V20h16v-2.78C20,16.1 19.39,15.07 18.39,14.56zM18,18H6v-0.78c0,-0.38 0.2,-0.72 0.52,-0.88C7.71,15.73 9.63,15 12,15c2.37,0 4.29,0.73 5.48,1.34C17.8,16.5 18,16.84 18,17.22V18z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9.78,12h4.44c1.21,0 2.14,-1.06 1.98,-2.26l-0.32,-2.45C15.57,5.39 13.92,4 12,4S8.43,5.39 8.12,7.29L7.8,9.74C7.64,10.94 8.57,12 9.78,12zM10.1,7.59C10.26,6.67 11.06,6 12,6s1.74,0.67 1.9,1.59L14.22,10H9.78L10.1,7.59z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/person_3.xml b/compose/material/material/icons/generator/raw-icons/outlined/person_3.xml
new file mode 100644
index 0000000..ffe32f2
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/person_3.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18.39,14.56C16.71,13.7 14.53,13 12,13c-2.53,0 -4.71,0.7 -6.39,1.56C4.61,15.07 4,16.1 4,17.22V20h16v-2.78C20,16.1 19.39,15.07 18.39,14.56zM18,18H6v-0.78c0,-0.38 0.2,-0.72 0.52,-0.88C7.71,15.73 9.63,15 12,15c2.37,0 4.29,0.73 5.48,1.34C17.8,16.5 18,16.84 18,17.22V18z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,12c0.17,0 3.83,0 4,0c1.66,0 3,-1.34 3,-3c0,-0.73 -0.27,-1.4 -0.71,-1.92C16.42,6.75 16.5,6.38 16.5,6c0,-1.25 -0.77,-2.32 -1.86,-2.77C14,2.48 13.06,2 12,2s-2,0.48 -2.64,1.23C8.27,3.68 7.5,4.75 7.5,6c0,0.38 0.08,0.75 0.21,1.08C7.27,7.6 7,8.27 7,9C7,10.66 8.34,12 10,12zM9.24,8.37C10.11,7.33 9.5,6.37 9.5,6c0,-0.41 0.24,-0.77 0.62,-0.92c0.29,-0.12 0.55,-0.31 0.75,-0.54C11.04,4.33 11.42,4 12,4s0.96,0.33 1.13,0.53c0.2,0.24 0.46,0.42 0.75,0.54C14.26,5.23 14.5,5.59 14.5,6c0,0.37 -0.61,1.33 0.26,2.37C15.34,9.06 14.8,10 14,10h-4C9.2,10 8.66,9.06 9.24,8.37z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/person_4.xml b/compose/material/material/icons/generator/raw-icons/outlined/person_4.xml
new file mode 100644
index 0000000..5b91791
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/person_4.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18.39,14.56C16.71,13.7 14.53,13 12,13c-2.53,0 -4.71,0.7 -6.39,1.56C4.61,15.07 4,16.1 4,17.22V20h16v-2.78C20,16.1 19.39,15.07 18.39,14.56zM18,18H6v-0.78c0,-0.38 0.2,-0.72 0.52,-0.88C7.71,15.73 9.63,15 12,15c2.37,0 4.29,0.73 5.48,1.34C17.8,16.5 18,16.84 18,17.22V18z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,12c2.21,0 4,-1.79 4,-4c0,-1.37 0,-3.5 0,-3.5C16,3.67 15.33,3 14.5,3c-0.52,0 -0.98,0.27 -1.25,0.67C12.98,3.27 12.52,3 12,3s-0.98,0.27 -1.25,0.67C10.48,3.27 10.02,3 9.5,3C8.67,3 8,3.67 8,4.5c0,0 0,2.12 0,3.5C8,10.21 9.79,12 12,12zM10,5.5h4V8c0,1.1 -0.9,2 -2,2s-2,-0.9 -2,-2V5.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/psychology_alt.xml b/compose/material/material/icons/generator/raw-icons/outlined/psychology_alt.xml
new file mode 100644
index 0000000..44b64ec
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/psychology_alt.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.94,9.06C19.5,5.73 16.57,3 13,3C9.47,3 6.57,5.61 6.08,9l-1.93,3.48C3.74,13.14 4.22,14 5,14h1l0,2c0,1.1 0.9,2 2,2h1v3h7l0,-4.68C18.62,15.07 20.35,12.24 19.94,9.06zM14.89,14.63L14,15.05V19h-3v-3H8v-4H6.7l1.33,-2.33C8.21,7.06 10.35,5 13,5c2.76,0 5,2.24 5,5C18,12.09 16.71,13.88 14.89,14.63z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.5,12.54c-0.41,0 -0.74,0.31 -0.74,0.73c0,0.41 0.33,0.74 0.74,0.74c0.42,0 0.73,-0.33 0.73,-0.74C13.23,12.85 12.92,12.54 12.5,12.54z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.5,7c-1.03,0 -1.74,0.67 -2,1.45l0.96,0.4c0.13,-0.39 0.43,-0.86 1.05,-0.86c0.95,0 1.13,0.89 0.8,1.36c-0.32,0.45 -0.86,0.75 -1.14,1.26c-0.23,0.4 -0.18,0.87 -0.18,1.16h1.06c0,-0.55 0.04,-0.65 0.13,-0.82c0.23,-0.42 0.65,-0.62 1.09,-1.27c0.4,-0.59 0.25,-1.38 -0.01,-1.8C13.95,7.39 13.36,7 12.5,7z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/repartition.xml b/compose/material/material/icons/generator/raw-icons/outlined/repartition.xml
new file mode 100644
index 0000000..69784ee
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/repartition.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3,21h18v-6H3V21zM10.33,19v-2h3.33v2H10.33zM19,19h-3.33v-2H19V19zM5,17h3.33v2H5V17z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,10l1.42,-1.42L5.83,7H17c1.1,0 2,0.9 2,2s-0.9,2 -2,2H3v2h14c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4H5.83l1.59,-1.59L6,2L2,6L6,10z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/shape_line.xml b/compose/material/material/icons/generator/raw-icons/outlined/shape_line.xml
new file mode 100644
index 0000000..71f2443
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/shape_line.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,11c2.76,0 5,-2.24 5,-5S8.76,1 6,1S1,3.24 1,6S3.24,11 6,11zM6,3c1.65,0 3,1.35 3,3c0,1.65 -1.35,3 -3,3S3,7.65 3,6C3,4.35 4.35,3 6,3z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21,14h-5c-1.1,0 -2,0.9 -2,2v5c0,1.1 0.9,2 2,2h5c1.1,0 2,-0.9 2,-2v-5C23,14.9 22.1,14 21,14zM21,21h-5v-5h5V21z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.71,7.7C18.11,7.89 18.54,8 19,8c1.65,0 3,-1.35 3,-3s-1.35,-3 -3,-3s-3,1.35 -3,3c0,0.46 0.11,0.89 0.3,1.29L6.29,16.3C5.89,16.11 5.46,16 5,16c-1.65,0 -3,1.35 -3,3s1.35,3 3,3s3,-1.35 3,-3c0,-0.46 -0.11,-0.89 -0.3,-1.29L17.71,7.7z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/sports_cricket.xml b/compose/material/material/icons/generator/raw-icons/outlined/sports_cricket.xml
index 8b712f4..844d1aa 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/sports_cricket.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/sports_cricket.xml
@@ -9,7 +9,7 @@
       android:pathData="M15.04,12.79l-8.5,-8.5C6.35,4.1 6.09,4 5.83,4S5.32,4.1 5.13,4.29L2.29,7.13c-0.39,0.39 -0.39,1.03 0,1.42l8.5,8.5c0.2,0.2 0.45,0.29 0.71,0.29c0.26,0 0.51,-0.1 0.71,-0.29l2.83,-2.83C15.43,13.82 15.43,13.18 15.04,12.79zM11.5,14.92L4.41,7.83l1.42,-1.42l7.09,7.09L11.5,14.92z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M14.3412,17.7562l1.4142,-1.4142l4.2426,4.2426l-1.4142,1.4142z"/>
+      android:pathData="M14.341,17.756l1.414,-1.414l4.243,4.243l-1.414,1.414z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M18.5,2C16.57,2 15,3.57 15,5.5C15,7.43 16.57,9 18.5,9S22,7.43 22,5.5C22,3.57 20.43,2 18.5,2zM18.5,7C17.67,7 17,6.33 17,5.5S17.67,4 18.5,4S20,4.67 20,5.5S19.33,7 18.5,7z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/sports_football.xml b/compose/material/material/icons/generator/raw-icons/outlined/sports_football.xml
index f23e85a..75fda10 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/sports_football.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/sports_football.xml
@@ -9,5 +9,5 @@
       android:pathData="M20.31,3.69C19.99,3.36 18.37,3 16.26,3c-3.03,0 -7.09,0.75 -9.8,3.46C1.87,11.05 2.9,19.52 3.69,20.31C4.01,20.64 5.63,21 7.74,21c3.03,0 7.09,-0.75 9.8,-3.46C22.13,12.95 21.1,4.48 20.31,3.69zM7.74,19c-1.14,0 -2.02,-0.12 -2.53,-0.23c-0.18,-0.79 -0.3,-2.21 -0.17,-3.83l4.01,4.01C8.53,18.99 8.08,19 7.74,19zM16.13,16.13c-1.33,1.33 -3.06,2.05 -4.66,2.44l-6.04,-6.04c0.42,-1.68 1.16,-3.37 2.45,-4.65c1.32,-1.32 3.05,-2.04 4.64,-2.43l6.05,6.05C18.15,13.17 17.4,14.85 16.13,16.13zM18.96,9.09l-4.03,-4.03C15.45,5.01 15.91,5 16.26,5c1.14,0 2.02,0.12 2.53,0.23C18.97,6.02 19.09,7.45 18.96,9.09z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M8.4997,14.1002l5.6002,-5.6002l1.4001,1.4001l-5.6002,5.6002z"/>
+      android:pathData="M8.5,14.1l5.6,-5.6l1.4,1.4l-5.6,5.6z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/stacked_bar_chart.xml b/compose/material/material/icons/generator/raw-icons/outlined/stacked_bar_chart.xml
index ebe5a8f..2a7fd72 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/stacked_bar_chart.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/stacked_bar_chart.xml
@@ -6,5 +6,20 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M6,10h3v10H6V10zM6,5h3v4H6V5zM16,16h3v4h-3V16zM16,13h3v2h-3V13zM11,13h3v7h-3V13zM11,9h3v3h-3V9z"/>
+      android:pathData="M4,9h4v11h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,4h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,7h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,10h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,15h4v5h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,12h4v8h-4z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/stream.xml b/compose/material/material/icons/generator/raw-icons/outlined/stream.xml
index edef540..f748f56 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/stream.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/stream.xml
@@ -15,7 +15,7 @@
       android:pathData="M12,20m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M13.9431,8.619l4.4044,-4.3919l1.4122,1.4162l-4.4044,4.3919z"/>
+      android:pathData="M13.943,8.619l4.404,-4.392l1.412,1.416l-4.404,4.392z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M8.32,9.68l0.31,0.32l1.42,-1.41l-4.02,-4.04l-0.01,0l-0.31,-0.32l-1.42,1.41l4.02,4.05z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/transcribe.xml b/compose/material/material/icons/generator/raw-icons/outlined/transcribe.xml
new file mode 100644
index 0000000..f80dd2f
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/transcribe.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13c2.21,0 4,-1.79 4,-4c0,-2.21 -1.79,-4 -4,-4S5,6.79 5,9C5,11.21 6.79,13 9,13zM9,7c1.1,0 2,0.9 2,2c0,1.1 -0.9,2 -2,2s-2,-0.9 -2,-2C7,7.9 7.9,7 9,7zM15.39,15.56C13.71,14.7 11.53,14 9,14c-2.53,0 -4.71,0.7 -6.39,1.56C1.61,16.07 1,17.1 1,18.22V21h16v-2.78C17,17.1 16.39,16.07 15.39,15.56zM15,19H3v-0.78c0,-0.38 0.2,-0.72 0.52,-0.88C4.71,16.73 6.63,16 9,16c2.37,0 4.29,0.73 5.48,1.34C14.8,17.5 15,17.84 15,18.22V19zM17.93,16l1.63,-1.63c-2.77,-3.02 -2.77,-7.56 0,-10.74L17.93,2C14.03,5.89 14.02,11.95 17.93,16zM22.92,10.95c-0.84,-1.18 -0.84,-2.71 0,-3.89l-1.68,-1.69c-2.02,2.02 -2.02,5.07 0,7.27L22.92,10.95z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/troubleshoot.xml b/compose/material/material/icons/generator/raw-icons/outlined/troubleshoot.xml
new file mode 100644
index 0000000..97931d3
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/troubleshoot.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22,20.59l-4.69,-4.69C18.37,14.55 19,12.85 19,11c0,-4.42 -3.58,-8 -8,-8c-4.08,0 -7.44,3.05 -7.93,7h2.02C5.57,7.17 8.03,5 11,5c3.31,0 6,2.69 6,6s-2.69,6 -6,6c-2.42,0 -4.5,-1.44 -5.45,-3.5H3.4C4.45,16.69 7.46,19 11,19c1.85,0 3.55,-0.63 4.9,-1.69L20.59,22L22,20.59z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8.43,9.69l1.22,5.31l1.64,0l1.26,-3.78l0.95,2.28l2,0l0,-1.5l-1,0l-1.25,-3l-1.54,0l-1.12,3.37l-1.24,-5.37l-1.65,0l-1.25,4l-5.45,0l0,1.5l6.55,0z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/tungsten.xml b/compose/material/material/icons/generator/raw-icons/outlined/tungsten.xml
index ccb6932..b0217f1 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/tungsten.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/tungsten.xml
@@ -15,10 +15,10 @@
       android:pathData="M19,11h3v2h-3z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M15.8941,17.8014l1.4071,-1.4071l2.1213,2.1213l-1.4071,1.4071z"/>
+      android:pathData="M15.894,17.801l1.407,-1.407l2.121,2.121l-1.407,1.407z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M4.5842,18.5085l2.1213,-2.1213l1.4071,1.4071l-2.1213,2.1213z"/>
+      android:pathData="M4.584,18.509l2.121,-2.121l1.407,1.407l-2.121,2.121z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M15,8.02V3H9v5.02C7.79,8.94 7,10.37 7,12c0,2.76 2.24,5 5,5s5,-2.24 5,-5C17,10.37 16.21,8.94 15,8.02zM11,5h2v2.1C12.68,7.04 12.34,7 12,7s-0.68,0.04 -1,0.1V5zM12,15c-1.65,0 -3,-1.35 -3,-3s1.35,-3 3,-3c1.65,0 3,1.35 3,3S13.65,15 12,15z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/type_specimen.xml b/compose/material/material/icons/generator/raw-icons/outlined/type_specimen.xml
new file mode 100644
index 0000000..fca2e7d
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/type_specimen.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,6H2v14c0,1.1 0.9,2 2,2h14v-2H4V6z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,2H8C6.9,2 6,2.9 6,4v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2V4C22,2.9 21.1,2 20,2zM20,16H8V4h12V16z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.19,12.2h3.63l0.8,2.3h1.56l-3.38,-9H13.2l-3.38,9h1.56L12.19,12.2zM13.96,7.17h0.08l1.31,3.72h-2.69L13.96,7.17z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/unfold_less_double.xml b/compose/material/material/icons/generator/raw-icons/outlined/unfold_less_double.xml
new file mode 100644
index 0000000..92f9c80
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/unfold_less_double.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.58,1.41l-1.42,-1.41l-3.17,3.17l-3.17,-3.17l-1.41,1.41l4.58,4.59z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.58,6.41l-1.42,-1.41l-3.17,3.17l-3.17,-3.17l-1.41,1.41l4.58,4.59z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7.42,17.59l1.42,1.41l3.17,-3.17l3.17,3.17l1.41,-1.41l-4.58,-4.59z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7.42,22.59l1.42,1.41l3.17,-3.17l3.17,3.17l1.41,-1.41l-4.58,-4.59z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/unfold_more_double.xml b/compose/material/material/icons/generator/raw-icons/outlined/unfold_more_double.xml
new file mode 100644
index 0000000..4d100fe
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/unfold_more_double.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,7.83L15.17,11l1.41,-1.41L12,5L7.41,9.59L8.83,11L12,7.83zM12,2.83L15.17,6l1.41,-1.41L12,0L7.41,4.59L8.83,6L12,2.83zM12,21.17L8.83,18l-1.41,1.41L12,24l4.59,-4.59L15.17,18L12,21.17zM12,16.17L8.83,13l-1.41,1.41L12,19l4.59,-4.59L15.17,13L12,16.17z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/video_chat.xml b/compose/material/material/icons/generator/raw-icons/outlined/video_chat.xml
new file mode 100644
index 0000000..8706458
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/video_chat.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,2H4C2.9,2 2.01,2.9 2.01,4L2,22l4,-4h14c1.1,0 2,-0.9 2,-2V4C22,2.9 21.1,2 20,2zM20,16H5.17L4,17.17V4h16V16z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8,14h6c0.55,0 1,-0.45 1,-1v-1.99L17,13V7l-2,1.99V7c0,-0.55 -0.45,-1 -1,-1H8C7.45,6 7,6.45 7,7v6C7,13.55 7.45,14 8,14z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/view_comfy.xml b/compose/material/material/icons/generator/raw-icons/outlined/view_comfy.xml
index 908934c..eb2455e 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/view_comfy.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/view_comfy.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3,5v14h19L22,5L3,5zM20,9h-2.25L17.75,7L20,7v2zM9.25,11h2.25v2L9.25,13v-2zM7.25,13L5,13v-2h2.25v2zM11.5,9L9.25,9L9.25,7h2.25v2zM13.5,7h2.25v2L13.5,9L13.5,7zM11.5,15v2L9.25,17v-2h2.25zM13.5,15h2.25v2L13.5,17v-2zM13.5,13v-2h2.25v2L13.5,13zM17.75,11L20,11v2h-2.25v-2zM7.25,7v2L5,9L5,7h2.25zM5,15h2.25v2L5,17v-2zM17.75,17v-2L20,15v2h-2.25z"/>
+      android:pathData="M2,4v16h20V4H2zM4,6h16v5H4V6zM4,18v-5h4v5H4zM10,18v-5h10v5H10z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/view_compact.xml b/compose/material/material/icons/generator/raw-icons/outlined/view_compact.xml
index ee7a630..79a84f1 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/view_compact.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/view_compact.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3,5v14h19L22,5L3,5zM5,7h15v4L5,11L5,7zM5,17v-4h4v4L5,17zM11,17v-4h9v4h-9z"/>
+      android:pathData="M2,4v16h20V4H2zM6.5,18H4v-2.5h2.5V18zM6.5,13.25H4v-2.5h2.5V13.25zM6.5,8.5H4V6h2.5V8.5zM11,18H8.5v-2.5H11V18zM11,13.25H8.5v-2.5H11V13.25zM11,8.5H8.5V6H11V8.5zM15.5,18H13v-2.5h2.5V18zM15.5,13.25H13v-2.5h2.5V13.25zM15.5,8.5H13V6h2.5V8.5zM20,18h-2.5v-2.5H20V18zM20,13.25h-2.5v-2.5H20V13.25zM20,8.5h-2.5V6H20V8.5z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/wb_twilight.xml b/compose/material/material/icons/generator/raw-icons/outlined/wb_twilight.xml
index 8431091..474dbed 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/wb_twilight.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/wb_twilight.xml
@@ -6,7 +6,7 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M16.9552,8.662l2.1207,-2.1222l1.4148,1.4138l-2.1207,2.1222z"/>
+      android:pathData="M16.955,8.662l2.121,-2.122l1.415,1.414l-2.121,2.122z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M2,18h20v2h-20z"/>
@@ -15,7 +15,7 @@
       android:pathData="M11,4h2v3h-2z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3.5425,7.9248l1.4142,-1.4142l2.1213,2.1213l-1.4142,1.4142z"/>
+      android:pathData="M3.543,7.925l1.414,-1.414l2.121,2.121l-1.414,1.414z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M5,16h14c0,-3.87 -3.13,-7 -7,-7S5,12.13 5,16z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/web_stories.xml b/compose/material/material/icons/generator/raw-icons/outlined/web_stories.xml
new file mode 100644
index 0000000..23952f3
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/web_stories.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,4v16c1.1,0 2,-0.9 2,-2V6C19,4.9 18.1,4 17,4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,2H4C2.9,2 2,2.9 2,4v16c0,1.1 0.9,2 2,2h9c1.1,0 2,-0.9 2,-2V4C15,2.9 14.1,2 13,2zM13,20H4V4h9V20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21,6v12c0.83,0 1.5,-0.67 1.5,-1.5v-9C22.5,6.67 21.83,6 21,6z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/window.xml b/compose/material/material/icons/generator/raw-icons/outlined/window.xml
index ab563fe..926f2ad 100644
--- a/compose/material/material/icons/generator/raw-icons/outlined/window.xml
+++ b/compose/material/material/icons/generator/raw-icons/outlined/window.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M20,2H4C2.9,2 2,2.9 2,4v16c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V4C22,2.9 21.1,2 20,2zM20,11h-7V4h7V11zM11,4v7H4V4H11zM4,13h7v7H4V13zM13,20v-7h7v7H13z"/>
+      android:pathData="M19,3H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5C21,3.9 20.1,3 19,3zM19,11h-6V5h6V11zM11,5v6H5V5H11zM5,13h6v6H5V13zM13,19v-6h6v6H13z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/outlined/woman_2.xml b/compose/material/material/icons/generator/raw-icons/outlined/woman_2.xml
new file mode 100644
index 0000000..1f42b3f
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/outlined/woman_2.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.94,8.31C13.62,7.52 12.85,7 12,7s-1.62,0.52 -1.94,1.31L7,16h3.5v6h3v-6H17L13.94,8.31z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/account_box.xml b/compose/material/material/icons/generator/raw-icons/rounded/account_box.xml
index 3481c02..32f6b3f 100644
--- a/compose/material/material/icons/generator/raw-icons/rounded/account_box.xml
+++ b/compose/material/material/icons/generator/raw-icons/rounded/account_box.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3,5v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2L5,3c-1.11,0 -2,0.9 -2,2zM15,9c0,1.66 -1.34,3 -3,3s-3,-1.34 -3,-3 1.34,-3 3,-3 3,1.34 3,3zM6,17c0,-2 4,-3.1 6,-3.1s6,1.1 6,3.1v1L6,18v-1z"/>
+      android:pathData="M19,3H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5C21,3.9 20.1,3 19,3zM12,6c1.93,0 3.5,1.57 3.5,3.5c0,1.93 -1.57,3.5 -3.5,3.5s-3.5,-1.57 -3.5,-3.5C8.5,7.57 10.07,6 12,6zM19,19H5v-0.23c0,-0.62 0.28,-1.2 0.76,-1.58C7.47,15.82 9.64,15 12,15s4.53,0.82 6.24,2.19c0.48,0.38 0.76,0.97 0.76,1.58V19z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/account_circle.xml b/compose/material/material/icons/generator/raw-icons/rounded/account_circle.xml
index 89199eb..6476320 100644
--- a/compose/material/material/icons/generator/raw-icons/rounded/account_circle.xml
+++ b/compose/material/material/icons/generator/raw-icons/rounded/account_circle.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,5c1.66,0 3,1.34 3,3s-1.34,3 -3,3 -3,-1.34 -3,-3 1.34,-3 3,-3zM12,19.2c-2.5,0 -4.71,-1.28 -6,-3.22 0.03,-1.99 4,-3.08 6,-3.08 1.99,0 5.97,1.09 6,3.08 -1.29,1.94 -3.5,3.22 -6,3.22z"/>
+      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,6c1.93,0 3.5,1.57 3.5,3.5S13.93,13 12,13s-3.5,-1.57 -3.5,-3.5S10.07,6 12,6zM12,20c-2.03,0 -4.43,-0.82 -6.14,-2.88C7.55,15.8 9.68,15 12,15s4.45,0.8 6.14,2.12C16.43,19.18 14.03,20 12,20z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/add_home.xml b/compose/material/material/icons/generator/raw-icons/rounded/add_home.xml
new file mode 100644
index 0000000..b0f2a03
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/add_home.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.53,11.16c1.23,-0.26 2.4,-0.18 3.47,0.14V10c0,-0.63 -0.3,-1.22 -0.8,-1.6l-6,-4.5c-0.71,-0.53 -1.69,-0.53 -2.4,0l-6,4.5C4.3,8.78 4,9.37 4,10v9c0,1.1 0.9,2 2,2h5.68c-0.61,-1.28 -0.86,-2.77 -0.55,-4.35C11.65,13.93 13.82,11.74 16.53,11.16z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18,13c-2.76,0 -5,2.24 -5,5s2.24,5 5,5s5,-2.24 5,-5S20.76,13 18,13zM21,18.5h-2.5V21h-1v-2.5H15v-1h2.5V15h1v2.5H21V18.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/add_home_work.xml b/compose/material/material/icons/generator/raw-icons/rounded/add_home_work.xml
new file mode 100644
index 0000000..a026702
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/add_home_work.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14.96,11.7c-0.09,-0.52 -0.36,-0.99 -0.8,-1.3l-5,-3.57c-0.7,-0.5 -1.63,-0.5 -2.32,0l-5,3.57C1.31,10.78 1,11.38 1,12.03V19c0,1.1 0.9,2 2,2h3v-6h4v6h1.68C11.25,20.09 11,19.08 11,18C11,15.22 12.62,12.83 14.96,11.7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M23,13.11V4.97C23,3.88 22.12,3 21.03,3h-9.06C10.88,3 10,3.88 10,4.97l0.02,0.05c0.1,0.06 0.21,0.11 0.3,0.18l5,3.57c0.79,0.56 1.34,1.4 1.56,2.32C17.25,11.04 17.62,11 18,11C19.96,11 21.73,11.81 23,13.11zM17,7h2v2h-2V7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M23,18c0,-2.76 -2.24,-5 -5,-5s-5,2.24 -5,5s2.24,5 5,5S23,20.76 23,18zM17.5,21v-2.5H15v-1h2.5V15h1v2.5H21v1h-2.5V21H17.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/arrow_outward.xml b/compose/material/material/icons/generator/raw-icons/rounded/arrow_outward.xml
new file mode 100644
index 0000000..f917dba
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/arrow_outward.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,7L6,7c0,0.55 0.45,1 1,1h7.59l-8.88,8.88c-0.39,0.39 -0.39,1.02 0,1.41l0,0c0.39,0.39 1.02,0.39 1.41,0L16,9.41V17c0,0.55 0.45,1 1,1h0c0.55,0 1,-0.45 1,-1V7c0,-0.55 -0.45,-1 -1,-1H7C6.45,6 6,6.45 6,7z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/assist_walker.xml b/compose/material/material/icons/generator/raw-icons/rounded/assist_walker.xml
new file mode 100644
index 0000000..9446fa4
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/assist_walker.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.5,4.5m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.77,17.72l-0.64,-6.37C19.06,10.58 18.41,10 17.64,10H16c-1.5,-0.02 -2.86,-0.54 -3.76,-1.44l-2,-1.98C10.08,6.42 9.62,6 8.83,6C8.32,6 7.81,6.2 7.42,6.59L4.08,9.91c-0.53,0.68 -0.51,1.57 -0.21,2.13l1.43,2.8L2.75,18.1c-0.34,0.43 -0.26,1.06 0.17,1.4l0,0c0.44,0.34 1.07,0.26 1.41,-0.17l2.56,-3.29c0.33,-0.42 0.47,-0.95 0.41,-1.48l-0.07,-0.53L8,14.75V19c0,0.55 0.45,1 1,1h0c0.55,0 1,-0.45 1,-1v-4.29c0,-0.53 -0.21,-1.04 -0.59,-1.41l-1.53,-1.53l2.36,-2.36c0.94,0.94 1.72,1.82 3.59,2.32l-0.75,7.46c-0.04,0.44 0.3,0.83 0.75,0.83h0c0.38,0 0.7,-0.29 0.75,-0.66l0.33,-2.84h3.18l0.14,1.22c-0.44,0.26 -0.73,0.74 -0.73,1.28c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5C20.5,18.46 20.21,17.98 19.77,17.72zM15.09,15l0.41,-3.5h2l0.41,3.5H15.09z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/bar_chart.xml b/compose/material/material/icons/generator/raw-icons/rounded/bar_chart.xml
index 772577b2..f3c983b 100644
--- a/compose/material/material/icons/generator/raw-icons/rounded/bar_chart.xml
+++ b/compose/material/material/icons/generator/raw-icons/rounded/bar_chart.xml
@@ -6,5 +6,11 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M6.4,9.2h0.2c0.77,0 1.4,0.63 1.4,1.4v7c0,0.77 -0.63,1.4 -1.4,1.4h-0.2c-0.77,0 -1.4,-0.63 -1.4,-1.4v-7c0,-0.77 0.63,-1.4 1.4,-1.4zM12,5c0.77,0 1.4,0.63 1.4,1.4v11.2c0,0.77 -0.63,1.4 -1.4,1.4 -0.77,0 -1.4,-0.63 -1.4,-1.4L10.6,6.4c0,-0.77 0.63,-1.4 1.4,-1.4zM17.6,13c0.77,0 1.4,0.63 1.4,1.4v3.2c0,0.77 -0.63,1.4 -1.4,1.4 -0.77,0 -1.4,-0.63 -1.4,-1.4v-3.2c0,-0.77 0.63,-1.4 1.4,-1.4z"/>
+      android:pathData="M6,20L6,20c1.1,0 2,-0.9 2,-2v-7c0,-1.1 -0.9,-2 -2,-2h0c-1.1,0 -2,0.9 -2,2v7C4,19.1 4.9,20 6,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,15v3c0,1.1 0.9,2 2,2h0c1.1,0 2,-0.9 2,-2v-3c0,-1.1 -0.9,-2 -2,-2h0C16.9,13 16,13.9 16,15z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,20L12,20c1.1,0 2,-0.9 2,-2V6c0,-1.1 -0.9,-2 -2,-2h0c-1.1,0 -2,0.9 -2,2v12C10,19.1 10.9,20 12,20z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/blind.xml b/compose/material/material/icons/generator/raw-icons/rounded/blind.xml
new file mode 100644
index 0000000..83c40fe
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/blind.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11.41,3.5m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.04,7.12c-0.17,-0.35 -0.44,-0.65 -0.8,-0.85C10.63,5.91 9.9,5.93 9.31,6.24l0,-0.01L4.92,8.73C4.3,9.08 3.91,9.74 3.91,10.46V13c0,0.55 0.45,1 1,1h0c0.55,0 1,-0.45 1,-1v-2.54l1.5,-0.85c-0.32,1.1 -0.5,2.24 -0.5,3.39v5.33l-2,2.67c-0.33,0.44 -0.24,1.07 0.2,1.4l0,0c0.44,0.33 1.07,0.24 1.4,-0.2l2.04,-2.72c0.23,-0.31 0.37,-0.69 0.4,-1.08l0.18,-2.94L10.91,18v4c0,0.55 0.45,1 1,1h0c0.55,0 1,-0.45 1,-1v-4.87c0,-0.41 -0.13,-0.81 -0.36,-1.15l-1.6,-2.29c0,0 0,0 0,-0.01c-0.11,-1.16 0.07,-2.32 0.46,-3.4c0.75,1.14 1.88,1.98 3.2,2.41l5.7,9.87c0.14,0.24 0.44,0.32 0.68,0.18l0,0c0.24,-0.14 0.32,-0.44 0.18,-0.68L15.92,13h0c0.54,0 0.98,-0.44 0.98,-0.98v-0.05c0,-0.5 -0.37,-0.94 -0.87,-0.99c-0.95,-0.1 -2.37,-0.52 -3.21,-2.18"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/contact_emergency.xml b/compose/material/material/icons/generator/raw-icons/rounded/contact_emergency.xml
new file mode 100644
index 0000000..0ac691e
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/contact_emergency.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22,3H2C0.9,3 0,3.9 0,5v14c0,1.1 0.9,2 2,2h20c1.1,0 1.99,-0.9 1.99,-2L24,5C24,3.9 23.1,3 22,3zM9,8c1.65,0 3,1.35 3,3s-1.35,3 -3,3s-3,-1.35 -3,-3S7.35,8 9,8zM2.08,19c1.38,-2.39 3.96,-4 6.92,-4s5.54,1.61 6.92,4H2.08zM20.6,10.5L20.6,10.5c-0.21,0.36 -0.67,0.48 -1.02,0.27l-0.82,-0.48v0.95c0,0.41 -0.34,0.75 -0.75,0.75h0c-0.41,0 -0.75,-0.34 -0.75,-0.75V10.3l-0.82,0.48c-0.36,0.21 -0.82,0.08 -1.02,-0.27l0,0c-0.21,-0.36 -0.08,-0.82 0.27,-1.02L16.5,9l-0.82,-0.48c-0.36,-0.21 -0.48,-0.67 -0.27,-1.02l0,0c0.21,-0.36 0.67,-0.48 1.02,-0.27l0.82,0.48V6.75C17.25,6.34 17.59,6 18,6h0c0.41,0 0.75,0.34 0.75,0.75V7.7l0.82,-0.48c0.36,-0.21 0.82,-0.08 1.02,0.27v0c0.21,0.36 0.08,0.82 -0.27,1.02L19.5,9l0.82,0.48C20.68,9.68 20.81,10.14 20.6,10.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/crop_16_9.xml b/compose/material/material/icons/generator/raw-icons/rounded/crop_16_9.xml
index 4ca2d2b..7bc13cb 100644
--- a/compose/material/material/icons/generator/raw-icons/rounded/crop_16_9.xml
+++ b/compose/material/material/icons/generator/raw-icons/rounded/crop_16_9.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,6L5,6c-1.1,0 -2,0.9 -2,2v8c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,8c0,-1.1 -0.9,-2 -2,-2zM18,16L6,16c-0.55,0 -1,-0.45 -1,-1L5,9c0,-0.55 0.45,-1 1,-1h12c0.55,0 1,0.45 1,1v6c0,0.55 -0.45,1 -1,1z"/>
+      android:pathData="M19,7H5C3.9,7 3,7.9 3,9v6c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V9C21,7.9 20.1,7 19,7zM19,15H5V9h14V15z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/crop_3_2.xml b/compose/material/material/icons/generator/raw-icons/rounded/crop_3_2.xml
index aee22db..acaa273 100644
--- a/compose/material/material/icons/generator/raw-icons/rounded/crop_3_2.xml
+++ b/compose/material/material/icons/generator/raw-icons/rounded/crop_3_2.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,4L5,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.9,-2 -2,-2zM18,18L6,18c-0.55,0 -1,-0.45 -1,-1L5,7c0,-0.55 0.45,-1 1,-1h12c0.55,0 1,0.45 1,1v10c0,0.55 -0.45,1 -1,1z"/>
+      android:pathData="M19,6H5C3.9,6 3,6.9 3,8v8c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V8C21,6.9 20.1,6 19,6zM19,16H5V8h14V16z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/crop_5_4.xml b/compose/material/material/icons/generator/raw-icons/rounded/crop_5_4.xml
index 1623ef5..e9fc8e8 100644
--- a/compose/material/material/icons/generator/raw-icons/rounded/crop_5_4.xml
+++ b/compose/material/material/icons/generator/raw-icons/rounded/crop_5_4.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,5L5,5c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,7c0,-1.1 -0.9,-2 -2,-2zM18,17L6,17c-0.55,0 -1,-0.45 -1,-1L5,8c0,-0.55 0.45,-1 1,-1h12c0.55,0 1,0.45 1,1v8c0,0.55 -0.45,1 -1,1z"/>
+      android:pathData="M19,4H5C3.9,4 3,4.9 3,6v12c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V6C21,4.9 20.1,4 19,4zM19,18H5V6h14V18z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/crop_7_5.xml b/compose/material/material/icons/generator/raw-icons/rounded/crop_7_5.xml
index 0560b23..d151917 100644
--- a/compose/material/material/icons/generator/raw-icons/rounded/crop_7_5.xml
+++ b/compose/material/material/icons/generator/raw-icons/rounded/crop_7_5.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,7L5,7c-1.1,0 -2,0.9 -2,2v6c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,9c0,-1.1 -0.9,-2 -2,-2zM18,15L6,15c-0.55,0 -1,-0.45 -1,-1v-4c0,-0.55 0.45,-1 1,-1h12c0.55,0 1,0.45 1,1v4c0,0.55 -0.45,1 -1,1z"/>
+      android:pathData="M19,5H5C3.9,5 3,5.9 3,7v10c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V7C21,5.9 20.1,5 19,5zM19,17H5V7h14V17z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/dataset.xml b/compose/material/material/icons/generator/raw-icons/rounded/dataset.xml
new file mode 100644
index 0000000..a19cab0
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/dataset.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19,3H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5C21,3.9 20.1,3 19,3zM11,17H7v-4h4V17zM11,11H7V7h4V11zM17,17h-4v-4h4V17zM17,11h-4V7h4V11z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/dataset_linked.xml b/compose/material/material/icons/generator/raw-icons/rounded/dataset_linked.xml
new file mode 100644
index 0000000..632ff14
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/dataset_linked.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8.09,17H7v-4h3.69c0.95,-0.63 2.09,-1 3.31,-1h6c0.34,0 0.67,0.04 1,0.09V5c0,-1.1 -0.9,-2 -2,-2H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h3.81C8.3,20.12 8,19.09 8,18C8,17.66 8.04,17.33 8.09,17zM13,7h4v4h-4V7zM7,7h4v4H7V7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.03,17.66c0.16,-0.98 1.09,-1.66 2.08,-1.66L15,16c0.55,0 1,-0.45 1,-1v0c0,-0.55 -0.45,-1 -1,-1l-0.83,0c-2.09,0 -3.95,1.53 -4.15,3.61C9.79,19.99 11.66,22 14,22h1c0.55,0 1,-0.45 1,-1v0c0,-0.55 -0.45,-1 -1,-1h-1C12.79,20 11.82,18.91 12.03,17.66z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.83,14L19,14c-0.55,0 -1,0.45 -1,1v0c0,0.55 0.45,1 1,1l0.89,0c1,0 1.92,0.68 2.08,1.66C22.18,18.91 21.21,20 20,20h-1c-0.55,0 -1,0.45 -1,1v0c0,0.55 0.45,1 1,1h1c2.34,0 4.21,-2.01 3.98,-4.39C23.78,15.53 21.92,14 19.83,14z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,19h4c0.55,0 1,-0.45 1,-1v0c0,-0.55 -0.45,-1 -1,-1h-4c-0.55,0 -1,0.45 -1,1v0C14,18.55 14.45,19 15,19z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/diversity_1.xml b/compose/material/material/icons/generator/raw-icons/rounded/diversity_1.xml
new file mode 100644
index 0000000..3e393b9
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/diversity_1.xml
@@ -0,0 +1,28 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,14m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.22,17.58C0.48,17.9 0,18.62 0,19.43L0,20c0,0.55 0.45,1 1,1l3.5,0v-1.61c0,-0.83 0.23,-1.61 0.63,-2.29C4.76,17.04 4.39,17 4,17C3.01,17 2.07,17.21 1.22,17.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,14m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.78,17.58C21.93,17.21 20.99,17 20,17c-0.39,0 -0.76,0.04 -1.13,0.1c0.4,0.68 0.63,1.46 0.63,2.29V21l3.5,0c0.55,0 1,-0.45 1,-1l0,-0.57C24,18.62 23.52,17.9 22.78,17.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.24,16.65c-1.17,-0.52 -2.61,-0.9 -4.24,-0.9c-1.63,0 -3.07,0.39 -4.24,0.9C6.68,17.13 6,18.21 6,19.39L6,20c0,0.55 0.45,1 1,1h10c0.55,0 1,-0.45 1,-1l0,-0.61C18,18.21 17.32,17.13 16.24,16.65z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,12c0,1.66 1.34,3 3,3s3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3S9,10.34 9,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2.48,10.86C2.17,10.1 2,9.36 2,8.6C2,6.02 4.02,4 6.6,4c2.68,0 3.82,1.74 5.4,3.59C13.57,5.76 14.7,4 17.4,4C19.98,4 22,6.02 22,8.6c0,0.76 -0.17,1.5 -0.48,2.26c0.65,0.31 1.18,0.82 1.53,1.44C23.65,11.1 24,9.88 24,8.6C24,4.9 21.1,2 17.4,2c-2.09,0 -4.09,0.97 -5.4,2.51C10.69,2.97 8.69,2 6.6,2C2.9,2 0,4.9 0,8.6c0,1.28 0.35,2.5 0.96,3.7C1.31,11.68 1.84,11.17 2.48,10.86z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/diversity_2.xml b/compose/material/material/icons/generator/raw-icons/rounded/diversity_2.xml
new file mode 100644
index 0000000..7ed8cbb
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/diversity_2.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10.77,15.23L10.77,15.23c0.4,-0.4 0.39,-1.07 -0.04,-1.45C8.17,11.47 6.65,9.9 7.07,8.33C7.29,7.52 8.01,7 8.85,7c1.11,0 1.54,0.65 2.68,2h0.93c1.12,-1.31 1.53,-2 2.68,-2c0.87,0 1.55,0.54 1.77,1.32c0.35,-0.04 0.68,-0.06 1,-0.06c0.36,0 0.7,0.03 1.03,0.08C18.7,6.43 17.13,5 15.15,5c-0.12,0 -0.23,0.03 -0.35,0.04c0.26,-0.71 0.31,-1.53 -0.18,-2.43C14.19,1.8 13.4,1.18 12.5,1.04C10.62,0.74 9,2.18 9,4c0,0.37 0.08,0.71 0.2,1.04C9.08,5.03 8.97,5 8.85,5C6.69,5 5,6.69 5,8.85c0,2.23 1.73,4.01 4.4,6.41C9.79,15.62 10.4,15.6 10.77,15.23z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M23.52,17.25c-0.54,-0.87 -1.27,-1.23 -2.01,-1.36c0.07,-0.1 0.15,-0.18 0.21,-0.28c1.08,-1.87 0.46,-4.18 -1.41,-5.26c-1.93,-1.11 -4.34,-0.5 -7.75,0.6c-0.51,0.16 -0.79,0.7 -0.66,1.21v0c0.15,0.55 0.73,0.87 1.28,0.69c3.28,-1.06 5.4,-1.6 6.55,-0.45c0.59,0.59 0.68,1.48 0.26,2.21c-0.56,0.96 -1.33,1 -3.07,1.32l-0.47,0.81c0.58,1.62 0.97,2.33 0.39,3.32c-0.53,0.91 -1.61,1.2 -2.53,0.68c-0.06,-0.03 -0.11,-0.09 -0.17,-0.13c-0.3,0.67 -0.64,1.24 -1.03,1.73c0,0.01 0,0.01 0,0.01c1.9,1.24 4.34,0.64 5.46,-1.29c0.06,-0.1 0.09,-0.21 0.14,-0.32c0.22,0.27 0.48,0.51 0.8,0.69c1.58,0.91 3.64,0.23 4.31,-1.55C24.14,19.02 24,18.03 23.52,17.25z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.1,15.04c-0.72,3.38 -1.32,5.48 -2.89,5.9c-0.81,0.22 -1.62,-0.15 -2.04,-0.88c-0.56,-0.96 -0.2,-1.66 0.39,-3.32L7.1,15.93c-1.7,-0.31 -2.5,-0.33 -3.07,-1.32c-0.53,-0.91 -0.24,-2 0.68,-2.53c0.09,-0.05 0.19,-0.08 0.29,-0.11c-0.27,-0.42 -0.5,-0.87 -0.67,-1.37c-0.24,-0.11 -0.36,-0.16 -0.6,-0.26c-1.88,1.07 -2.51,3.4 -1.43,5.27c0.06,0.1 0.14,0.18 0.21,0.28c-0.75,0.13 -1.48,0.49 -2.01,1.36c-0.48,0.78 -0.62,1.77 -0.3,2.63c0.68,1.78 2.74,2.46 4.31,1.55c0.32,-0.18 0.58,-0.42 0.8,-0.69c0.05,0.11 0.08,0.22 0.14,0.32c1.08,1.87 3.39,2.49 5.26,1.41c1.93,-1.11 2.61,-3.51 3.36,-7.01c0.11,-0.52 -0.21,-1.04 -0.72,-1.17l0,0C12.78,14.14 12.22,14.48 12.1,15.04z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/diversity_3.xml b/compose/material/material/icons/generator/raw-icons/rounded/diversity_3.xml
new file mode 100644
index 0000000..a37c1ad
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/diversity_3.xml
@@ -0,0 +1,22 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6.32,13.01c0.96,0.02 1.85,0.5 2.45,1.34C9.5,15.38 10.71,16 12,16c1.29,0 2.5,-0.62 3.23,-1.66c0.6,-0.84 1.49,-1.32 2.45,-1.34C16.96,11.78 14.08,11 12,11C9.93,11 7.04,11.78 6.32,13.01z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,13L4,13c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3s-3,1.34 -3,3C1,11.66 2.34,13 4,13z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,13L20,13c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3s-3,1.34 -3,3C17,11.66 18.34,13 20,13z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,10c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3S9,5.34 9,7C9,8.66 10.34,10 12,10z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21,14h-3.27c-0.77,0 -1.35,0.45 -1.68,0.92C16.01,14.98 14.69,17 12,17c-1.43,0 -3.03,-0.64 -4.05,-2.08C7.56,14.37 6.95,14 6.27,14L3,14c-1.1,0 -2,0.9 -2,2v3c0,0.55 0.45,1 1,1h5c0.55,0 1,-0.45 1,-1v-1.26c1.15,0.8 2.54,1.26 4,1.26s2.85,-0.46 4,-1.26V19c0,0.55 0.45,1 1,1h5c0.55,0 1,-0.45 1,-1v-3C23,14.9 22.1,14 21,14z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/edit_off.xml b/compose/material/material/icons/generator/raw-icons/rounded/edit_off.xml
index 23c8704..408f770 100644
--- a/compose/material/material/icons/generator/raw-icons/rounded/edit_off.xml
+++ b/compose/material/material/icons/generator/raw-icons/rounded/edit_off.xml
@@ -12,5 +12,5 @@
       android:pathData="M20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83l3.75,3.75L20.71,7.04z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M11.5352,8.7097l2.5173,-2.5173l3.7476,3.7476l-2.5173,2.5173z"/>
+      android:pathData="M11.535,8.71l2.517,-2.517l3.748,3.748l-2.517,2.517z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/face_2.xml b/compose/material/material/icons/generator/raw-icons/rounded/face_2.xml
new file mode 100644
index 0000000..4b29f67
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/face_2.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21.97,13.52c0,-0.01 0,-0.02 0,-0.04C23.21,12.38 24,10.78 24,9c0,-3.31 -2.69,-6 -6,-6c-0.26,0 -0.52,0.02 -0.78,0.06C16.19,1.23 14.24,0 12,0S7.81,1.23 6.78,3.06C6.52,3.02 6.26,3 6,3C2.69,3 0,5.69 0,9c0,1.78 0.79,3.38 2.02,4.48c0,0.01 0,0.02 0,0.04C0.79,14.62 0,16.22 0,18c0,3.31 2.69,6 6,6c1.39,0 2.67,-0.48 3.69,-1.28C10.43,22.9 11.2,23 12,23s1.57,-0.1 2.31,-0.28C15.33,23.52 16.61,24 18,24c3.31,0 6,-2.69 6,-6C24,16.22 23.21,14.62 21.97,13.52zM12,21c-4.41,0 -8,-3.59 -8,-8c0,-3.72 2.56,-6.85 6,-7.74c0,0.02 0,0.03 0,0.05c0,3.34 2.72,6.06 6.06,6.06c1.26,0 2.45,-0.39 3.45,-1.09C19.82,11.14 20,12.05 20,13C20,17.41 16.41,21 12,21z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,14m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,14m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/face_3.xml b/compose/material/material/icons/generator/raw-icons/rounded/face_3.xml
new file mode 100644
index 0000000..c7d50ae
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/face_3.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.91,11.96C22.39,6.32 17.66,2 12,2S1.61,6.32 1.09,11.96l-0.9,9.86C0.09,22.99 1.01,24 2.19,24h19.62c1.18,0 2.1,-1.01 1.99,-2.18L22.91,11.96zM4.54,9.13C5.41,9.68 6.43,10 7.5,10C9.36,10 11,9.07 12,7.65C13,9.07 14.64,10 16.5,10c1.07,0 2.09,-0.32 2.96,-0.87C19.8,10.02 20,10.99 20,12c0,4.41 -3.59,8 -8,8s-8,-3.59 -8,-8C4,10.99 4.2,10.02 4.54,9.13z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/face_4.xml b/compose/material/material/icons/generator/raw-icons/rounded/face_4.xml
new file mode 100644
index 0000000..655df37
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/face_4.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,2c-0.96,0 -1.88,0.14 -2.75,0.39C8.37,0.96 6.8,0 5,0C2.24,0 0,2.24 0,5c0,1.8 0.96,3.37 2.39,4.25C2.14,10.12 2,11.04 2,12c0,5.52 4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8c0,-0.05 0.01,-0.1 0.01,-0.15c2.6,-0.98 4.68,-2.99 5.74,-5.55C11.58,8.56 14.37,10 17.5,10c0.75,0 1.47,-0.09 2.17,-0.24C19.88,10.47 20,11.22 20,12C20,16.41 16.41,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/face_5.xml b/compose/material/material/icons/generator/raw-icons/rounded/face_5.xml
new file mode 100644
index 0000000..525db6c
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/face_5.xml
@@ -0,0 +1,76 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8c0,-1.12 0.23,-2.18 0.65,-3.15C4.74,8.94 4.86,9 5,9c0.28,0 0.5,-0.22 0.5,-0.5c0,-0.25 -0.19,-0.45 -0.43,-0.49c0.15,-0.26 0.32,-0.51 0.49,-0.75C5.53,7.34 5.5,7.41 5.5,7.5C5.5,7.78 5.72,8 6,8s0.5,-0.22 0.5,-0.5C6.5,7.22 6.28,7 6,7C5.87,7 5.75,7.05 5.66,7.13c0.52,-0.68 1.15,-1.28 1.86,-1.76C7.51,5.41 7.5,5.45 7.5,5.5C7.5,5.78 7.72,6 8,6s0.5,-0.22 0.5,-0.5c0,-0.24 -0.17,-0.43 -0.4,-0.48c0.16,-0.09 0.32,-0.17 0.49,-0.25C8.68,4.91 8.83,5 9,5c0.28,0 0.5,-0.22 0.5,-0.5c0,-0.03 -0.01,-0.06 -0.02,-0.09c0.39,-0.13 0.79,-0.23 1.21,-0.3C10.58,4.21 10.5,4.34 10.5,4.5C10.5,4.78 10.72,5 11,5s0.5,-0.22 0.5,-0.5c0,-0.21 -0.13,-0.38 -0.3,-0.46C11.46,4.01 11.73,4 12,4s0.54,0.01 0.8,0.04c-0.18,0.08 -0.3,0.25 -0.3,0.46C12.5,4.78 12.72,5 13,5s0.5,-0.22 0.5,-0.5c0,-0.16 -0.08,-0.29 -0.19,-0.38c0.41,0.07 0.82,0.17 1.21,0.3C14.51,4.44 14.5,4.47 14.5,4.5C14.5,4.78 14.72,5 15,5c0.17,0 0.32,-0.09 0.41,-0.23c0.17,0.08 0.33,0.16 0.49,0.25c-0.23,0.05 -0.4,0.24 -0.4,0.48C15.5,5.78 15.72,6 16,6s0.5,-0.22 0.5,-0.5c0,-0.05 -0.01,-0.09 -0.03,-0.13c0.71,0.48 1.34,1.08 1.86,1.76C18.25,7.05 18.13,7 18,7c-0.28,0 -0.5,0.22 -0.5,0.5C17.5,7.78 17.72,8 18,8s0.5,-0.22 0.5,-0.5c0,-0.09 -0.03,-0.16 -0.07,-0.23c0.18,0.24 0.34,0.49 0.49,0.75C18.69,8.05 18.5,8.25 18.5,8.5C18.5,8.78 18.72,9 19,9c0.14,0 0.26,-0.06 0.35,-0.15C19.77,9.82 20,10.88 20,12C20,16.41 16.41,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,5.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,5.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,5.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/face_6.xml b/compose/material/material/icons/generator/raw-icons/rounded/face_6.xml
new file mode 100644
index 0000000..8c34172
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/face_6.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8c0,-0.01 0,-0.02 0,-0.03c2.31,-0.22 3.43,-1.59 4.34,-3.41C8.51,8.21 8.85,8 9.24,8h5.53c0.38,0 0.72,0.21 0.89,0.55c0.9,1.8 1.99,3.19 4.34,3.41c0,0.01 0,0.02 0,0.03C20,16.41 16.41,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/fire_hydrant_alt.xml b/compose/material/material/icons/generator/raw-icons/rounded/fire_hydrant_alt.xml
new file mode 100644
index 0000000..7c342b8
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/fire_hydrant_alt.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19,11h-1V8h1c0.55,0 1,-0.45 1,-1v0c0,-0.55 -0.45,-1 -1,-1h-1.35C16.83,3.67 14.61,2 12,2S7.17,3.67 6.35,6H5C4.45,6 4,6.45 4,7v0c0,0.55 0.45,1 1,1h1v3H5c-1.1,0 -2,0.9 -2,2v2c0,1.1 0.9,2 2,2h1v3H5c-0.55,0 -1,0.45 -1,1v0c0,0.55 0.45,1 1,1h14c0.55,0 1,-0.45 1,-1v0c0,-0.55 -0.45,-1 -1,-1h-1v-3h1c1.1,0 2,-0.9 2,-2v-2C21,11.9 20.1,11 19,11zM12,17.5c-1.93,0 -3.5,-1.57 -3.5,-3.5s1.57,-3.5 3.5,-3.5s3.5,1.57 3.5,3.5S13.93,17.5 12,17.5z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,14m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/fire_truck.xml b/compose/material/material/icons/generator/raw-icons/rounded/fire_truck.xml
new file mode 100644
index 0000000..03a21b7
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/fire_truck.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.9,10.69l-1.44,-4.32C21.18,5.55 20.42,5 19.56,5H19V4c0,-0.55 -0.45,-1 -1,-1h-1c-0.55,0 -1,0.45 -1,1v1h-2c-1.1,0 -2,0.9 -2,2v4H3c-1.1,0 -2,0.9 -2,2v3c0,1.1 0.9,2 2,2h1c0,1.66 1.34,3 3,3s3,-1.34 3,-3h4c0,1.66 1.34,3 3,3s3,-1.34 3,-3h1c1.1,0 2,-0.9 2,-2v-4.68C23,11.11 22.97,10.9 22.9,10.69zM7,19c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1s1,0.45 1,1S7.55,19 7,19zM17,19c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1s1,0.45 1,1S17.55,19 17,19zM14,11V7h5.56l1.33,4H14z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10.25,8.5H10v-2h0.25C10.66,6.5 11,6.16 11,5.75v0C11,5.34 10.66,5 10.25,5h-8.5C1.34,5 1,5.34 1,5.75v0C1,6.16 1.34,6.5 1.75,6.5H2v2H1.75C1.34,8.5 1,8.84 1,9.25v0C1,9.66 1.34,10 1.75,10h8.5C10.66,10 11,9.66 11,9.25v0C11,8.84 10.66,8.5 10.25,8.5zM5.25,8.5H3.5v-2h1.75V8.5zM8.5,8.5H6.75v-2H8.5V8.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/fluorescent.xml b/compose/material/material/icons/generator/raw-icons/rounded/fluorescent.xml
new file mode 100644
index 0000000..2f4a536
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/fluorescent.xml
@@ -0,0 +1,28 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,15h10c1.1,0 2,-0.9 2,-2v-2c0,-1.1 -0.9,-2 -2,-2H7c-1.1,0 -2,0.9 -2,2v2C5,14.1 5.9,15 7,15z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,2L12,2c-0.56,0 -1,0.45 -1,1V4c0,0.55 0.45,1 1,1H12c0.55,0 1,-0.45 1,-1V3C13,2.45 12.55,2 12,2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.79,5.3L19.79,5.3c-0.39,-0.39 -1.02,-0.39 -1.41,0l-0.38,0.38c-0.39,0.39 -0.39,1.02 0,1.41l0,0c0.39,0.39 1.02,0.39 1.41,0l0.38,-0.38C20.18,6.33 20.18,5.69 19.79,5.3z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,22L12,22c0.56,0 1,-0.45 1,-1V20c0,-0.55 -0.45,-1 -1,-1H12c-0.55,0 -1,0.45 -1,1V21C11,21.55 11.45,22 12,22z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.99,18.41l0.38,0.39c0.39,0.39 1.02,0.39 1.41,0l0.01,-0.01c0.39,-0.39 0.39,-1.02 0,-1.41L19.4,17c-0.39,-0.39 -1.02,-0.39 -1.41,0l0,0C17.6,17.4 17.6,18.03 17.99,18.41z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,5.69L5.61,5.31c-0.39,-0.39 -1.02,-0.39 -1.41,0l0,0c-0.39,0.39 -0.39,1.02 0,1.41L4.59,7.1c0.39,0.39 1.02,0.39 1.41,0l0,0C6.38,6.71 6.38,6.07 6,5.69z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4.2,18.79L4.2,18.79c0.39,0.4 1.03,0.4 1.42,0L6,18.4c0.39,-0.39 0.39,-1.02 0,-1.41l0,0c-0.39,-0.39 -1.02,-0.39 -1.41,0L4.2,17.38C3.81,17.77 3.81,18.4 4.2,18.79z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/groups_2.xml b/compose/material/material/icons/generator/raw-icons/rounded/groups_2.xml
new file mode 100644
index 0000000..98413d9
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/groups_2.xml
@@ -0,0 +1,25 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10.27,12h3.46c0.93,0 1.63,-0.83 1.48,-1.75l-0.3,-1.79C14.67,7.04 13.44,6 12,6S9.33,7.04 9.09,8.47l-0.3,1.79C8.64,11.17 9.34,12 10.27,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.66,11.11c-0.13,0.26 -0.18,0.57 -0.1,0.88c0.16,0.69 0.76,1.03 1.53,1c0,0 1.49,0 1.95,0c0.83,0 1.51,-0.58 1.51,-1.29c0,-0.14 -0.03,-0.27 -0.07,-0.4c-0.01,-0.03 -0.01,-0.05 0.01,-0.08c0.09,-0.16 0.14,-0.34 0.14,-0.53c0,-0.31 -0.14,-0.6 -0.36,-0.82c-0.03,-0.03 -0.03,-0.06 -0.02,-0.1c0.07,-0.2 0.07,-0.43 0.01,-0.65C6.1,8.69 5.71,8.4 5.27,8.38c-0.03,0 -0.05,-0.01 -0.07,-0.03C5.03,8.14 4.72,8 4.37,8C4.07,8 3.8,8.1 3.62,8.26C3.59,8.29 3.56,8.29 3.53,8.28c-0.14,-0.06 -0.3,-0.09 -0.46,-0.09c-0.65,0 -1.18,0.49 -1.24,1.12c0,0.02 -0.01,0.04 -0.03,0.06c-0.29,0.26 -0.46,0.65 -0.41,1.05c0.03,0.22 0.12,0.43 0.25,0.6C1.67,11.04 1.67,11.08 1.66,11.11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.24,13.65c-1.17,-0.52 -2.61,-0.9 -4.24,-0.9c-1.63,0 -3.07,0.39 -4.24,0.9C6.68,14.13 6,15.21 6,16.39L6,17c0,0.55 0.45,1 1,1h10c0.55,0 1,-0.45 1,-1l0,-0.61C18,15.21 17.32,14.13 16.24,13.65z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.22,14.58C0.48,14.9 0,15.62 0,16.43L0,17c0,0.55 0.45,1 1,1l3.5,0v-1.61c0,-0.83 0.23,-1.61 0.63,-2.29C4.76,14.04 4.39,14 4,14C3.01,14 2.07,14.21 1.22,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.78,14.58C21.93,14.21 20.99,14 20,14c-0.39,0 -0.76,0.04 -1.13,0.1c0.4,0.68 0.63,1.46 0.63,2.29V18l3.5,0c0.55,0 1,-0.45 1,-1l0,-0.57C24,15.62 23.52,14.9 22.78,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22,11v-0.5c0,-1.1 -0.9,-2 -2,-2h-2c-0.42,0 -0.65,0.48 -0.39,0.81l0.7,0.63C18.12,10.25 18,10.61 18,11c0,1.1 0.9,2 2,2S22,12.1 22,11z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/groups_3.xml b/compose/material/material/icons/generator/raw-icons/rounded/groups_3.xml
new file mode 100644
index 0000000..409fc59
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/groups_3.xml
@@ -0,0 +1,25 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.24,13.65c-1.17,-0.52 -2.61,-0.9 -4.24,-0.9c-1.63,0 -3.07,0.39 -4.24,0.9C6.68,14.13 6,15.21 6,16.39L6,17c0,0.55 0.45,1 1,1h10c0.55,0 1,-0.45 1,-1l0,-0.61C18,15.21 17.32,14.13 16.24,13.65z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.22,14.58C0.48,14.9 0,15.62 0,16.43L0,17c0,0.55 0.45,1 1,1l3.5,0v-1.61c0,-0.83 0.23,-1.61 0.63,-2.29C4.76,14.04 4.39,14 4,14C3.01,14 2.07,14.21 1.22,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.78,14.58C21.93,14.21 20.99,14 20,14c-0.39,0 -0.76,0.04 -1.13,0.1c0.4,0.68 0.63,1.46 0.63,2.29V18l3.5,0c0.55,0 1,-0.45 1,-1l0,-0.57C24,15.62 23.52,14.9 22.78,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,12c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3S9,7.34 9,9C9,10.66 10.34,12 12,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.497,11l2.503,-2.503l2.503,2.503l-2.503,2.503z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,9l-2.5,4l5,0z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/home_work.xml b/compose/material/material/icons/generator/raw-icons/rounded/home_work.xml
index 99793b8..438a3a0 100644
--- a/compose/material/material/icons/generator/raw-icons/rounded/home_work.xml
+++ b/compose/material/material/icons/generator/raw-icons/rounded/home_work.xml
@@ -6,8 +6,8 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M20,3h-8c-0.55,0 -1,0.45 -1,1v1.61c0,0 0,0 0.01,0.01l5,4.5C16.64,10.68 17,11.5 17,12.35V13h2v2h-2v2h2v2h-2v2h3c0.55,0 1,-0.45 1,-1V4C21,3.45 20.55,3 20,3zM15,7h-2V5h2V7zM19,11h-2V9h2V11zM19,7h-2V5h2V7z"/>
+      android:pathData="M14.16,10.4l-5,-3.57c-0.7,-0.5 -1.63,-0.5 -2.32,0l-5,3.57C1.31,10.78 1,11.38 1,12.03V20c0,0.55 0.45,1 1,1h4v-6h4v6h4c0.55,0 1,-0.45 1,-1v-7.97C15,11.38 14.69,10.78 14.16,10.4z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M15,20v-7.65c0,-0.28 -0.12,-0.55 -0.33,-0.74l-5,-4.5C9.48,6.93 9.24,6.85 9,6.85c-0.24,0 -0.48,0.09 -0.67,0.26l-5,4.5C3.12,11.79 3,12.06 3,12.35V20c0,0.55 0.45,1 1,1h2c0.55,0 1,-0.45 1,-1v-4h4v4c0,0.55 0.45,1 1,1h2C14.55,21 15,20.55 15,20z"/>
+      android:pathData="M21.03,3h-9.06C10.88,3 10,3.88 10,4.97l0.09,0.09c0.08,0.05 0.16,0.09 0.24,0.14l5,3.57c0.76,0.54 1.3,1.34 1.54,2.23H19v2h-2v2h2v2h-2v3v1h4.03c1.09,0 1.97,-0.88 1.97,-1.97V4.97C23,3.88 22.12,3 21.03,3zM19,9h-2V7h2V9z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/local_fire_department.xml b/compose/material/material/icons/generator/raw-icons/rounded/local_fire_department.xml
index eca543c..313d65f 100644
--- a/compose/material/material/icons/generator/raw-icons/rounded/local_fire_department.xml
+++ b/compose/material/material/icons/generator/raw-icons/rounded/local_fire_department.xml
@@ -6,8 +6,8 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19.48,12.35c-1.57,-4.08 -7.16,-4.3 -5.81,-10.23c0.1,-0.44 -0.37,-0.78 -0.75,-0.55C9.29,3.71 6.68,8 8.87,13.62c0.18,0.46 -0.36,0.89 -0.75,0.59c-1.81,-1.37 -2,-3.34 -1.84,-4.75c0.06,-0.52 -0.62,-0.77 -0.91,-0.34C4.69,10.16 4,11.84 4,14.37c0.38,5.6 5.11,7.32 6.81,7.54c2.43,0.31 5.06,-0.14 6.95,-1.87C19.84,18.11 20.6,15.03 19.48,12.35zM10.2,17.38c1.44,-0.35 2.18,-1.39 2.38,-2.31c0.33,-1.43 -0.96,-2.83 -0.09,-5.09c0.33,1.87 3.27,3.04 3.27,5.08C15.84,17.59 13.1,19.76 10.2,17.38z"/>
+      android:pathData="M12,12.9l-2.03,2c-0.46,0.46 -0.82,1.03 -0.93,1.67C8.74,18.41 10.18,20 12,20s3.26,-1.59 2.96,-3.42c-0.11,-0.64 -0.46,-1.22 -0.93,-1.67L12,12.9z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19.48,12.35c-1.57,-4.08 -7.16,-4.3 -5.81,-10.23c0.1,-0.44 -0.37,-0.78 -0.75,-0.55C9.29,3.71 6.68,8 8.87,13.62c0.18,0.46 -0.36,0.89 -0.75,0.59c-1.81,-1.37 -2,-3.34 -1.84,-4.75c0.06,-0.52 -0.62,-0.77 -0.91,-0.34C4.69,10.16 4,11.84 4,14.37c0.38,5.6 5.11,7.32 6.81,7.54c2.43,0.31 5.06,-0.14 6.95,-1.87C19.84,18.11 20.6,15.03 19.48,12.35zM10.2,17.38c1.44,-0.35 2.18,-1.39 2.38,-2.31c0.33,-1.43 -0.96,-2.83 -0.09,-5.09c0.33,1.87 3.27,3.04 3.27,5.08C15.84,17.59 13.1,19.76 10.2,17.38z"/>
+      android:pathData="M15.56,6.55L15.56,6.55C14.38,8.02 12,7.19 12,5.3V3.77c0,-0.8 -0.89,-1.28 -1.55,-0.84C8.12,4.49 4,7.97 4,13c0,2.92 1.56,5.47 3.89,6.86c-0.71,-1.02 -1.06,-2.31 -0.81,-3.68c0.19,-1.04 0.75,-1.98 1.51,-2.72l2.71,-2.67c0.39,-0.38 1.01,-0.38 1.4,0l2.73,2.69c0.74,0.73 1.3,1.65 1.48,2.68c0.25,1.36 -0.07,2.64 -0.77,3.66c1.89,-1.15 3.29,-3.06 3.71,-5.3c0.61,-3.27 -0.81,-6.37 -3.22,-8.1C16.3,6.17 15.83,6.22 15.56,6.55z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/macro_off.xml b/compose/material/material/icons/generator/raw-icons/rounded/macro_off.xml
new file mode 100644
index 0000000..1a46e79
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/macro_off.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4.2,13.08c-0.64,-0.09 -1.21,0.48 -1.12,1.12C3.67,18.6 7.44,22 12,22C12,17.44 8.6,13.67 4.2,13.08z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,5.5c1.38,0 2.5,1.12 2.5,2.5c0,0.99 -0.58,1.84 -1.42,2.25l2.48,2.48c0.11,0.02 0.23,0.03 0.35,0.03c1.38,0 2.5,-1.12 2.5,-2.5c0,-1 -0.59,-1.85 -1.43,-2.25c0.84,-0.4 1.43,-1.25 1.43,-2.25c0,-1.38 -1.12,-2.5 -2.5,-2.5c-0.53,0 -1.01,0.16 -1.42,0.44L14.5,3.5C14.5,2.12 13.38,1 12,1S9.5,2.12 9.5,3.5l0.02,0.19C9.12,3.41 8.63,3.25 8.1,3.25c-0.57,0 -1.09,0.2 -1.51,0.52l3.16,3.16C10.16,6.08 11.01,5.5 12,5.5z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.98,17.15c0.47,-0.91 0.8,-1.9 0.94,-2.95c0.09,-0.64 -0.48,-1.21 -1.12,-1.12c-1.05,0.14 -2.05,0.47 -2.95,0.94L19.98,17.15z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2.1,3.51L2.1,3.51c-0.39,0.39 -0.39,1.02 0,1.41l3.93,3.93c-0.35,0.52 -0.53,1.17 -0.38,1.89c0.22,1.13 1.26,1.98 2.41,2c0.54,0.01 1.02,-0.15 1.44,-0.43l0.02,0.02L9.5,12.5c0,1.38 1.12,2.5 2.5,2.5c0.05,0 0.1,-0.01 0.16,-0.02l1.64,1.64C12.67,18.12 12,19.98 12,22c2.02,0 3.88,-0.67 5.38,-1.79l1.69,1.69c0.39,0.39 1.02,0.39 1.41,0l0,0c0.39,-0.39 0.39,-1.02 0,-1.41L3.51,3.51C3.12,3.12 2.49,3.12 2.1,3.51z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/man_2.xml b/compose/material/material/icons/generator/raw-icons/rounded/man_2.xml
new file mode 100644
index 0000000..c67d12c
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/man_2.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,7h-4C8.9,7 8,7.9 8,9v5c0,0.55 0.45,1 1,1h1.5v5.5c0,0.83 0.67,1.5 1.5,1.5h0c0.83,0 1.5,-0.67 1.5,-1.5V15H15c0.55,0 1,-0.45 1,-1V9C16,7.9 15.1,7 14,7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/man_3.xml b/compose/material/material/icons/generator/raw-icons/rounded/man_3.xml
new file mode 100644
index 0000000..10be7186
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/man_3.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,7h-4C8.9,7 8,7.9 8,9v5c0,0.55 0.45,1 1,1h1v6c0,0.55 0.45,1 1,1h2c0.55,0 1,-0.45 1,-1v-6h1c0.55,0 1,-0.45 1,-1V9C16,7.9 15.1,7 14,7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11.65,5.9L10.1,4.35c-0.2,-0.2 -0.2,-0.51 0,-0.71l1.54,-1.54c0.2,-0.2 0.51,-0.2 0.71,0l1.54,1.54c0.2,0.2 0.2,0.51 0,0.71L12.35,5.9C12.16,6.09 11.84,6.09 11.65,5.9z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/man_4.xml b/compose/material/material/icons/generator/raw-icons/rounded/man_4.xml
new file mode 100644
index 0000000..7289be0
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/man_4.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.75,7h-3.5C9.04,7 8.11,8.07 8.27,9.26L9.82,20.7c0.1,0.74 0.74,1.3 1.49,1.3h1.38c0.75,0 1.39,-0.55 1.49,-1.3l1.56,-11.44C15.89,8.07 14.96,7 13.75,7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/noise_aware.xml b/compose/material/material/icons/generator/raw-icons/rounded/noise_aware.xml
index 3f575ff..aed94cb 100644
--- a/compose/material/material/icons/generator/raw-icons/rounded/noise_aware.xml
+++ b/compose/material/material/icons/generator/raw-icons/rounded/noise_aware.xml
@@ -6,29 +6,50 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3.23,13L3.23,13c-0.64,0 -1.13,0.59 -0.98,1.21c0.25,1.12 0.7,2.18 1.3,3.12c0.34,0.54 1.1,0.61 1.55,0.16l0,0c0.32,-0.32 0.4,-0.83 0.15,-1.21c-0.49,-0.77 -0.85,-1.62 -1.05,-2.54C4.1,13.3 3.68,13 3.23,13z"/>
+      android:pathData="M15.62,16.45c0.36,-0.65 -0.15,-1.45 -0.9,-1.45c-0.34,0 -0.68,0.16 -0.84,0.47C13.72,15.78 13.38,16 13,16c-0.43,0 -0.81,-0.27 -0.95,-0.68c-0.15,-0.44 -0.4,-1.08 -0.93,-1.61l-1.36,-1.36C9.28,11.87 9,11.19 9,10.5C9,9.12 10.12,8 11.5,8c0.98,0 1.84,0.57 2.24,1.4c0.18,0.36 0.52,0.6 0.91,0.6c0.75,0 1.22,-0.79 0.89,-1.46C14.82,7.04 13.28,6 11.5,6c-2.89,0 -5.15,2.74 -4.33,5.76c0.22,0.8 0.68,1.51 1.27,2.1l1.27,1.27c0.15,0.16 0.28,0.38 0.4,0.71c0.41,1.13 1.38,2.04 2.58,2.16C13.95,18.11 15.07,17.46 15.62,16.45z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M5.09,6.51L5.09,6.51C4.64,6.06 3.88,6.13 3.54,6.67c-0.6,0.95 -1.04,2 -1.3,3.12C2.11,10.41 2.59,11 3.23,11h0c0.45,0 0.87,-0.3 0.97,-0.74c0.2,-0.92 0.56,-1.77 1.05,-2.54C5.49,7.34 5.42,6.83 5.09,6.51z"/>
+      android:pathData="M13.5,12.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M11,3.23L11,3.23c0,-0.64 -0.59,-1.13 -1.21,-0.98c-1.12,0.25 -2.18,0.7 -3.12,1.3c-0.54,0.34 -0.61,1.1 -0.16,1.55l0,0c0.32,0.32 0.83,0.4 1.21,0.15C8.49,4.76 9.34,4.4 10.26,4.2C10.7,4.1 11,3.68 11,3.23z"/>
+      android:pathData="M12,3m-1,0a1,1 0,1 1,2 0a1,1 0,1 1,-2 0"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M17.33,3.54c-0.95,-0.6 -2,-1.04 -3.12,-1.3C13.59,2.11 13,2.59 13,3.23v0c0,0.45 0.3,0.87 0.74,0.97c0.92,0.2 1.77,0.56 2.54,1.05c0.38,0.24 0.89,0.17 1.21,-0.15l0,0C17.94,4.64 17.87,3.88 17.33,3.54z"/>
+      android:pathData="M12,21m-1,0a1,1 0,1 1,2 0a1,1 0,1 1,-2 0"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M18.91,17.49L18.91,17.49c0.45,0.45 1.21,0.38 1.55,-0.16c0.6,-0.95 1.04,-2 1.3,-3.12c0.14,-0.62 -0.35,-1.21 -0.98,-1.21h0c-0.45,0 -0.87,0.3 -0.97,0.74c-0.2,0.92 -0.56,1.77 -1.05,2.54C18.51,16.66 18.58,17.17 18.91,17.49z"/>
+      android:pathData="M5.75,7.01c0.34,-0.43 0.27,-1.06 -0.16,-1.41C5.16,5.26 4.53,5.33 4.18,5.77C3.84,6.2 3.91,6.83 4.34,7.17C4.77,7.51 5.4,7.44 5.75,7.01z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M20.77,11L20.77,11c0.64,0 1.13,-0.59 0.98,-1.21c-0.25,-1.12 -0.7,-2.18 -1.3,-3.12c-0.34,-0.54 -1.1,-0.61 -1.55,-0.16l0,0c-0.32,0.32 -0.4,0.83 -0.15,1.21c0.49,0.77 0.85,1.62 1.05,2.54C19.9,10.7 20.32,11 20.77,11z"/>
+      android:pathData="M18.25,16.99c-0.34,0.43 -0.27,1.06 0.16,1.41s1.06,0.27 1.41,-0.16c0.34,-0.43 0.27,-1.06 -0.16,-1.41C19.23,16.49 18.6,16.56 18.25,16.99z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M13,20.77L13,20.77c0,0.64 0.59,1.13 1.21,0.98c1.12,-0.25 2.18,-0.7 3.12,-1.3c0.54,-0.34 0.61,-1.1 0.16,-1.55l0,0c-0.32,-0.32 -0.83,-0.4 -1.21,-0.15c-0.77,0.49 -1.62,0.85 -2.54,1.05C13.3,19.9 13,20.32 13,20.77z"/>
+      android:pathData="M4.2,13.78c-0.12,-0.54 -0.66,-0.88 -1.2,-0.75s-0.88,0.66 -0.75,1.2c0.12,0.54 0.66,0.88 1.2,0.75C3.99,14.86 4.32,14.32 4.2,13.78z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M6.67,20.46c0.95,0.6 2,1.04 3.12,1.3c0.62,0.14 1.21,-0.35 1.21,-0.98v0c0,-0.45 -0.3,-0.87 -0.74,-0.97c-0.92,-0.2 -1.77,-0.56 -2.54,-1.05c-0.38,-0.24 -0.89,-0.17 -1.21,0.15l0,0C6.06,19.36 6.13,20.12 6.67,20.46z"/>
+      android:pathData="M19.8,10.22c0.12,0.54 0.66,0.88 1.2,0.75s0.88,-0.66 0.75,-1.2s-0.66,-0.88 -1.2,-0.75C20.01,9.14 19.68,9.68 19.8,10.22z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,12m-5,0a5,5 0,1 1,10 0a5,5 0,1 1,-10 0"/>
+      android:pathData="M8.53,19.21c-0.5,-0.24 -1.1,-0.03 -1.33,0.47c-0.24,0.5 -0.03,1.1 0.47,1.33c0.5,0.24 1.1,0.03 1.33,-0.47C9.24,20.05 9.03,19.45 8.53,19.21z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15.47,4.79c0.5,0.24 1.1,0.03 1.33,-0.47c0.24,-0.5 0.03,-1.1 -0.47,-1.33c-0.5,-0.24 -1.1,-0.03 -1.33,0.47C14.76,3.95 14.97,4.55 15.47,4.79z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15.47,19.21c-0.5,0.24 -0.71,0.84 -0.47,1.33s0.84,0.71 1.33,0.47c0.5,-0.24 0.71,-0.84 0.47,-1.33C16.57,19.18 15.97,18.97 15.47,19.21z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8.53,4.79C9.03,4.55 9.23,3.96 9,3.46c-0.24,-0.5 -0.84,-0.71 -1.33,-0.47S6.95,3.83 7.19,4.33S8.03,5.03 8.53,4.79z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21,13.03c-0.54,-0.12 -1.07,0.21 -1.2,0.75c-0.12,0.54 0.21,1.07 0.75,1.2c0.54,0.12 1.07,-0.21 1.2,-0.75C21.87,13.69 21.54,13.15 21,13.03z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3,10.97c0.54,0.12 1.07,-0.21 1.2,-0.75c0.12,-0.54 -0.21,-1.07 -0.75,-1.2s-1.07,0.21 -1.2,0.75C2.13,10.31 2.46,10.85 3,10.97z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.66,7.17c0.43,-0.34 0.5,-0.97 0.16,-1.41s-0.97,-0.5 -1.41,-0.16c-0.43,0.34 -0.5,0.97 -0.16,1.41C18.6,7.44 19.23,7.51 19.66,7.17z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4.34,16.83c-0.43,0.34 -0.5,0.97 -0.16,1.41c0.34,0.43 0.97,0.5 1.41,0.16c0.43,-0.34 0.5,-0.97 0.16,-1.41S4.77,16.49 4.34,16.83z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/noise_control_off.xml b/compose/material/material/icons/generator/raw-icons/rounded/noise_control_off.xml
index 4e65652..c808770 100644
--- a/compose/material/material/icons/generator/raw-icons/rounded/noise_control_off.xml
+++ b/compose/material/material/icons/generator/raw-icons/rounded/noise_control_off.xml
@@ -6,5 +6,20 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,12m-5,0a5,5 0,1 1,10 0a5,5 0,1 1,-10 0"/>
+      android:pathData="M12,4c1.2,0 2.33,0.26 3.35,0.74c0.36,0.17 0.79,0.12 1.07,-0.17l0.06,-0.06c0.47,-0.47 0.35,-1.29 -0.25,-1.57C14.95,2.34 13.51,2 12,2S9.05,2.34 7.76,2.94c-0.6,0.28 -0.72,1.1 -0.25,1.57l0.06,0.06c0.28,0.28 0.71,0.34 1.07,0.17C9.67,4.26 10.8,4 12,4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,12c0,1.2 -0.26,2.33 -0.74,3.35c-0.17,0.36 -0.12,0.79 0.17,1.07l0.06,0.06c0.47,0.47 1.29,0.35 1.57,-0.25C21.66,14.95 22,13.51 22,12s-0.34,-2.95 -0.94,-4.24c-0.28,-0.6 -1.1,-0.72 -1.57,-0.25l-0.06,0.06c-0.28,0.28 -0.34,0.71 -0.17,1.07C19.74,9.67 20,10.8 20,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,20c-1.2,0 -2.33,-0.26 -3.35,-0.74c-0.36,-0.17 -0.79,-0.12 -1.07,0.17l-0.06,0.06c-0.47,0.47 -0.35,1.29 0.25,1.57C9.05,21.66 10.49,22 12,22s2.95,-0.34 4.24,-0.94c0.6,-0.28 0.72,-1.1 0.25,-1.57l-0.06,-0.06c-0.28,-0.28 -0.71,-0.34 -1.07,-0.17C14.33,19.74 13.2,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,12c0,-1.2 0.26,-2.33 0.74,-3.35c0.17,-0.36 0.12,-0.79 -0.17,-1.07L4.51,7.51C4.04,7.04 3.23,7.16 2.94,7.76C2.34,9.05 2,10.49 2,12s0.34,2.95 0.94,4.24c0.28,0.6 1.1,0.72 1.57,0.25l0.06,-0.06c0.28,-0.28 0.34,-0.71 0.17,-1.07C4.26,14.33 4,13.2 4,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11.5,6c-2.89,0 -5.15,2.74 -4.33,5.76c0.22,0.8 0.68,1.51 1.27,2.1l1.27,1.27c0.15,0.16 0.28,0.38 0.4,0.71c0.41,1.13 1.38,2.04 2.58,2.16c1.25,0.12 2.37,-0.53 2.93,-1.53c0.36,-0.65 -0.15,-1.45 -0.9,-1.45h0c-0.34,0 -0.68,0.16 -0.84,0.47C13.72,15.78 13.38,16 13,16c-0.43,0 -0.81,-0.27 -0.95,-0.68c-0.15,-0.44 -0.4,-1.08 -0.93,-1.61l-1.36,-1.36C9.28,11.87 9,11.19 9,10.5C9,9.12 10.12,8 11.5,8c0.98,0 1.83,0.57 2.24,1.4c0.18,0.36 0.52,0.6 0.91,0.6h0c0.75,0 1.22,-0.79 0.89,-1.46C14.82,7.04 13.28,6 11.5,6z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.5,12.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/person_2.xml b/compose/material/material/icons/generator/raw-icons/rounded/person_2.xml
new file mode 100644
index 0000000..0bee87c
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/person_2.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18.39,14.56C16.71,13.7 14.53,13 12,13c-2.53,0 -4.71,0.7 -6.39,1.56C4.61,15.07 4,16.1 4,17.22L4,18c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2l0,-0.78C20,16.1 19.39,15.07 18.39,14.56z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9.78,12h4.44c1.21,0 2.14,-1.06 1.98,-2.26l-0.32,-2.45C15.57,5.39 13.92,4 12,4S8.43,5.39 8.12,7.29L7.8,9.74C7.64,10.94 8.57,12 9.78,12z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/person_3.xml b/compose/material/material/icons/generator/raw-icons/rounded/person_3.xml
new file mode 100644
index 0000000..1028367
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/person_3.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18.39,14.56C16.71,13.7 14.53,13 12,13c-2.53,0 -4.71,0.7 -6.39,1.56C4.61,15.07 4,16.1 4,17.22L4,18c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2l0,-0.78C20,16.1 19.39,15.07 18.39,14.56z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,12c0.17,0 3.83,0 4,0c1.66,0 3,-1.34 3,-3c0,-0.73 -0.27,-1.4 -0.71,-1.92C16.42,6.75 16.5,6.38 16.5,6c0,-1.25 -0.77,-2.32 -1.86,-2.77C14,2.48 13.06,2 12,2s-2,0.48 -2.64,1.23C8.27,3.68 7.5,4.75 7.5,6c0,0.38 0.08,0.75 0.21,1.08C7.27,7.6 7,8.27 7,9C7,10.66 8.34,12 10,12z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/person_4.xml b/compose/material/material/icons/generator/raw-icons/rounded/person_4.xml
new file mode 100644
index 0000000..9baac8d
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/person_4.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18.39,14.56C16.71,13.7 14.53,13 12,13c-2.53,0 -4.71,0.7 -6.39,1.56C4.61,15.07 4,16.1 4,17.22L4,18c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2l0,-0.78C20,16.1 19.39,15.07 18.39,14.56z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,12c2.21,0 4,-1.79 4,-4c0,-1.37 0,-3.5 0,-3.5C16,3.67 15.33,3 14.5,3c-0.52,0 -0.98,0.27 -1.25,0.67C12.98,3.27 12.52,3 12,3s-0.98,0.27 -1.25,0.67C10.48,3.27 10.02,3 9.5,3C8.67,3 8,3.67 8,4.5c0,0 0,2.12 0,3.5C8,10.21 9.79,12 12,12z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/psychology_alt.xml b/compose/material/material/icons/generator/raw-icons/rounded/psychology_alt.xml
new file mode 100644
index 0000000..543b04b
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/psychology_alt.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.94,9.06C19.5,5.73 16.57,3 13,3C9.47,3 6.57,5.61 6.08,9l-1.93,3.48C3.74,13.14 4.22,14 5,14h1l0,2c0,1.1 0.9,2 2,2h1v2c0,0.55 0.45,1 1,1h5c0.55,0 1,-0.45 1,-1l0,-3.68C18.62,15.07 20.35,12.24 19.94,9.06zM12.5,14c-0.41,0 -0.74,-0.33 -0.74,-0.74c0,-0.41 0.33,-0.73 0.74,-0.73c0.41,0 0.73,0.32 0.73,0.73C13.23,13.67 12.92,14 12.5,14zM14.26,9.68c-0.44,0.65 -0.86,0.85 -1.09,1.27c-0.09,0.17 -0.13,0.28 -0.13,0.82h-1.06c0,-0.29 -0.04,-0.75 0.18,-1.16c0.28,-0.51 0.83,-0.81 1.14,-1.26c0.33,-0.47 0.15,-1.36 -0.8,-1.36c-0.62,0 -0.92,0.47 -1.05,0.86l-0.96,-0.4C10.76,7.67 11.46,7 12.5,7c0.86,0 1.45,0.39 1.75,0.88C14.51,8.31 14.66,9.1 14.26,9.68z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/repartition.xml b/compose/material/material/icons/generator/raw-icons/rounded/repartition.xml
new file mode 100644
index 0000000..bfcb42f
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/repartition.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4.5,21h15c0.83,0 1.5,-0.67 1.5,-1.5v-3c0,-0.83 -0.67,-1.5 -1.5,-1.5h-15C3.67,15 3,15.67 3,16.5v3C3,20.33 3.67,21 4.5,21zM10.33,19v-2h3.33v2H10.33zM19,19h-3.33v-2H19V19zM5,17h3.33v2H5V17z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6.71,9.29L6.71,9.29c0.39,-0.39 0.39,-1.02 0,-1.42L5.83,7l11.06,0c1,0 1.92,0.68 2.08,1.66C19.18,9.91 18.21,11 17,11H4c-0.55,0 -1,0.45 -1,1v0c0,0.55 0.45,1 1,1l12.82,0c2.09,0 3.96,-1.52 4.16,-3.6C21.21,7.02 19.34,5 17,5H5.83l0.88,-0.88c0.39,-0.39 0.39,-1.02 0,-1.42l0,0c-0.39,-0.39 -1.02,-0.39 -1.41,0L2.71,5.29c-0.39,0.39 -0.39,1.02 0,1.41l2.59,2.59C5.68,9.68 6.32,9.68 6.71,9.29z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/shape_line.xml b/compose/material/material/icons/generator/raw-icons/rounded/shape_line.xml
new file mode 100644
index 0000000..1007dca
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/shape_line.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,11c2.76,0 5,-2.24 5,-5S8.76,1 6,1S1,3.24 1,6S3.24,11 6,11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21,14h-5c-1.1,0 -2,0.9 -2,2v5c0,1.1 0.9,2 2,2h5c1.1,0 2,-0.9 2,-2v-5C23,14.9 22.1,14 21,14z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.71,7.7C18.11,7.89 18.54,8 19,8c1.65,0 3,-1.35 3,-3s-1.35,-3 -3,-3s-3,1.35 -3,3c0,0.46 0.11,0.89 0.3,1.29L6.29,16.3C5.89,16.11 5.46,16 5,16c-1.65,0 -3,1.35 -3,3s1.35,3 3,3s3,-1.35 3,-3c0,-0.46 -0.11,-0.89 -0.3,-1.29L17.71,7.7z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/stacked_bar_chart.xml b/compose/material/material/icons/generator/raw-icons/rounded/stacked_bar_chart.xml
index 7954c8a..4735c4d 100644
--- a/compose/material/material/icons/generator/raw-icons/rounded/stacked_bar_chart.xml
+++ b/compose/material/material/icons/generator/raw-icons/rounded/stacked_bar_chart.xml
@@ -6,5 +6,20 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M6,10h3v8.5C9,19.33 8.33,20 7.5,20h0C6.67,20 6,19.33 6,18.5V10zM7.5,5L7.5,5C8.33,5 9,5.67 9,6.5V9H6V6.5C6,5.67 6.67,5 7.5,5zM16,16h3v2.5c0,0.83 -0.67,1.5 -1.5,1.5h0c-0.83,0 -1.5,-0.67 -1.5,-1.5V16zM11,13h3v5.5c0,0.83 -0.67,1.5 -1.5,1.5h0c-0.83,0 -1.5,-0.67 -1.5,-1.5V13zM12.5,9L12.5,9c0.83,0 1.5,0.67 1.5,1.5V12h-3v-1.5C11,9.67 11.67,9 12.5,9zM19,15h-3v-0.5c0,-0.83 0.67,-1.5 1.5,-1.5h0c0.83,0 1.5,0.67 1.5,1.5V15z"/>
+      android:pathData="M6,20L6,20c1.1,0 2,-0.9 2,-2V9H4v9C4,19.1 4.9,20 6,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,8h4V6c0,-1.1 -0.9,-2 -2,-2h0C4.9,4 4,4.9 4,6V8z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,11h4V9c0,-1.1 -0.9,-2 -2,-2h0c-1.1,0 -2,0.9 -2,2V11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,12v2h4v-2c0,-1.1 -0.9,-2 -2,-2h0C16.9,10 16,10.9 16,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18,20L18,20c1.1,0 2,-0.9 2,-2v-3h-4v3C16,19.1 16.9,20 18,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,20L12,20c1.1,0 2,-0.9 2,-2v-6h-4v6C10,19.1 10.9,20 12,20z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/transcribe.xml b/compose/material/material/icons/generator/raw-icons/rounded/transcribe.xml
new file mode 100644
index 0000000..786839e
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/transcribe.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.54,10.28c-0.34,-0.82 -0.34,-1.72 0,-2.54c0.19,-0.45 0.1,-0.96 -0.24,-1.3l-0.1,-0.1c-0.56,-0.56 -1.51,-0.44 -1.88,0.26c-0.8,1.48 -0.79,3.24 0.03,4.79c0.37,0.69 1.31,0.83 1.86,0.27l0.1,-0.1C22.65,11.23 22.73,10.72 22.54,10.28zM18.82,15.11L18.82,15.11c0.4,-0.4 0.46,-1.02 0.13,-1.48c-1.97,-2.73 -1.96,-6.39 0.01,-9.23c0.32,-0.47 0.26,-1.1 -0.14,-1.5l0,0c-0.5,-0.5 -1.34,-0.46 -1.78,0.1c-2.73,3.54 -2.73,8.36 0.02,12C17.49,15.56 18.33,15.61 18.82,15.11zM9,13c2.21,0 4,-1.79 4,-4c0,-2.21 -1.79,-4 -4,-4S5,6.79 5,9C5,11.21 6.79,13 9,13zM15.39,15.56C13.71,14.7 11.53,14 9,14c-2.53,0 -4.71,0.7 -6.39,1.56C1.61,16.07 1,17.1 1,18.22L1,20c0,0.55 0.45,1 1,1h14c0.55,0 1,-0.45 1,-1l0,-1.78C17,17.1 16.39,16.07 15.39,15.56z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/troubleshoot.xml b/compose/material/material/icons/generator/raw-icons/rounded/troubleshoot.xml
new file mode 100644
index 0000000..a1fa8f3
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/troubleshoot.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21.29,19.88l-3.98,-3.98c1.3,-1.67 1.96,-3.85 1.58,-6.2c-0.54,-3.41 -3.33,-6.14 -6.75,-6.62C7.57,2.44 3.61,5.69 3.07,10h2.02c0.53,-3.13 3.48,-5.44 6.85,-4.93c2.61,0.4 4.7,2.57 5.02,5.2C17.39,13.9 14.55,17 11,17c-2.42,0 -4.5,-1.44 -5.45,-3.5H3.4C4.45,16.69 7.46,19 11,19c1.85,0 3.55,-0.63 4.9,-1.69l3.98,3.98c0.39,0.39 1.02,0.39 1.41,0l0,0C21.68,20.9 21.68,20.27 21.29,19.88z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8.43,9.69l1.03,4.47C9.57,14.65 10.01,15 10.51,15h0c0.46,0 0.87,-0.3 1.02,-0.74l1.01,-3.04l0.69,1.66c0.16,0.37 0.52,0.62 0.92,0.62h0.58c0.41,0 0.75,-0.34 0.75,-0.75v0c0,-0.41 -0.34,-0.75 -0.75,-0.75H14.5l-0.97,-2.34C13.36,9.26 12.97,9 12.53,9h-0.05c-0.46,0 -0.87,0.3 -1.02,0.74l-0.88,2.63L9.54,7.83C9.43,7.35 8.99,7 8.49,7h0C8.02,7 7.6,7.31 7.46,7.76L6.45,11h-4.7C1.34,11 1,11.34 1,11.75v0c0,0.41 0.34,0.75 0.75,0.75h5.07c0.44,0 0.82,-0.28 0.95,-0.7L8.43,9.69z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/type_specimen.xml b/compose/material/material/icons/generator/raw-icons/rounded/type_specimen.xml
new file mode 100644
index 0000000..114d7df
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/type_specimen.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3,6L3,6C2.45,6 2,6.45 2,7v13c0,1.1 0.9,2 2,2h13c0.55,0 1,-0.45 1,-1v0c0,-0.55 -0.45,-1 -1,-1H4V7C4,6.45 3.55,6 3,6z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,2H8C6.9,2 6,2.9 6,4v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2V4C22,2.9 21.1,2 20,2zM16.46,14.01l-0.63,-1.82h-3.63l-0.65,1.82c-0.1,0.29 -0.38,0.48 -0.68,0.48h0c-0.51,0 -0.86,-0.51 -0.68,-0.98l2.73,-7.27C13.08,5.8 13.52,5.5 14,5.5h0c0.48,0 0.92,0.3 1.09,0.75l2.73,7.27c0.18,0.47 -0.17,0.98 -0.68,0.98h0C16.83,14.5 16.56,14.31 16.46,14.01z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.96,7.17l-1.31,3.72l2.69,0l-1.3,-3.72z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/unfold_less_double.xml b/compose/material/material/icons/generator/raw-icons/rounded/unfold_less_double.xml
new file mode 100644
index 0000000..6ffd037
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/unfold_less_double.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14.46,5.7l-2.47,2.46L9.53,5.7c-0.39,-0.39 -1.02,-0.39 -1.41,0s-0.39,1.02 0,1.41l3.17,3.18c0.39,0.39 1.02,0.39 1.41,0l3.17,-3.18c0.39,-0.39 0.39,-1.02 0,-1.41S14.85,5.31 14.46,5.7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14.46,0.7l-2.47,2.46L9.53,0.7c-0.39,-0.39 -1.02,-0.39 -1.41,0s-0.39,1.02 0,1.41l3.17,3.18c0.39,0.39 1.02,0.39 1.41,0l3.17,-3.18c0.39,-0.39 0.39,-1.02 0,-1.41S14.85,0.31 14.46,0.7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9.54,23.3l2.47,-2.46l2.46,2.46c0.39,0.39 1.02,0.39 1.41,0c0.39,-0.39 0.39,-1.02 0,-1.41l-3.17,-3.18c-0.39,-0.39 -1.02,-0.39 -1.41,0l-3.17,3.18c-0.39,0.39 -0.39,1.02 0,1.41C8.52,23.69 9.15,23.69 9.54,23.3z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9.54,18.29l2.47,-2.45l2.46,2.46c0.39,0.39 1.02,0.39 1.41,0c0.39,-0.39 0.39,-1.02 0,-1.41l-3.17,-3.18c-0.39,-0.39 -1.02,-0.39 -1.41,0l-3.17,3.17c-0.39,0.39 -0.39,1.02 0,1.41S9.15,18.68 9.54,18.29z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/unfold_more_double.xml b/compose/material/material/icons/generator/raw-icons/rounded/unfold_more_double.xml
new file mode 100644
index 0000000..a1b92fe
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/unfold_more_double.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9.53,5.29L12,2.83l2.46,2.46c0.39,0.39 1.02,0.39 1.41,0s0.39,-1.02 0,-1.41L12.7,0.7c-0.39,-0.39 -1.02,-0.39 -1.41,0L8.12,3.88c-0.39,0.39 -0.39,1.02 0,1.41S9.14,5.68 9.53,5.29z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9.53,10.29L12,7.83l2.46,2.46c0.39,0.39 1.02,0.39 1.41,0s0.39,-1.02 0,-1.41L12.7,5.7c-0.39,-0.39 -1.02,-0.39 -1.41,0L8.12,8.88c-0.39,0.39 -0.39,1.02 0,1.41S9.14,10.68 9.53,10.29z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14.47,13.71L12,16.17l-2.46,-2.46c-0.39,-0.39 -1.02,-0.39 -1.41,0c-0.39,0.39 -0.39,1.02 0,1.41l3.17,3.18c0.39,0.39 1.02,0.39 1.41,0l3.17,-3.18c0.39,-0.39 0.39,-1.02 0,-1.41C15.49,13.32 14.86,13.32 14.47,13.71z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14.47,18.72L12,21.17l-2.46,-2.46c-0.39,-0.39 -1.02,-0.39 -1.41,0c-0.39,0.39 -0.39,1.02 0,1.41l3.17,3.18c0.39,0.39 1.02,0.39 1.41,0l3.17,-3.17c0.39,-0.39 0.39,-1.02 0,-1.41S14.86,18.33 14.47,18.72z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/video_chat.xml b/compose/material/material/icons/generator/raw-icons/rounded/video_chat.xml
new file mode 100644
index 0000000..f23743f
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/video_chat.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,2H4C2.9,2 2.01,2.9 2.01,4L2,19.58c0,0.89 1.08,1.34 1.71,0.71L6,18h14c1.1,0 2,-0.9 2,-2V4C22,2.9 21.1,2 20,2zM16.15,12.15L15,11.01V13c0,0.55 -0.45,1 -1,1H8c-0.55,0 -1,-0.45 -1,-1V7c0,-0.55 0.45,-1 1,-1h6c0.55,0 1,0.45 1,1v1.99l1.15,-1.14C16.46,7.53 17,7.76 17,8.2v3.59C17,12.24 16.46,12.47 16.15,12.15z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/view_comfy.xml b/compose/material/material/icons/generator/raw-icons/rounded/view_comfy.xml
index 723e9e4..517a5fa 100644
--- a/compose/material/material/icons/generator/raw-icons/rounded/view_comfy.xml
+++ b/compose/material/material/icons/generator/raw-icons/rounded/view_comfy.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3,9h4L7,5L5,5c-1.1,0 -2,0.9 -2,2v2zM3,14h4v-4L3,10v4zM8,14h4v-4L8,10v4zM13,14h4v-4h-4v4zM8,9h4L12,5L8,5v4zM13,5v4h4L17,5h-4zM18,14h4v-4h-4v4zM5,19h2v-4L3,15v2c0,1.1 0.9,2 2,2zM8,19h4v-4L8,15v4zM13,19h4v-4h-4v4zM18,19h2c1.1,0 2,-0.9 2,-2v-2h-4v4zM18,5v4h4L22,7c0,-1.1 -0.9,-2 -2,-2h-2z"/>
+      android:pathData="M2,5v5c0,0.55 0.45,1 1,1h18c0.55,0 1,-0.45 1,-1V5c0,-0.55 -0.45,-1 -1,-1H3C2.45,4 2,4.45 2,5zM11,20h10c0.55,0 1,-0.45 1,-1v-5c0,-0.55 -0.45,-1 -1,-1H11c-0.55,0 -1,0.45 -1,1v5C10,19.55 10.45,20 11,20zM3,20h4c0.55,0 1,-0.45 1,-1v-5c0,-0.55 -0.45,-1 -1,-1H3c-0.55,0 -1,0.45 -1,1v5C2,19.55 2.45,20 3,20z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/view_compact.xml b/compose/material/material/icons/generator/raw-icons/rounded/view_compact.xml
index bef842e..f2330a0 100644
--- a/compose/material/material/icons/generator/raw-icons/rounded/view_compact.xml
+++ b/compose/material/material/icons/generator/raw-icons/rounded/view_compact.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M5,19h4v-7L3,12v5c0,1.1 0.9,2 2,2zM10,19h10c1.1,0 2,-0.9 2,-2v-5L10,12v7zM3,7v4h19L22,7c0,-1.1 -0.9,-2 -2,-2L5,5c-1.1,0 -2,0.9 -2,2z"/>
+      android:pathData="M4,18h2.5v-2.5H4V18zM4,13.25h2.5v-2.5H4V13.25zM4,8.5h2.5V6H4V8.5zM17.5,6v2.5H20V6H17.5zM13,8.5h2.5V6H13V8.5zM17.5,18H20v-2.5h-2.5V18zM17.5,13.25H20v-2.5h-2.5V13.25zM8.5,18H11v-2.5H8.5V18zM13,18h2.5v-2.5H13V18zM8.5,8.5H11V6H8.5V8.5zM13,13.25h2.5v-2.5H13V13.25zM8.5,13.25H11v-2.5H8.5V13.25z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/web_stories.xml b/compose/material/material/icons/generator/raw-icons/rounded/web_stories.xml
new file mode 100644
index 0000000..a5b16c6
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/web_stories.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,4c1.1,0 2,0.9 2,2v12c0,1.1 -0.9,2 -2,2V4zM2,20c0,1.1 0.9,2 2,2h9c1.1,0 2,-0.9 2,-2V4c0,-1.1 -0.9,-2 -2,-2H4C2.9,2 2,2.9 2,4V20zM21,18c0.83,0 1.5,-0.67 1.5,-1.5v-9C22.5,6.67 21.83,6 21,6V18z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/window.xml b/compose/material/material/icons/generator/raw-icons/rounded/window.xml
index ab563fe..85e9280 100644
--- a/compose/material/material/icons/generator/raw-icons/rounded/window.xml
+++ b/compose/material/material/icons/generator/raw-icons/rounded/window.xml
@@ -6,5 +6,14 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M20,2H4C2.9,2 2,2.9 2,4v16c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V4C22,2.9 21.1,2 20,2zM20,11h-7V4h7V11zM11,4v7H4V4H11zM4,13h7v7H4V13zM13,20v-7h7v7H13z"/>
+      android:pathData="M11,11V3H5C3.9,3 3,3.9 3,5v6H11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,11h8V5c0,-1.1 -0.9,-2 -2,-2h-6V11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,13H3v6c0,1.1 0.9,2 2,2h6V13z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,13v8h6c1.1,0 2,-0.9 2,-2v-6H13z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/rounded/woman_2.xml b/compose/material/material/icons/generator/raw-icons/rounded/woman_2.xml
new file mode 100644
index 0000000..57ab3d7
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/rounded/woman_2.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.94,8.31c-0.38,-0.96 -1.42,-1.52 -2.48,-1.24c-0.66,0.17 -1.18,0.7 -1.43,1.34l-2.48,6.22C7.28,15.29 7.77,16 8.47,16h2.03v5c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-5h2.03c0.71,0 1.19,-0.71 0.93,-1.37L13.94,8.31z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/account_box.xml b/compose/material/material/icons/generator/raw-icons/sharp/account_box.xml
index 6f4aaa8..3107ff0 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/account_box.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/account_box.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3,21h18L21,3L3,3v18zM15,9c0,1.66 -1.34,3 -3,3s-3,-1.34 -3,-3 1.34,-3 3,-3 3,1.34 3,3zM6,17c0,-2 4,-3.1 6,-3.1s6,1.1 6,3.1v1L6,18v-1z"/>
+      android:pathData="M21,3H3v18h18V3zM12,6c1.93,0 3.5,1.57 3.5,3.5c0,1.93 -1.57,3.5 -3.5,3.5s-3.5,-1.57 -3.5,-3.5C8.5,7.57 10.07,6 12,6zM19,19H5v-0.23c0,-0.62 0.28,-1.2 0.76,-1.58C7.47,15.82 9.64,15 12,15s4.53,0.82 6.24,2.19c0.48,0.38 0.76,0.97 0.76,1.58V19z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/account_circle.xml b/compose/material/material/icons/generator/raw-icons/sharp/account_circle.xml
index 89199eb..6476320 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/account_circle.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/account_circle.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,5c1.66,0 3,1.34 3,3s-1.34,3 -3,3 -3,-1.34 -3,-3 1.34,-3 3,-3zM12,19.2c-2.5,0 -4.71,-1.28 -6,-3.22 0.03,-1.99 4,-3.08 6,-3.08 1.99,0 5.97,1.09 6,3.08 -1.29,1.94 -3.5,3.22 -6,3.22z"/>
+      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,6c1.93,0 3.5,1.57 3.5,3.5S13.93,13 12,13s-3.5,-1.57 -3.5,-3.5S10.07,6 12,6zM12,20c-2.03,0 -4.43,-0.82 -6.14,-2.88C7.55,15.8 9.68,15 12,15s4.45,0.8 6.14,2.12C16.43,19.18 14.03,20 12,20z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/add_home.xml b/compose/material/material/icons/generator/raw-icons/sharp/add_home.xml
new file mode 100644
index 0000000..8286982
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/add_home.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18,11c0.7,0 1.37,0.1 2,0.29V9l-8,-6L4,9v12h7.68C11.25,20.09 11,19.08 11,18C11,14.13 14.13,11 18,11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18,13c-2.76,0 -5,2.24 -5,5s2.24,5 5,5s5,-2.24 5,-5S20.76,13 18,13zM21,18.5h-2.5V21h-1v-2.5H15v-1h2.5V15h1v2.5H21V18.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/add_home_work.xml b/compose/material/material/icons/generator/raw-icons/sharp/add_home_work.xml
new file mode 100644
index 0000000..bcc11f9
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/add_home_work.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,11.68V11L8,6l-7,5v10h5v-6h4v6h1.68C11.25,20.09 11,19.08 11,18C11,15.21 12.64,12.81 15,11.68z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M23,13.11V3H10v1.97l7,5v1.11c0.33,-0.05 0.66,-0.08 1,-0.08C19.96,11 21.73,11.81 23,13.11zM17,7h2v2h-2V7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M23,18c0,-2.76 -2.24,-5 -5,-5s-5,2.24 -5,5s2.24,5 5,5S23,20.76 23,18zM17.5,21v-2.5H15v-1h2.5V15h1v2.5H21v1h-2.5V21H17.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/app_registration.xml b/compose/material/material/icons/generator/raw-icons/sharp/app_registration.xml
index 9e2f244..540e380 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/app_registration.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/app_registration.xml
@@ -27,5 +27,5 @@
       android:pathData="M14,12.03l0,-2.03l-4,0l0,4l2.03,0z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M17.6714,11.2057l1.4142,-1.4142l2.1213,2.1213l-1.4142,1.4142z"/>
+      android:pathData="M17.671,11.206l1.414,-1.414l2.121,2.121l-1.414,1.414z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/arrow_outward.xml b/compose/material/material/icons/generator/raw-icons/sharp/arrow_outward.xml
new file mode 100644
index 0000000..842e1d7
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/arrow_outward.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,6l0,2l8.59,0l-9.59,9.59l1.41,1.41l9.59,-9.59l0,8.59l2,0l0,-12z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/assist_walker.xml b/compose/material/material/icons/generator/raw-icons/sharp/assist_walker.xml
new file mode 100644
index 0000000..fe5593b
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/assist_walker.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.5,4.5m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.77,17.72L19,10h-3c-1.5,-0.02 -2.86,-0.54 -3.76,-1.44l-2,-1.98C10.08,6.42 9.62,6 8.83,6C8.32,6 7.81,6.2 7.42,6.59l-4.2,4.17l2.08,4.07l-3.15,4.05l1.57,1.24l3.68,-4.73l-0.17,-1.36L8,14.75V20h2v-6.12l-2.12,-2.12l2.36,-2.36c0.94,0.94 1.72,1.82 3.59,2.32L13,20h1.5l0.41,-3.5h3.18l0.14,1.22c-0.44,0.26 -0.73,0.74 -0.73,1.28c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5C20.5,18.46 20.21,17.98 19.77,17.72zM15.09,15l0.41,-3.5h2l0.41,3.5H15.09z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/bar_chart.xml b/compose/material/material/icons/generator/raw-icons/sharp/bar_chart.xml
index ce22825..bbc825d 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/bar_chart.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/bar_chart.xml
@@ -6,5 +6,11 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M5,9.2h3L8,19L5,19L5,9.2zM10.6,5h2.8v14h-2.8L10.6,5zM16.2,13L19,13v6h-2.8v-6z"/>
+      android:pathData="M4,9h4v11h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,13h4v7h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,4h4v16h-4z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/blind.xml b/compose/material/material/icons/generator/raw-icons/sharp/blind.xml
new file mode 100644
index 0000000..803b7dc
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/blind.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11.5,3.5m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.13,7.12c-0.17,-0.35 -0.44,-0.65 -0.8,-0.85C10.72,5.91 9.99,5.93 9.4,6.24l0,-0.01L4,9.3V14h2v-3.54l1.5,-0.85C7.18,10.71 7,11.85 7,13v5.33L4.4,21.8L6,23l3,-4l0.22,-3.54L11,18v5h2v-6.5l-1.97,-2.81c-0.04,-0.52 -0.14,-1.76 0.45,-3.4c0.75,1.14 1.88,1.98 3.2,2.41L20.63,23l0.87,-0.5L16.02,13H17v-2c-0.49,0 -2.88,0.17 -4.08,-2.21"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/construction.xml b/compose/material/material/icons/generator/raw-icons/sharp/construction.xml
index 1828ec8..2c31758 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/construction.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/construction.xml
@@ -6,7 +6,7 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M13.7827,15.1719l2.1213,-2.1213l5.9962,5.9962l-2.1213,2.1213z"/>
+      android:pathData="M13.783,15.172l2.121,-2.121l5.996,5.996l-2.121,2.121z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M17.5,10c1.93,0 3.5,-1.57 3.5,-3.5c0,-0.58 -0.16,-1.12 -0.41,-1.6l-2.7,2.7L16.4,6.11l2.7,-2.7C18.62,3.16 18.08,3 17.5,3C15.57,3 14,4.57 14,6.5c0,0.41 0.08,0.8 0.21,1.16l-1.85,1.85l-1.78,-1.78l0.71,-0.71L9.88,5.61L12,3.49c-1.17,-1.17 -3.07,-1.17 -4.24,0L4.22,7.03l1.41,1.41H2.81L2.1,9.15l3.54,3.54l0.71,-0.71V9.15l1.41,1.41l0.71,-0.71l1.78,1.78l-7.41,7.41l2.12,2.12L16.34,9.79C16.7,9.92 17.09,10 17.5,10z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/contact_emergency.xml b/compose/material/material/icons/generator/raw-icons/sharp/contact_emergency.xml
new file mode 100644
index 0000000..56d5f2f
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/contact_emergency.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M23.99,3H0v18h23.99V3zM9,8c1.65,0 3,1.35 3,3s-1.35,3 -3,3s-3,-1.35 -3,-3S7.35,8 9,8zM2.08,19c1.38,-2.39 3.96,-4 6.92,-4s5.54,1.61 6.92,4H2.08zM20.97,9.85l-0.75,1.3l-1.47,-0.85V12h-1.5v-1.7l-1.47,0.85l-0.75,-1.3L16.5,9l-1.47,-0.85l0.75,-1.3l1.47,0.85V6h1.5v1.7l1.47,-0.85l0.75,1.3L19.5,9L20.97,9.85z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/crop_16_9.xml b/compose/material/material/icons/generator/raw-icons/sharp/crop_16_9.xml
index 0a61199..a93aa0d 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/crop_16_9.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/crop_16_9.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M21,6L3,6v12h18L21,6zM19,16L5,16L5,8h14v8z"/>
+      android:pathData="M21,7H3v10h18V7zM19,15H5V9h14V15z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/crop_3_2.xml b/compose/material/material/icons/generator/raw-icons/sharp/crop_3_2.xml
index cf620fc..ebf489a 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/crop_3_2.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/crop_3_2.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M21,4L3,4v16h18L21,4zM19,18L5,18L5,6h14v12z"/>
+      android:pathData="M21,6H3v12h18V6zM19,16H5V8h14V16z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/crop_5_4.xml b/compose/material/material/icons/generator/raw-icons/sharp/crop_5_4.xml
index 22a2927..a84f108f 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/crop_5_4.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/crop_5_4.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M21,5L3,5v14h18L21,5zM19,17L5,17L5,7h14v10z"/>
+      android:pathData="M21,4H3v16h18V4zM19,18H5V6h14V18z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/crop_7_5.xml b/compose/material/material/icons/generator/raw-icons/sharp/crop_7_5.xml
index 2aea47c..ebb0365 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/crop_7_5.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/crop_7_5.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M21,7L3,7v10h18L21,7zM19,15L5,15L5,9h14v6z"/>
+      android:pathData="M21,5H3v14h18V5zM19,17H5V7h14V17z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/dataset.xml b/compose/material/material/icons/generator/raw-icons/sharp/dataset.xml
new file mode 100644
index 0000000..7d70f62
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/dataset.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21,3H3v18h18V3zM11,17H7v-4h4V17zM11,11H7V7h4V11zM17,17h-4v-4h4V17zM17,11h-4V7h4V11z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/dataset_linked.xml b/compose/material/material/icons/generator/raw-icons/sharp/dataset_linked.xml
new file mode 100644
index 0000000..f5d233c
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/dataset_linked.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8.09,17H7v-4h3.69c0.95,-0.63 2.09,-1 3.31,-1h6c0.34,0 0.67,0.04 1,0.09V3H3v18h5.81C8.3,20.12 8,19.09 8,18C8,17.66 8.04,17.33 8.09,17zM13,7h4v4h-4V7zM7,7h4v4H7V7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,18c0,-1.1 0.9,-2 2,-2h2v-2h-2c-2.21,0 -4,1.79 -4,4c0,2.21 1.79,4 4,4h2v-2h-2C12.9,20 12,19.1 12,18z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,14h-2v2h2c1.1,0 2,0.9 2,2s-0.9,2 -2,2h-2v2h2c2.21,0 4,-1.79 4,-4C24,15.79 22.21,14 20,14z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,17h6v2h-6z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/design_services.xml b/compose/material/material/icons/generator/raw-icons/sharp/design_services.xml
index 7e41c20..e0c06b7 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/design_services.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/design_services.xml
@@ -9,5 +9,5 @@
       android:pathData="M21.79,17.06l-5.55,-5.55l1.57,-1.57l-3.75,-3.75l-1.57,1.57L6.94,2.21L2.21,6.94l5.55,5.55L3,17.25V21h3.75l4.76,-4.76l5.55,5.55l0,0v0L21.79,17.06zM9.18,11.07L5.04,6.94l1.9,-1.9l1.27,1.27L7.02,7.5l1.41,1.41l1.19,-1.19l1.45,1.45L9.18,11.07zM12.93,14.82l1.9,-1.9l1.45,1.45l-1.19,1.19l1.41,1.41l1.19,-1.19l1.27,1.27l-1.9,1.9L12.93,14.82z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M15.1329,5.123l2.5385,-2.5385l3.7476,3.7476l-2.5385,2.5385z"/>
+      android:pathData="M15.133,5.123l2.538,-2.538l3.748,3.748l-2.538,2.538z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/diversity_1.xml b/compose/material/material/icons/generator/raw-icons/sharp/diversity_1.xml
new file mode 100644
index 0000000..e99d32f
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/diversity_1.xml
@@ -0,0 +1,28 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,14m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.22,17.58C0.48,17.9 0,18.62 0,19.43V21l4.5,0v-1.61c0,-0.83 0.23,-1.61 0.63,-2.29C4.76,17.04 4.39,17 4,17C3.01,17 2.07,17.21 1.22,17.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,14m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.78,17.58C21.93,17.21 20.99,17 20,17c-0.39,0 -0.76,0.04 -1.13,0.1c0.4,0.68 0.63,1.46 0.63,2.29V21l4.5,0v-1.57C24,18.62 23.52,17.9 22.78,17.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.24,16.65c-1.17,-0.52 -2.61,-0.9 -4.24,-0.9c-1.63,0 -3.07,0.39 -4.24,0.9C6.68,17.13 6,18.21 6,19.39V21h12v-1.61C18,18.21 17.32,17.13 16.24,16.65z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,12c0,1.66 1.34,3 3,3s3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3S9,10.34 9,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2.48,10.86C2.17,10.1 2,9.36 2,8.6C2,6.02 4.02,4 6.6,4c2.68,0 3.82,1.74 5.4,3.59C13.57,5.76 14.7,4 17.4,4C19.98,4 22,6.02 22,8.6c0,0.76 -0.17,1.5 -0.48,2.26c0.65,0.31 1.18,0.82 1.53,1.44C23.65,11.1 24,9.88 24,8.6C24,4.9 21.1,2 17.4,2c-2.09,0 -4.09,0.97 -5.4,2.51C10.69,2.97 8.69,2 6.6,2C2.9,2 0,4.9 0,8.6c0,1.28 0.35,2.5 0.96,3.7C1.31,11.68 1.84,11.17 2.48,10.86z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/diversity_2.xml b/compose/material/material/icons/generator/raw-icons/sharp/diversity_2.xml
new file mode 100644
index 0000000..b333db5
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/diversity_2.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10.1,15.9l1.42,-1.42C8.79,12.05 7,10.41 7,8.85C7,7.8 7.8,7 8.85,7c1.11,0 1.54,0.65 2.68,2h0.93c1.12,-1.31 1.53,-2 2.68,-2c0.87,0 1.55,0.54 1.77,1.32c0.35,-0.04 0.68,-0.06 1,-0.06c0.36,0 0.7,0.03 1.03,0.08C18.7,6.43 17.13,5 15.15,5c-0.12,0 -0.23,0.03 -0.35,0.04C14.92,4.71 15,4.37 15,4c0,-1.66 -1.34,-3 -3,-3S9,2.34 9,4c0,0.37 0.08,0.71 0.2,1.04C9.08,5.03 8.97,5 8.85,5C6.69,5 5,6.69 5,8.85C5,11.27 7.04,13.16 10.1,15.9z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.5,16.24c-0.32,-0.18 -0.66,-0.29 -1,-0.35c0.07,-0.1 0.15,-0.18 0.21,-0.28c1.08,-1.87 0.46,-4.18 -1.41,-5.26c-2.09,-1.21 -4.76,-0.39 -8.65,0.9l0.52,1.94c3.47,-1.14 5.79,-1.88 7.14,-1.1c0.91,0.53 1.2,1.61 0.68,2.53c-0.56,0.96 -1.33,1 -3.07,1.32l-0.47,0.81c0.58,1.62 0.97,2.33 0.39,3.32c-0.53,0.91 -1.61,1.2 -2.53,0.68c-0.06,-0.03 -0.11,-0.09 -0.17,-0.13c-0.3,0.67 -0.64,1.24 -1.03,1.73c0.07,0.04 0.13,0.09 0.2,0.14c1.87,1.08 4.18,0.46 5.26,-1.41c0.06,-0.1 0.09,-0.21 0.14,-0.32c0.22,0.27 0.48,0.51 0.8,0.69c1.43,0.83 3.27,0.34 4.1,-1.1S23.93,17.06 22.5,16.24z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.32,14.01c-0.74,3.58 -1.27,5.95 -2.62,6.73c-0.91,0.53 -2,0.24 -2.53,-0.68c-0.56,-0.96 -0.2,-1.66 0.39,-3.32L7.1,15.93c-1.7,-0.31 -2.5,-0.33 -3.07,-1.32c-0.53,-0.91 -0.24,-2 0.68,-2.53c0.09,-0.05 0.19,-0.08 0.29,-0.11c-0.35,-0.56 -0.64,-1.17 -0.82,-1.85c-0.16,0.07 -0.32,0.14 -0.48,0.23c-1.87,1.08 -2.49,3.39 -1.41,5.26c0.06,0.1 0.14,0.18 0.21,0.28c-0.34,0.06 -0.68,0.17 -1,0.35c-1.43,0.83 -1.93,2.66 -1.1,4.1s2.66,1.93 4.1,1.1c0.32,-0.18 0.58,-0.42 0.8,-0.69c0.05,0.11 0.08,0.22 0.14,0.32c1.08,1.87 3.39,2.49 5.26,1.41c2.09,-1.21 2.71,-3.93 3.55,-7.94L12.32,14.01z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/diversity_3.xml b/compose/material/material/icons/generator/raw-icons/sharp/diversity_3.xml
new file mode 100644
index 0000000..bb41d74
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/diversity_3.xml
@@ -0,0 +1,22 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6.32,13.01c0.96,0.02 1.85,0.5 2.45,1.34C9.5,15.38 10.71,16 12,16c1.29,0 2.5,-0.62 3.23,-1.66c0.6,-0.84 1.49,-1.32 2.45,-1.34C16.96,11.78 14.08,11 12,11C9.93,11 7.04,11.78 6.32,13.01z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,13L4,13c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3s-3,1.34 -3,3C1,11.66 2.34,13 4,13z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,13L20,13c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3s-3,1.34 -3,3C17,11.66 18.34,13 20,13z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,10c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3S9,5.34 9,7C9,8.66 10.34,10 12,10z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21,14h-3.27c-0.77,0 -1.35,0.45 -1.68,0.92C16.01,14.98 14.69,17 12,17c-1.43,0 -3.03,-0.64 -4.05,-2.08C7.56,14.37 6.95,14 6.27,14H3c-1.1,0 -2,0.9 -2,2v4h7v-2.26c1.15,0.8 2.54,1.26 4,1.26s2.85,-0.46 4,-1.26V20h7v-4C23,14.9 22.1,14 21,14z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/drive_file_rename_outline.xml b/compose/material/material/icons/generator/raw-icons/sharp/drive_file_rename_outline.xml
index 97ab41a..7af27a8 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/drive_file_rename_outline.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/drive_file_rename_outline.xml
@@ -12,5 +12,5 @@
       android:pathData="M12.06,7.19l-9.06,9.06l0,3.75l3.75,0l9.06,-9.06z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M13.132,6.1227l2.5385,-2.5385l3.7476,3.7476l-2.5385,2.5385z"/>
+      android:pathData="M13.132,6.123l2.538,-2.538l3.748,3.748l-2.538,2.538z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/emoji_symbols.xml b/compose/material/material/icons/generator/raw-icons/sharp/emoji_symbols.xml
index 8366721..5c3024a 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/emoji_symbols.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/emoji_symbols.xml
@@ -12,7 +12,7 @@
       android:pathData="M6,11l2,0l0,-4l3,0l0,-2l-8,0l0,2l3,0z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12.4036,20.1819l7.7781,-7.7781l1.4142,1.4142l-7.7781,7.7781z"/>
+      android:pathData="M12.404,20.182l7.778,-7.778l1.414,1.414l-7.778,7.778z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M14.5,14.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/face_2.xml b/compose/material/material/icons/generator/raw-icons/sharp/face_2.xml
new file mode 100644
index 0000000..4b29f67
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/face_2.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21.97,13.52c0,-0.01 0,-0.02 0,-0.04C23.21,12.38 24,10.78 24,9c0,-3.31 -2.69,-6 -6,-6c-0.26,0 -0.52,0.02 -0.78,0.06C16.19,1.23 14.24,0 12,0S7.81,1.23 6.78,3.06C6.52,3.02 6.26,3 6,3C2.69,3 0,5.69 0,9c0,1.78 0.79,3.38 2.02,4.48c0,0.01 0,0.02 0,0.04C0.79,14.62 0,16.22 0,18c0,3.31 2.69,6 6,6c1.39,0 2.67,-0.48 3.69,-1.28C10.43,22.9 11.2,23 12,23s1.57,-0.1 2.31,-0.28C15.33,23.52 16.61,24 18,24c3.31,0 6,-2.69 6,-6C24,16.22 23.21,14.62 21.97,13.52zM12,21c-4.41,0 -8,-3.59 -8,-8c0,-3.72 2.56,-6.85 6,-7.74c0,0.02 0,0.03 0,0.05c0,3.34 2.72,6.06 6.06,6.06c1.26,0 2.45,-0.39 3.45,-1.09C19.82,11.14 20,12.05 20,13C20,17.41 16.41,21 12,21z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,14m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,14m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/face_3.xml b/compose/material/material/icons/generator/raw-icons/sharp/face_3.xml
new file mode 100644
index 0000000..7dc4bfc
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/face_3.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.91,11.96c-0.54,-5.93 -5.75,-10.41 -11.8,-9.92C5.73,2.46 1.55,6.94 1.06,12.32L0,24h24c0,0 0,0 0,0L22.91,11.96zM4.54,9.13C5.41,9.68 6.43,10 7.5,10C9.36,10 11,9.07 12,7.65C13,9.07 14.64,10 16.5,10c1.07,0 2.09,-0.32 2.96,-0.87C19.8,10.02 20,10.99 20,12c0,4.41 -3.59,8 -8,8s-8,-3.59 -8,-8C4,10.99 4.2,10.02 4.54,9.13z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/face_4.xml b/compose/material/material/icons/generator/raw-icons/sharp/face_4.xml
new file mode 100644
index 0000000..655df37
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/face_4.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,2c-0.96,0 -1.88,0.14 -2.75,0.39C8.37,0.96 6.8,0 5,0C2.24,0 0,2.24 0,5c0,1.8 0.96,3.37 2.39,4.25C2.14,10.12 2,11.04 2,12c0,5.52 4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8c0,-0.05 0.01,-0.1 0.01,-0.15c2.6,-0.98 4.68,-2.99 5.74,-5.55C11.58,8.56 14.37,10 17.5,10c0.75,0 1.47,-0.09 2.17,-0.24C19.88,10.47 20,11.22 20,12C20,16.41 16.41,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/face_5.xml b/compose/material/material/icons/generator/raw-icons/sharp/face_5.xml
new file mode 100644
index 0000000..525db6c
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/face_5.xml
@@ -0,0 +1,76 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8c0,-1.12 0.23,-2.18 0.65,-3.15C4.74,8.94 4.86,9 5,9c0.28,0 0.5,-0.22 0.5,-0.5c0,-0.25 -0.19,-0.45 -0.43,-0.49c0.15,-0.26 0.32,-0.51 0.49,-0.75C5.53,7.34 5.5,7.41 5.5,7.5C5.5,7.78 5.72,8 6,8s0.5,-0.22 0.5,-0.5C6.5,7.22 6.28,7 6,7C5.87,7 5.75,7.05 5.66,7.13c0.52,-0.68 1.15,-1.28 1.86,-1.76C7.51,5.41 7.5,5.45 7.5,5.5C7.5,5.78 7.72,6 8,6s0.5,-0.22 0.5,-0.5c0,-0.24 -0.17,-0.43 -0.4,-0.48c0.16,-0.09 0.32,-0.17 0.49,-0.25C8.68,4.91 8.83,5 9,5c0.28,0 0.5,-0.22 0.5,-0.5c0,-0.03 -0.01,-0.06 -0.02,-0.09c0.39,-0.13 0.79,-0.23 1.21,-0.3C10.58,4.21 10.5,4.34 10.5,4.5C10.5,4.78 10.72,5 11,5s0.5,-0.22 0.5,-0.5c0,-0.21 -0.13,-0.38 -0.3,-0.46C11.46,4.01 11.73,4 12,4s0.54,0.01 0.8,0.04c-0.18,0.08 -0.3,0.25 -0.3,0.46C12.5,4.78 12.72,5 13,5s0.5,-0.22 0.5,-0.5c0,-0.16 -0.08,-0.29 -0.19,-0.38c0.41,0.07 0.82,0.17 1.21,0.3C14.51,4.44 14.5,4.47 14.5,4.5C14.5,4.78 14.72,5 15,5c0.17,0 0.32,-0.09 0.41,-0.23c0.17,0.08 0.33,0.16 0.49,0.25c-0.23,0.05 -0.4,0.24 -0.4,0.48C15.5,5.78 15.72,6 16,6s0.5,-0.22 0.5,-0.5c0,-0.05 -0.01,-0.09 -0.03,-0.13c0.71,0.48 1.34,1.08 1.86,1.76C18.25,7.05 18.13,7 18,7c-0.28,0 -0.5,0.22 -0.5,0.5C17.5,7.78 17.72,8 18,8s0.5,-0.22 0.5,-0.5c0,-0.09 -0.03,-0.16 -0.07,-0.23c0.18,0.24 0.34,0.49 0.49,0.75C18.69,8.05 18.5,8.25 18.5,8.5C18.5,8.78 18.72,9 19,9c0.14,0 0.26,-0.06 0.35,-0.15C19.77,9.82 20,10.88 20,12C20,16.41 16.41,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,5.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,5.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,5.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/face_6.xml b/compose/material/material/icons/generator/raw-icons/sharp/face_6.xml
new file mode 100644
index 0000000..934336b
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/face_6.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10c5.52,0 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8h2.62l2,-4h6.76l2,4H20C20,16.41 16.41,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/fire_hydrant_alt.xml b/compose/material/material/icons/generator/raw-icons/sharp/fire_hydrant_alt.xml
new file mode 100644
index 0000000..d546c6e
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/fire_hydrant_alt.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21,11h-3V8h2V6h-2.35C16.83,3.67 14.61,2 12,2S7.17,3.67 6.35,6H4v2h2v3H3v6h3v3H4v2h16v-2h-2v-3h3V11zM12,17.5c-1.93,0 -3.5,-1.57 -3.5,-3.5s1.57,-3.5 3.5,-3.5s3.5,1.57 3.5,3.5S13.93,17.5 12,17.5z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,14m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/fire_truck.xml b/compose/material/material/icons/generator/raw-icons/sharp/fire_truck.xml
new file mode 100644
index 0000000..6ab969d
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/fire_truck.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M23,11l-2,-6h-2V3h-3v2h-4v6H1v7h3c0,1.66 1.34,3 3,3s3,-1.34 3,-3h4c0,1.66 1.34,3 3,3s3,-1.34 3,-3h3V11zM7,19c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1s1,0.45 1,1S7.55,19 7,19zM17,19c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1s1,0.45 1,1S17.55,19 17,19zM14,11V7h5.56l1.33,4H14z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,8.5h-1v-2h1V5H1v1.5h1v2H1V10h10V8.5zM5.25,8.5H3.5v-2h1.75V8.5zM8.5,8.5H6.75v-2H8.5V8.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/fluorescent.xml b/compose/material/material/icons/generator/raw-icons/sharp/fluorescent.xml
new file mode 100644
index 0000000..2056c86
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/fluorescent.xml
@@ -0,0 +1,28 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M5,9h14v6h-14z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,2h2v3h-2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.286,6.399l1.79,-1.802l1.419,1.409l-1.79,1.802z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,19h2v3h-2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.29,17.71l1.79,1.8l1.42,-1.42l-1.8,-1.79z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3.495,6.009l1.407,-1.407l1.789,1.789l-1.407,1.407z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3.492,18.076l1.802,-1.79l1.409,1.419l-1.802,1.79z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/groups_2.xml b/compose/material/material/icons/generator/raw-icons/sharp/groups_2.xml
new file mode 100644
index 0000000..de0bfd4
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/groups_2.xml
@@ -0,0 +1,25 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10.27,12h3.46c0.93,0 1.63,-0.83 1.48,-1.75l-0.3,-1.79C14.67,7.04 13.44,6 12,6S9.33,7.04 9.09,8.47l-0.3,1.79C8.64,11.17 9.34,12 10.27,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.66,11.11c-0.13,0.26 -0.18,0.57 -0.1,0.88c0.16,0.69 0.76,1.03 1.53,1c0,0 1.49,0 1.95,0c0.83,0 1.51,-0.58 1.51,-1.29c0,-0.14 -0.03,-0.27 -0.07,-0.4c-0.01,-0.03 -0.01,-0.05 0.01,-0.08c0.09,-0.16 0.14,-0.34 0.14,-0.53c0,-0.31 -0.14,-0.6 -0.36,-0.82c-0.03,-0.03 -0.03,-0.06 -0.02,-0.1c0.07,-0.2 0.07,-0.43 0.01,-0.65C6.1,8.69 5.71,8.4 5.27,8.38c-0.03,0 -0.05,-0.01 -0.07,-0.03C5.03,8.14 4.72,8 4.37,8C4.07,8 3.8,8.1 3.62,8.26C3.59,8.29 3.56,8.29 3.53,8.28c-0.14,-0.06 -0.3,-0.09 -0.46,-0.09c-0.65,0 -1.18,0.49 -1.24,1.12c0,0.02 -0.01,0.04 -0.03,0.06c-0.29,0.26 -0.46,0.65 -0.41,1.05c0.03,0.22 0.12,0.43 0.25,0.6C1.67,11.04 1.67,11.08 1.66,11.11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.24,13.65c-1.17,-0.52 -2.61,-0.9 -4.24,-0.9c-1.63,0 -3.07,0.39 -4.24,0.9C6.68,14.13 6,15.21 6,16.39V18h12v-1.61C18,15.21 17.32,14.13 16.24,13.65z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.22,14.58C0.48,14.9 0,15.62 0,16.43V18l4.5,0v-1.61c0,-0.83 0.23,-1.61 0.63,-2.29C4.76,14.04 4.39,14 4,14C3.01,14 2.07,14.21 1.22,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.78,14.58C21.93,14.21 20.99,14 20,14c-0.39,0 -0.76,0.04 -1.13,0.1c0.4,0.68 0.63,1.46 0.63,2.29V18l4.5,0v-1.57C24,15.62 23.52,14.9 22.78,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22,11v-0.5c0,-1.1 -0.9,-2 -2,-2h-2c-0.42,0 -0.65,0.48 -0.39,0.81l0.7,0.63C18.12,10.25 18,10.61 18,11c0,1.1 0.9,2 2,2S22,12.1 22,11z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/groups_3.xml b/compose/material/material/icons/generator/raw-icons/sharp/groups_3.xml
new file mode 100644
index 0000000..66b5e90
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/groups_3.xml
@@ -0,0 +1,25 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.24,13.65c-1.17,-0.52 -2.61,-0.9 -4.24,-0.9c-1.63,0 -3.07,0.39 -4.24,0.9C6.68,14.13 6,15.21 6,16.39V18h12v-1.61C18,15.21 17.32,14.13 16.24,13.65z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.22,14.58C0.48,14.9 0,15.62 0,16.43V18l4.5,0v-1.61c0,-0.83 0.23,-1.61 0.63,-2.29C4.76,14.04 4.39,14 4,14C3.01,14 2.07,14.21 1.22,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.78,14.58C21.93,14.21 20.99,14 20,14c-0.39,0 -0.76,0.04 -1.13,0.1c0.4,0.68 0.63,1.46 0.63,2.29V18l4.5,0v-1.57C24,15.62 23.52,14.9 22.78,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,12c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3S9,7.34 9,9C9,10.66 10.34,12 12,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.497,11l2.503,-2.503l2.503,2.503l-2.503,2.503z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,9l-2.5,4l5,0z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/home_work.xml b/compose/material/material/icons/generator/raw-icons/sharp/home_work.xml
index 96d57ee..2ba7ff2 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/home_work.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/home_work.xml
@@ -6,8 +6,8 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M8.17,5.7L1,10.48V21h5v-8h4v8h5V10.25z"/>
+      android:pathData="M1,11l0,10l5,0l0,-6l4,0l0,6l5,0l0,-10l-7,-5z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M10,3v1.51l2,1.33L13.73,7L15,7v0.85l2,1.34L17,11h2v2h-2v2h2v2h-2v4h6L23,3L10,3zM19,9h-2L17,7h2v2z"/>
+      android:pathData="M10,3v1.97l7,5V11h2v2h-2v2h2v2h-2v4h6V3H10zM19,9h-2V7h2V9z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/local_fire_department.xml b/compose/material/material/icons/generator/raw-icons/sharp/local_fire_department.xml
index 460e453..4bc17cf 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/local_fire_department.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/local_fire_department.xml
@@ -6,5 +6,8 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19.48,12.37C17.82,8.05 11.65,8 13.99,0.99C9.52,3 5.98,8.17 9.48,15C4.53,12.92 6.7,7.71 6.7,7.71S4,9.37 4,14.39c0.38,5.6 5.11,7.32 6.81,7.54c2.43,0.31 5.06,-0.14 6.95,-1.87C19.84,18.13 20.6,15.05 19.48,12.37zM10.2,17.4c1.44,-0.35 2.18,-1.39 2.38,-2.31c0.33,-1.43 -0.96,-2.83 -0.09,-5.09c0.33,1.87 3.27,3.04 3.27,5.08C15.84,17.61 13.1,19.78 10.2,17.4z"/>
+      android:pathData="M12,12.9l-2.13,2.09C9.31,15.55 9,16.28 9,17.06C9,18.68 10.35,20 12,20s3,-1.32 3,-2.94c0,-0.78 -0.31,-1.52 -0.87,-2.07L12,12.9z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,6l-0.44,0.55C14.38,8.02 12,7.19 12,5.3V2c0,0 -8,4 -8,11c0,2.92 1.56,5.47 3.89,6.86C7.33,19.07 7,18.1 7,17.06c0,-1.32 0.52,-2.56 1.47,-3.5L12,10.1l3.53,3.47c0.95,0.93 1.47,2.17 1.47,3.5c0,1.02 -0.31,1.96 -0.85,2.75c1.89,-1.15 3.29,-3.06 3.71,-5.3C20.52,10.97 18.79,7.62 16,6z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/macro_off.xml b/compose/material/material/icons/generator/raw-icons/sharp/macro_off.xml
new file mode 100644
index 0000000..bae1caf
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/macro_off.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.98,17.15C20.63,15.91 21,14.5 21,13c-1.5,0 -2.91,0.37 -4.15,1.02L19.98,17.15z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3,13c0,4.97 4.03,9 9,9C12,17.03 7.97,13 3,13z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,5.5c1.38,0 2.5,1.12 2.5,2.5c0,0.99 -0.58,1.84 -1.42,2.25l2.48,2.48c0.11,0.02 0.23,0.03 0.35,0.03c1.38,0 2.5,-1.12 2.5,-2.5c0,-1 -0.59,-1.85 -1.43,-2.25c0.84,-0.4 1.43,-1.25 1.43,-2.25c0,-1.38 -1.12,-2.5 -2.5,-2.5c-0.53,0 -1.01,0.16 -1.42,0.44L14.5,3.5C14.5,2.12 13.38,1 12,1S9.5,2.12 9.5,3.5l0.02,0.19C9.12,3.41 8.63,3.25 8.1,3.25c-0.57,0 -1.09,0.2 -1.51,0.52l3.16,3.16C10.16,6.08 11.01,5.5 12,5.5z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2.81,2.81L1.39,4.22l4.64,4.64C5.76,9.26 5.6,9.73 5.6,10.25c0,1.38 1.12,2.5 2.5,2.5c0.52,0 0.99,-0.16 1.4,-0.43l0.02,0.02L9.5,12.5c0,1.38 1.12,2.5 2.5,2.5c0.05,0 0.1,-0.01 0.16,-0.02l1.64,1.64C12.67,18.12 12,19.98 12,22c2.02,0 3.88,-0.67 5.38,-1.8l2.4,2.4l1.41,-1.41L2.81,2.81z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/man_2.xml b/compose/material/material/icons/generator/raw-icons/sharp/man_2.xml
new file mode 100644
index 0000000..1ac323f
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/man_2.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,7l-8,0l0,8l2.5,0l0,7l3,0l0,-7l2.5,0z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/man_3.xml b/compose/material/material/icons/generator/raw-icons/sharp/man_3.xml
new file mode 100644
index 0000000..5a56373
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/man_3.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,7l-8,0l0,8l2,0l0,7l4,0l0,-7l2,0z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,1.751l2.249,2.249l-2.249,2.249l-2.249,-2.249z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/man_4.xml b/compose/material/material/icons/generator/raw-icons/sharp/man_4.xml
new file mode 100644
index 0000000..22afb5f
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/man_4.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7.96,7l2.04,15l4,0l2.04,-15z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/noise_aware.xml b/compose/material/material/icons/generator/raw-icons/sharp/noise_aware.xml
index dd729e1..cc4e0b7 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/noise_aware.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/noise_aware.xml
@@ -6,29 +6,50 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M4.07,13H2.05c0.2,2.01 1,3.84 2.21,5.33l1.43,-1.43C4.83,15.79 4.25,14.46 4.07,13z"/>
+      android:pathData="M16,15h-2c0,0.55 -0.45,1 -1,1c-0.43,0 -0.81,-0.27 -0.95,-0.68c-0.15,-0.44 -0.4,-1.08 -0.93,-1.61l-1.36,-1.36C9.28,11.87 9,11.19 9,10.5C9,9.12 10.12,8 11.5,8c1.21,0 2.22,0.86 2.45,2h2.02c-0.25,-2.25 -2.16,-4 -4.47,-4C9.02,6 7,8.02 7,10.5c0,1.22 0.49,2.41 1.35,3.27l1.36,1.36c0.17,0.17 0.31,0.44 0.44,0.82C10.56,17.17 11.71,18 13,18C14.65,18 16,16.65 16,15z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M5.69,7.1L4.26,5.67C3.05,7.16 2.25,8.99 2.05,11h2.02C4.25,9.54 4.83,8.21 5.69,7.1z"/>
+      android:pathData="M13.5,12.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M11,4.07V2.05c-2.01,0.2 -3.84,1 -5.33,2.21L7.1,5.69C8.21,4.83 9.54,4.25 11,4.07z"/>
+      android:pathData="M3.6,6.58l1.58,1.26c0.35,-0.57 0.77,-1.1 1.24,-1.57L4.85,5.02C4.38,5.49 3.97,6.02 3.6,6.58z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M18.33,4.26C16.84,3.05 15.01,2.25 13,2.05v2.02c1.46,0.18 2.79,0.76 3.9,1.62L18.33,4.26z"/>
+      android:pathData="M9.46,4.42L8.59,2.61c-0.63,0.23 -1.24,0.52 -1.8,0.87l0.87,1.81C8.22,4.93 8.82,4.64 9.46,4.42z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M18.31,16.9l1.43,1.43c1.21,-1.48 2.01,-3.32 2.21,-5.33h-2.02C19.75,14.46 19.17,15.79 18.31,16.9z"/>
+      android:pathData="M4.49,9.26L2.53,8.81c-0.21,0.63 -0.36,1.28 -0.44,1.95l1.96,0.45C4.11,10.53 4.27,9.88 4.49,9.26z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19.93,11h2.02c-0.2,-2.01 -1,-3.84 -2.21,-5.33L18.31,7.1C19.17,8.21 19.75,9.54 19.93,11z"/>
+      android:pathData="M20.4,6.58c-0.36,-0.56 -0.78,-1.09 -1.25,-1.56l-1.58,1.26c0.48,0.47 0.89,0.99 1.24,1.57L20.4,6.58z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M13,19.93v2.02c2.01,-0.2 3.84,-1 5.33,-2.21l-1.43,-1.43C15.79,19.17 14.46,19.75 13,19.93z"/>
+      android:pathData="M4.04,12.79l-1.96,0.45c0.08,0.67 0.23,1.33 0.44,1.95l1.97,-0.45C4.27,14.12 4.11,13.47 4.04,12.79z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M5.67,19.74c1.48,1.21 3.32,2.01 5.33,2.21v-2.02c-1.46,-0.18 -2.79,-0.76 -3.9,-1.62L5.67,19.74z"/>
+      android:pathData="M17.21,3.48c-0.57,-0.35 -1.17,-0.64 -1.8,-0.87l-0.87,1.81c0.64,0.22 1.24,0.51 1.8,0.87L17.21,3.48z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,12m-5,0a5,5 0,1 1,10 0a5,5 0,1 1,-10 0"/>
+      android:pathData="M13,4.07V2.05C12.67,2.02 12.34,2 12,2s-0.67,0.02 -1,0.05v2.02C11.33,4.03 11.66,4 12,4S12.67,4.03 13,4.07z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,19.93v2.02c0.33,0.03 0.66,0.05 1,0.05s0.67,-0.02 1,-0.05v-2.02C12.67,19.97 12.34,20 12,20S11.33,19.97 11,19.93z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.51,14.74l1.97,0.45c0.21,-0.63 0.36,-1.28 0.44,-1.95l-1.96,-0.45C19.89,13.47 19.73,14.12 19.51,14.74z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.96,11.21l1.96,-0.45c-0.08,-0.67 -0.23,-1.33 -0.44,-1.95l-1.97,0.45C19.73,9.88 19.89,10.53 19.96,11.21z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.58,17.73l1.58,1.26c0.47,-0.48 0.88,-1 1.25,-1.56l-1.58,-1.26C18.47,16.73 18.05,17.26 17.58,17.73z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6.79,20.52c0.57,0.35 1.17,0.64 1.8,0.87l0.87,-1.81c-0.64,-0.22 -1.24,-0.51 -1.8,-0.87L6.79,20.52z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14.54,19.58l0.87,1.81c0.63,-0.23 1.24,-0.52 1.8,-0.87l-0.87,-1.81C15.78,19.07 15.18,19.36 14.54,19.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3.6,17.42c0.36,0.56 0.78,1.09 1.25,1.56l1.58,-1.26c-0.48,-0.47 -0.89,-0.99 -1.24,-1.57L3.6,17.42z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/noise_control_off.xml b/compose/material/material/icons/generator/raw-icons/sharp/noise_control_off.xml
index 4e65652..4d023ad 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/noise_control_off.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/noise_control_off.xml
@@ -6,5 +6,20 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,12m-5,0a5,5 0,1 1,10 0a5,5 0,1 1,-10 0"/>
+      android:pathData="M12,4c1.44,0 2.79,0.38 3.95,1.05l1.45,-1.45C15.85,2.59 13.99,2 12,2S8.15,2.59 6.59,3.59l1.45,1.45C9.21,4.38 10.56,4 12,4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,12c0,1.44 -0.38,2.79 -1.05,3.95l1.45,1.45C21.41,15.85 22,13.99 22,12s-0.59,-3.85 -1.59,-5.41l-1.45,1.45C19.62,9.21 20,10.56 20,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,20c-1.44,0 -2.79,-0.38 -3.95,-1.05l-1.45,1.45C8.15,21.41 10.01,22 12,22s3.85,-0.59 5.41,-1.59l-1.45,-1.45C14.79,19.62 13.44,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,12c0,-1.44 0.38,-2.79 1.05,-3.95L3.59,6.59C2.59,8.15 2,10.01 2,12s0.59,3.85 1.59,5.41l1.45,-1.45C4.38,14.79 4,13.44 4,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11.5,6C9.02,6 7,8.02 7,10.5c0,1.22 0.49,2.41 1.35,3.27l1.36,1.36c0.17,0.17 0.31,0.44 0.44,0.82C10.56,17.17 11.71,18 13,18c1.65,0 3,-1.35 3,-3h-2c0,0.55 -0.45,1 -1,1c-0.43,0 -0.81,-0.27 -0.95,-0.68c-0.15,-0.44 -0.4,-1.08 -0.93,-1.61l-1.36,-1.36C9.28,11.87 9,11.19 9,10.5C9,9.12 10.12,8 11.5,8c1.21,0 2.22,0.86 2.45,2h2.02C15.72,7.75 13.81,6 11.5,6z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.5,12.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/person_2.xml b/compose/material/material/icons/generator/raw-icons/sharp/person_2.xml
new file mode 100644
index 0000000..add7774
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/person_2.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18.39,14.56C16.71,13.7 14.53,13 12,13c-2.53,0 -4.71,0.7 -6.39,1.56C4.61,15.07 4,16.1 4,17.22V20h16v-2.78C20,16.1 19.39,15.07 18.39,14.56z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9.78,12h4.44c1.21,0 2.14,-1.06 1.98,-2.26l-0.32,-2.45C15.57,5.39 13.92,4 12,4S8.43,5.39 8.12,7.29L7.8,9.74C7.64,10.94 8.57,12 9.78,12z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/person_3.xml b/compose/material/material/icons/generator/raw-icons/sharp/person_3.xml
new file mode 100644
index 0000000..a4391aa
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/person_3.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18.39,14.56C16.71,13.7 14.53,13 12,13c-2.53,0 -4.71,0.7 -6.39,1.56C4.61,15.07 4,16.1 4,17.22V20h16v-2.78C20,16.1 19.39,15.07 18.39,14.56z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,12c0.17,0 3.83,0 4,0c1.66,0 3,-1.34 3,-3c0,-0.73 -0.27,-1.4 -0.71,-1.92C16.42,6.75 16.5,6.38 16.5,6c0,-1.25 -0.77,-2.32 -1.86,-2.77C14,2.48 13.06,2 12,2s-2,0.48 -2.64,1.23C8.27,3.68 7.5,4.75 7.5,6c0,0.38 0.08,0.75 0.21,1.08C7.27,7.6 7,8.27 7,9C7,10.66 8.34,12 10,12z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/person_4.xml b/compose/material/material/icons/generator/raw-icons/sharp/person_4.xml
new file mode 100644
index 0000000..301f5c8
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/person_4.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18.39,14.56C16.71,13.7 14.53,13 12,13c-2.53,0 -4.71,0.7 -6.39,1.56C4.61,15.07 4,16.1 4,17.22V20h16v-2.78C20,16.1 19.39,15.07 18.39,14.56z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,12c2.21,0 4,-1.79 4,-4c0,-1.37 0,-3.5 0,-3.5C16,3.67 15.33,3 14.5,3c-0.52,0 -0.98,0.27 -1.25,0.67C12.98,3.27 12.52,3 12,3s-0.98,0.27 -1.25,0.67C10.48,3.27 10.02,3 9.5,3C8.67,3 8,3.67 8,4.5c0,0 0,2.12 0,3.5C8,10.21 9.79,12 12,12z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/plumbing.xml b/compose/material/material/icons/generator/raw-icons/sharp/plumbing.xml
index f03cbf1..a7142a9 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/plumbing.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/plumbing.xml
@@ -9,7 +9,7 @@
       android:pathData="M16.16,5.64l3.54,3.54c1.17,-1.17 1.17,-3.07 0,-4.24l-3.54,-3.54l-4.24,4.24l2.12,2.12L16.16,5.64z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M4.842,12.7081l3.5355,-3.5355l2.1213,2.1213l-3.5355,3.5355z"/>
+      android:pathData="M4.842,12.708l3.535,-3.535l2.121,2.121l-3.535,3.535z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M15.45,7.76l-1.41,1.41L9.79,4.93L7.67,7.05l4.24,4.24l-8.49,8.49l2.83,2.83L16.86,12l0.71,0.71l1.41,-1.41L15.45,7.76z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/psychology_alt.xml b/compose/material/material/icons/generator/raw-icons/sharp/psychology_alt.xml
new file mode 100644
index 0000000..81e7a09
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/psychology_alt.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.94,9.06C19.5,5.73 16.57,3 13,3C9.47,3 6.57,5.61 6.08,9l-1.93,3.48C3.74,13.14 4.22,14 5,14h1l0,4h3v3h7l0,-4.68C18.62,15.07 20.35,12.24 19.94,9.06zM12.5,14c-0.41,0 -0.74,-0.33 -0.74,-0.74c0,-0.41 0.33,-0.73 0.74,-0.73c0.41,0 0.73,0.32 0.73,0.73C13.23,13.67 12.92,14 12.5,14zM14.26,9.68c-0.44,0.65 -0.86,0.85 -1.09,1.27c-0.09,0.17 -0.13,0.28 -0.13,0.82h-1.06c0,-0.29 -0.04,-0.75 0.18,-1.16c0.28,-0.51 0.83,-0.81 1.14,-1.26c0.33,-0.47 0.15,-1.36 -0.8,-1.36c-0.62,0 -0.92,0.47 -1.05,0.86l-0.96,-0.4C10.76,7.67 11.46,7 12.5,7c0.86,0 1.45,0.39 1.75,0.88C14.51,8.31 14.66,9.1 14.26,9.68z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/repartition.xml b/compose/material/material/icons/generator/raw-icons/sharp/repartition.xml
new file mode 100644
index 0000000..69784ee
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/repartition.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3,21h18v-6H3V21zM10.33,19v-2h3.33v2H10.33zM19,19h-3.33v-2H19V19zM5,17h3.33v2H5V17z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,10l1.42,-1.42L5.83,7H17c1.1,0 2,0.9 2,2s-0.9,2 -2,2H3v2h14c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4H5.83l1.59,-1.59L6,2L2,6L6,10z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/rounded_corner.xml b/compose/material/material/icons/generator/raw-icons/sharp/rounded_corner.xml
index 14f956a..a29f14a 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/rounded_corner.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/rounded_corner.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,19h2v2h-2v-2zM19,17h2v-2h-2v2zM3,13h2v-2L3,11v2zM3,17h2v-2L3,15v2zM3,9h2L5,7L3,7v2zM3,5h2L5,3L3,3v2zM7,5h2L9,3L7,3v2zM15,21h2v-2h-2v2zM11,21h2v-2h-2v2zM15,21h2v-2h-2v2zM7,21h2v-2L7,19v2zM3,21h2v-2L3,19v2zM21,3L11,3v2h8v8h2L21,3z"/>
+      android:pathData="M19,19h2v2h-2V19zM19,17h2v-2h-2V17zM3,13h2v-2H3V13zM3,17h2v-2H3V17zM3,9h2V7H3V9zM3,5h2V3H3V5zM7,5h2V3H7V5zM15,21h2v-2h-2V21zM11,21h2v-2h-2V21zM15,21h2v-2h-2V21zM7,21h2v-2H7V21zM3,21h2v-2H3V21zM21,8c0,-2.76 -2.24,-5 -5,-5h-5v2h5c1.65,0 3,1.35 3,3v5h2V8z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/shape_line.xml b/compose/material/material/icons/generator/raw-icons/sharp/shape_line.xml
new file mode 100644
index 0000000..f7982ba
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/shape_line.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,11c2.76,0 5,-2.24 5,-5S8.76,1 6,1S1,3.24 1,6S3.24,11 6,11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M23,14h-9v9h9V14z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.71,7.7C18.11,7.89 18.54,8 19,8c1.65,0 3,-1.35 3,-3s-1.35,-3 -3,-3s-3,1.35 -3,3c0,0.46 0.11,0.89 0.3,1.29L6.29,16.3C5.89,16.11 5.46,16 5,16c-1.65,0 -3,1.35 -3,3s1.35,3 3,3s3,-1.35 3,-3c0,-0.46 -0.11,-0.89 -0.3,-1.29L17.71,7.7z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/sports_cricket.xml b/compose/material/material/icons/generator/raw-icons/sharp/sports_cricket.xml
index 85c13a9..9258e4a 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/sports_cricket.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/sports_cricket.xml
@@ -9,7 +9,7 @@
       android:pathData="M15.05,12.81L6.56,4.32c-0.39,-0.39 -1.02,-0.39 -1.41,0L2.32,7.15c-0.39,0.39 -0.39,1.02 0,1.41l8.49,8.49c0.39,0.39 1.02,0.39 1.41,0l2.83,-2.83C15.44,13.83 15.44,13.2 15.05,12.81z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M14.3412,17.7562l1.4142,-1.4142l4.2426,4.2426l-1.4142,1.4142z"/>
+      android:pathData="M14.341,17.756l1.414,-1.414l4.243,4.243l-1.414,1.414z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M18.5,5.5m-3.5,0a3.5,3.5 0,1 1,7 0a3.5,3.5 0,1 1,-7 0"/>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/stacked_bar_chart.xml b/compose/material/material/icons/generator/raw-icons/sharp/stacked_bar_chart.xml
index ebe5a8f..2a7fd72 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/stacked_bar_chart.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/stacked_bar_chart.xml
@@ -6,5 +6,20 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M6,10h3v10H6V10zM6,5h3v4H6V5zM16,16h3v4h-3V16zM16,13h3v2h-3V13zM11,13h3v7h-3V13zM11,9h3v3h-3V9z"/>
+      android:pathData="M4,9h4v11h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,4h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,7h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,10h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,15h4v5h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,12h4v8h-4z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/stream.xml b/compose/material/material/icons/generator/raw-icons/sharp/stream.xml
index edef540..f748f56 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/stream.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/stream.xml
@@ -15,7 +15,7 @@
       android:pathData="M12,20m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M13.9431,8.619l4.4044,-4.3919l1.4122,1.4162l-4.4044,4.3919z"/>
+      android:pathData="M13.943,8.619l4.404,-4.392l1.412,1.416l-4.404,4.392z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M8.32,9.68l0.31,0.32l1.42,-1.41l-4.02,-4.04l-0.01,0l-0.31,-0.32l-1.42,1.41l4.02,4.05z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/transcribe.xml b/compose/material/material/icons/generator/raw-icons/sharp/transcribe.xml
new file mode 100644
index 0000000..b9be39a
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/transcribe.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.93,16l1.63,-1.63c-2.77,-3.02 -2.77,-7.56 0,-10.74L17.93,2C14.03,5.89 14.02,11.95 17.93,16zM22.92,10.95c-0.84,-1.18 -0.84,-2.71 0,-3.89l-1.68,-1.69c-2.02,2.02 -2.02,5.07 0,7.27L22.92,10.95zM9,13c2.21,0 4,-1.79 4,-4c0,-2.21 -1.79,-4 -4,-4S5,6.79 5,9C5,11.21 6.79,13 9,13zM15.39,15.56C13.71,14.7 11.53,14 9,14c-2.53,0 -4.71,0.7 -6.39,1.56C1.61,16.07 1,17.1 1,18.22V21h16v-2.78C17,17.1 16.39,16.07 15.39,15.56z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/troubleshoot.xml b/compose/material/material/icons/generator/raw-icons/sharp/troubleshoot.xml
new file mode 100644
index 0000000..97931d3
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/troubleshoot.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22,20.59l-4.69,-4.69C18.37,14.55 19,12.85 19,11c0,-4.42 -3.58,-8 -8,-8c-4.08,0 -7.44,3.05 -7.93,7h2.02C5.57,7.17 8.03,5 11,5c3.31,0 6,2.69 6,6s-2.69,6 -6,6c-2.42,0 -4.5,-1.44 -5.45,-3.5H3.4C4.45,16.69 7.46,19 11,19c1.85,0 3.55,-0.63 4.9,-1.69L20.59,22L22,20.59z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8.43,9.69l1.22,5.31l1.64,0l1.26,-3.78l0.95,2.28l2,0l0,-1.5l-1,0l-1.25,-3l-1.54,0l-1.12,3.37l-1.24,-5.37l-1.65,0l-1.25,4l-5.45,0l0,1.5l6.55,0z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/tungsten.xml b/compose/material/material/icons/generator/raw-icons/sharp/tungsten.xml
index 98a63a7..54ae6a7 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/tungsten.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/tungsten.xml
@@ -15,10 +15,10 @@
       android:pathData="M19,11h3v2h-3z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M15.8941,17.8014l1.4071,-1.4071l2.1213,2.1213l-1.4071,1.4071z"/>
+      android:pathData="M15.894,17.801l1.407,-1.407l2.121,2.121l-1.407,1.407z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M4.5842,18.5085l2.1213,-2.1213l1.4071,1.4071l-2.1213,2.1213z"/>
+      android:pathData="M4.584,18.509l2.121,-2.121l1.407,1.407l-2.121,2.121z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M15,8.02V3H9v5.02C7.79,8.94 7,10.37 7,12c0,2.76 2.24,5 5,5s5,-2.24 5,-5C17,10.37 16.21,8.94 15,8.02zM11,5h2v2.1C12.68,7.04 12.34,7 12,7s-0.68,0.04 -1,0.1V5z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/type_specimen.xml b/compose/material/material/icons/generator/raw-icons/sharp/type_specimen.xml
new file mode 100644
index 0000000..7f4f858
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/type_specimen.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,6l-2,0l0,16l16,0l0,-2l-14,0z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22,2H6v16h16V2zM16.63,14.5l-0.8,-2.3h-3.63l-0.82,2.3H9.81l3.38,-9h1.61l3.38,9H16.63z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.96,7.17l-1.31,3.72l2.69,0l-1.3,-3.72z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/unfold_less_double.xml b/compose/material/material/icons/generator/raw-icons/sharp/unfold_less_double.xml
new file mode 100644
index 0000000..92f9c80
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/unfold_less_double.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.58,1.41l-1.42,-1.41l-3.17,3.17l-3.17,-3.17l-1.41,1.41l4.58,4.59z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.58,6.41l-1.42,-1.41l-3.17,3.17l-3.17,-3.17l-1.41,1.41l4.58,4.59z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7.42,17.59l1.42,1.41l3.17,-3.17l3.17,3.17l1.41,-1.41l-4.58,-4.59z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7.42,22.59l1.42,1.41l3.17,-3.17l3.17,3.17l1.41,-1.41l-4.58,-4.59z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/unfold_more_double.xml b/compose/material/material/icons/generator/raw-icons/sharp/unfold_more_double.xml
new file mode 100644
index 0000000..4d100fe
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/unfold_more_double.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,7.83L15.17,11l1.41,-1.41L12,5L7.41,9.59L8.83,11L12,7.83zM12,2.83L15.17,6l1.41,-1.41L12,0L7.41,4.59L8.83,6L12,2.83zM12,21.17L8.83,18l-1.41,1.41L12,24l4.59,-4.59L15.17,18L12,21.17zM12,16.17L8.83,13l-1.41,1.41L12,19l4.59,-4.59L15.17,13L12,16.17z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/video_chat.xml b/compose/material/material/icons/generator/raw-icons/sharp/video_chat.xml
new file mode 100644
index 0000000..c50f426
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/video_chat.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2,2v20l4,-4h16V2H2zM17,13l-2,-1.99V14H7V6h8v2.99L17,7V13z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/view_comfy.xml b/compose/material/material/icons/generator/raw-icons/sharp/view_comfy.xml
index cc452d4..7cf71d3 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/view_comfy.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/view_comfy.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3,9h4L7,5L3,5v4zM3,14h4v-4L3,10v4zM8,14h4v-4L8,10v4zM13,14h4v-4h-4v4zM8,9h4L12,5L8,5v4zM13,5v4h4L17,5h-4zM18,14h4v-4h-4v4zM3,19h4v-4L3,15v4zM8,19h4v-4L8,15v4zM13,19h4v-4h-4v4zM18,19h4v-4h-4v4zM18,5v4h4L22,5h-4z"/>
+      android:pathData="M2,4v7h20V4H2zM10,20h12v-7H10V20zM2,20h6v-7H2V20z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/view_compact.xml b/compose/material/material/icons/generator/raw-icons/sharp/view_compact.xml
index fba7877..f2330a0 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/view_compact.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/view_compact.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3,19h6v-7L3,12v7zM10,19h12v-7L10,12v7zM3,5v6h19L22,5L3,5z"/>
+      android:pathData="M4,18h2.5v-2.5H4V18zM4,13.25h2.5v-2.5H4V13.25zM4,8.5h2.5V6H4V8.5zM17.5,6v2.5H20V6H17.5zM13,8.5h2.5V6H13V8.5zM17.5,18H20v-2.5h-2.5V18zM17.5,13.25H20v-2.5h-2.5V13.25zM8.5,18H11v-2.5H8.5V18zM13,18h2.5v-2.5H13V18zM8.5,8.5H11V6H8.5V8.5zM13,13.25h2.5v-2.5H13V13.25zM8.5,13.25H11v-2.5H8.5V13.25z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/wb_twilight.xml b/compose/material/material/icons/generator/raw-icons/sharp/wb_twilight.xml
index 8431091..474dbed 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/wb_twilight.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/wb_twilight.xml
@@ -6,7 +6,7 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M16.9552,8.662l2.1207,-2.1222l1.4148,1.4138l-2.1207,2.1222z"/>
+      android:pathData="M16.955,8.662l2.121,-2.122l1.415,1.414l-2.121,2.122z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M2,18h20v2h-20z"/>
@@ -15,7 +15,7 @@
       android:pathData="M11,4h2v3h-2z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3.5425,7.9248l1.4142,-1.4142l2.1213,2.1213l-1.4142,1.4142z"/>
+      android:pathData="M3.543,7.925l1.414,-1.414l2.121,2.121l-1.414,1.414z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M5,16h14c0,-3.87 -3.13,-7 -7,-7S5,12.13 5,16z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/web_stories.xml b/compose/material/material/icons/generator/raw-icons/sharp/web_stories.xml
new file mode 100644
index 0000000..62a83f3
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/web_stories.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,4c1.1,0 2,0 2,0v16c0,0 -0.9,0 -2,0V4zM2,2v20h13V2H2zM21,18c0.83,0 1.5,0 1.5,0V6c0,0 -0.67,0 -1.5,0V18z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/window.xml b/compose/material/material/icons/generator/raw-icons/sharp/window.xml
index c63cbaf..0629dca 100644
--- a/compose/material/material/icons/generator/raw-icons/sharp/window.xml
+++ b/compose/material/material/icons/generator/raw-icons/sharp/window.xml
@@ -6,5 +6,14 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M22,2H2v20h20V2zM20,11h-7V4h7V11zM11,4v7H4V4H11zM4,13h7v7H4V13zM13,20v-7h7v7H13z"/>
+      android:pathData="M3,3h8v8h-8z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,3h8v8h-8z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3,13h8v8h-8z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,13h8v8h-8z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/sharp/woman_2.xml b/compose/material/material/icons/generator/raw-icons/sharp/woman_2.xml
new file mode 100644
index 0000000..5e0763d
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/sharp/woman_2.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.41,7l-2.82,0l-3.59,9l3.5,0l0,6l3,0l0,-6l3.5,0z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/account_box.xml b/compose/material/material/icons/generator/raw-icons/twotone/account_box.xml
index 5e89981..bc1bdf4 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/account_box.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/account_box.xml
@@ -6,10 +6,13 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M5,19h14L19,5L5,5v14zM12,6c1.65,0 3,1.35 3,3s-1.35,3 -3,3 -3,-1.35 -3,-3 1.35,-3 3,-3zM6,16.47c0,-2.5 3.97,-3.58 6,-3.58s6,1.08 6,3.58L18,18L6,18v-1.53z"
+      android:pathData="M5,17.86C6.8,16.09 9.27,15 12,15s5.2,1.09 7,2.86V5H5V17.86zM12,6c1.93,0 3.5,1.57 3.5,3.5S13.93,13 12,13c-1.93,0 -3.5,-1.57 -3.5,-3.5S10.07,6 12,6z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,12c1.65,0 3,-1.35 3,-3s-1.35,-3 -3,-3 -3,1.35 -3,3 1.35,3 3,3zM12,8c0.55,0 1,0.45 1,1s-0.45,1 -1,1 -1,-0.45 -1,-1 0.45,-1 1,-1zM19,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM19,19L5,19L5,5h14v14zM18,16.47c0,-2.5 -3.97,-3.58 -6,-3.58s-6,1.08 -6,3.58L6,18h12v-1.53zM8.31,16c0.69,-0.56 2.38,-1.12 3.69,-1.12s3.01,0.56 3.69,1.12L8.31,16z"/>
+      android:pathData="M19,3H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5C21,3.9 20.1,3 19,3zM17,19H7v-0.24C8.42,17.62 10.16,17 12,17s3.58,0.62 5,1.76V19zM19,17.86C17.2,16.09 14.73,15 12,15s-5.2,1.09 -7,2.86V5h14V17.86z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,13c1.93,0 3.5,-1.57 3.5,-3.5S13.93,6 12,6c-1.93,0 -3.5,1.57 -3.5,3.5S10.07,13 12,13zM12,8c0.83,0 1.5,0.67 1.5,1.5S12.83,11 12,11s-1.5,-0.67 -1.5,-1.5S11.17,8 12,8z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/account_circle.xml b/compose/material/material/icons/generator/raw-icons/twotone/account_circle.xml
index e7d5dc2..f7abdd3 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/account_circle.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/account_circle.xml
@@ -6,10 +6,13 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,4c-4.41,0 -8,3.59 -8,8 0,1.82 0.62,3.49 1.64,4.83 1.43,-1.74 4.9,-2.33 6.36,-2.33s4.93,0.59 6.36,2.33C19.38,15.49 20,13.82 20,12c0,-4.41 -3.59,-8 -8,-8zM12,13c-1.94,0 -3.5,-1.56 -3.5,-3.5S10.06,6 12,6s3.5,1.56 3.5,3.5S13.94,13 12,13z"
+      android:pathData="M12,4c-4.42,0 -8,3.58 -8,8c0,1.95 0.7,3.73 1.86,5.12C7.55,15.8 9.68,15 12,15s4.45,0.8 6.14,2.12C19.3,15.73 20,13.95 20,12C20,7.58 16.42,4 12,4zM12,13c-1.93,0 -3.5,-1.57 -3.5,-3.5C8.5,7.57 10.07,6 12,6s3.5,1.57 3.5,3.5C15.5,11.43 13.93,13 12,13z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM7.07,18.28c0.43,-0.9 3.05,-1.78 4.93,-1.78s4.51,0.88 4.93,1.78C15.57,19.36 13.86,20 12,20s-3.57,-0.64 -4.93,-1.72zM18.36,16.83c-1.43,-1.74 -4.9,-2.33 -6.36,-2.33s-4.93,0.59 -6.36,2.33C4.62,15.49 4,13.82 4,12c0,-4.41 3.59,-8 8,-8s8,3.59 8,8c0,1.82 -0.62,3.49 -1.64,4.83zM12,6c-1.94,0 -3.5,1.56 -3.5,3.5S10.06,13 12,13s3.5,-1.56 3.5,-3.5S13.94,6 12,6zM12,11c-0.83,0 -1.5,-0.67 -1.5,-1.5S11.17,8 12,8s1.5,0.67 1.5,1.5S12.83,11 12,11z"/>
+      android:pathData="M12,2C6.48,2 2,6.48 2,12c0,5.52 4.48,10 10,10s10,-4.48 10,-10C22,6.48 17.52,2 12,2zM12,20c-1.74,0 -3.34,-0.56 -4.65,-1.5C8.66,17.56 10.26,17 12,17s3.34,0.56 4.65,1.5C15.34,19.44 13.74,20 12,20zM18.14,17.12C16.45,15.8 14.32,15 12,15s-4.45,0.8 -6.14,2.12C4.7,15.73 4,13.95 4,12c0,-4.42 3.58,-8 8,-8s8,3.58 8,8C20,13.95 19.3,15.73 18.14,17.12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,5.93c-1.93,0 -3.5,1.57 -3.5,3.5c0,1.93 1.57,3.5 3.5,3.5s3.5,-1.57 3.5,-3.5C15.5,7.5 13.93,5.93 12,5.93zM12,10.93c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5s1.5,0.67 1.5,1.5S12.83,10.93 12,10.93z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/add_home.xml b/compose/material/material/icons/generator/raw-icons/twotone/add_home.xml
new file mode 100644
index 0000000..98539e8
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/add_home.xml
@@ -0,0 +1,18 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,5.5L6,10v9h5.08c-0.62,-4.3 2.72,-8 6.92,-8v-1L12,5.5z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,19v-9l6,-4.5l6,4.5v1c0.7,0 1.37,0.1 2,0.29V9l-8,-6L4,9v12h7.68c-0.3,-0.62 -0.5,-1.29 -0.6,-2H6z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18,13c-2.76,0 -5,2.24 -5,5s2.24,5 5,5s5,-2.24 5,-5S20.76,13 18,13zM21,18.5h-2.5V21h-1v-2.5H15v-1h2.5V15h1v2.5H21V18.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/add_home_work.xml b/compose/material/material/icons/generator/raw-icons/twotone/add_home_work.xml
new file mode 100644
index 0000000..2ad3b49
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/add_home_work.xml
@@ -0,0 +1,29 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,5v1.4l5,3.57v1.11c0.33,-0.05 0.66,-0.08 1,-0.08c1.08,0 2.09,0.25 3,0.68V5H12zM19,9h-2V7h2V9z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,5h9v6.68c0.75,0.36 1.43,0.84 2,1.42V3H10v1.97l2,1.43V5z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,7h2v2h-2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8,6l-7,5v10h6v-5h2v5h2.68C11.25,20.09 11,19.08 11,18v-4H5v5H3v-6.97l5,-3.57l5,3.57v1.08c0.57,-0.59 1.25,-1.07 2,-1.42V11L8,6z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8,8.46l-5,3.57V19h2v-5h6v4c0,-1.91 0.76,-3.63 2,-4.89v-1.08L8,8.46z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18,13c-2.76,0 -5,2.24 -5,5s2.24,5 5,5s5,-2.24 5,-5S20.76,13 18,13zM21,18.5h-2.5V21h-1v-2.5H15v-1h2.5V15h1v2.5H21V18.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/arrow_outward.xml b/compose/material/material/icons/generator/raw-icons/twotone/arrow_outward.xml
new file mode 100644
index 0000000..842e1d7
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/arrow_outward.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,6l0,2l8.59,0l-9.59,9.59l1.41,1.41l9.59,-9.59l0,8.59l2,0l0,-12z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/assist_walker.xml b/compose/material/material/icons/generator/raw-icons/twotone/assist_walker.xml
new file mode 100644
index 0000000..cca770a
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/assist_walker.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.5,4.5m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.77,17.72l-0.64,-6.37C19.06,10.58 18.41,10 17.64,10H16c-1.5,-0.02 -2.86,-0.54 -3.76,-1.44l-2,-1.98C10.08,6.42 9.62,6 8.83,6C8.32,6 7.81,6.2 7.42,6.59L4.08,9.91c-0.53,0.68 -0.51,1.57 -0.21,2.13l1.43,2.8l-3.15,4.05l1.57,1.24l3.68,-4.73l-0.17,-1.36L8,14.75V20h2v-6.12l-2.12,-2.12l2.36,-2.36c0.94,0.94 1.72,1.82 3.59,2.32L13,20h1.5l0.41,-3.5h3.18l0.14,1.22c-0.44,0.26 -0.73,0.74 -0.73,1.28c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5C20.5,18.46 20.21,17.98 19.77,17.72zM15.09,15l0.41,-3.5h2l0.41,3.5H15.09z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/auto_fix_high.xml b/compose/material/material/icons/generator/raw-icons/twotone/auto_fix_high.xml
index 8bdffc4..80ebe93 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/auto_fix_high.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/auto_fix_high.xml
@@ -6,7 +6,7 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M4.4149,18.1666l7.17,-7.17l1.4142,1.4142l-7.17,7.17z"
+      android:pathData="M4.415,18.167l7.17,-7.17l1.414,1.414l-7.17,7.17z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/auto_fix_normal.xml b/compose/material/material/icons/generator/raw-icons/twotone/auto_fix_normal.xml
index 681023b..4bc99d1 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/auto_fix_normal.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/auto_fix_normal.xml
@@ -6,7 +6,7 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M4.4149,18.1666l7.17,-7.17l1.4142,1.4142l-7.17,7.17z"
+      android:pathData="M4.415,18.167l7.17,-7.17l1.414,1.414l-7.17,7.17z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/auto_fix_off.xml b/compose/material/material/icons/generator/raw-icons/twotone/auto_fix_off.xml
index 29f7b72..9307d0f 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/auto_fix_off.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/auto_fix_off.xml
@@ -6,7 +6,7 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M4.4169,18.1737l5.4659,-5.4659l1.4142,1.4142l-5.4659,5.4659z"
+      android:pathData="M4.417,18.174l5.466,-5.466l1.414,1.414l-5.466,5.466z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/bar_chart.xml b/compose/material/material/icons/generator/raw-icons/twotone/bar_chart.xml
index 2ddcb35..bbc825d 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/bar_chart.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/bar_chart.xml
@@ -6,5 +6,11 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M5,9.2h3L8,19L5,19zM16.2,13L19,13v6h-2.8zM10.6,5h2.8v14h-2.8z"/>
+      android:pathData="M4,9h4v11h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,13h4v7h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,4h4v16h-4z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/biotech.xml b/compose/material/material/icons/generator/raw-icons/twotone/biotech.xml
index 7eba93b..dbdbcc3 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/biotech.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/biotech.xml
@@ -6,7 +6,7 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M11.9248,4.8613l0.9397,-0.342l1.71,4.6985l-0.9397,0.342z"
+      android:pathData="M11.925,4.861l0.94,-0.342l1.71,4.699l-0.94,0.342z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/blind.xml b/compose/material/material/icons/generator/raw-icons/twotone/blind.xml
new file mode 100644
index 0000000..803b7dc
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/blind.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11.5,3.5m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.13,7.12c-0.17,-0.35 -0.44,-0.65 -0.8,-0.85C10.72,5.91 9.99,5.93 9.4,6.24l0,-0.01L4,9.3V14h2v-3.54l1.5,-0.85C7.18,10.71 7,11.85 7,13v5.33L4.4,21.8L6,23l3,-4l0.22,-3.54L11,18v5h2v-6.5l-1.97,-2.81c-0.04,-0.52 -0.14,-1.76 0.45,-3.4c0.75,1.14 1.88,1.98 3.2,2.41L20.63,23l0.87,-0.5L16.02,13H17v-2c-0.49,0 -2.88,0.17 -4.08,-2.21"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/construction.xml b/compose/material/material/icons/generator/raw-icons/twotone/construction.xml
index 1828ec8..2c31758 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/construction.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/construction.xml
@@ -6,7 +6,7 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M13.7827,15.1719l2.1213,-2.1213l5.9962,5.9962l-2.1213,2.1213z"/>
+      android:pathData="M13.783,15.172l2.121,-2.121l5.996,5.996l-2.121,2.121z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M17.5,10c1.93,0 3.5,-1.57 3.5,-3.5c0,-0.58 -0.16,-1.12 -0.41,-1.6l-2.7,2.7L16.4,6.11l2.7,-2.7C18.62,3.16 18.08,3 17.5,3C15.57,3 14,4.57 14,6.5c0,0.41 0.08,0.8 0.21,1.16l-1.85,1.85l-1.78,-1.78l0.71,-0.71L9.88,5.61L12,3.49c-1.17,-1.17 -3.07,-1.17 -4.24,0L4.22,7.03l1.41,1.41H2.81L2.1,9.15l3.54,3.54l0.71,-0.71V9.15l1.41,1.41l0.71,-0.71l1.78,1.78l-7.41,7.41l2.12,2.12L16.34,9.79C16.7,9.92 17.09,10 17.5,10z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/contact_emergency.xml b/compose/material/material/icons/generator/raw-icons/twotone/contact_emergency.xml
new file mode 100644
index 0000000..c2b4e8c
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/contact_emergency.xml
@@ -0,0 +1,21 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2,19h0.08c1.38,-2.39 3.96,-4 6.92,-4s5.54,1.61 6.92,4H22V5H2V19zM15.03,8.15l0.75,-1.3l1.47,0.85V6h1.5v1.7l1.47,-0.85l0.75,1.3L19.5,9l1.47,0.85l-0.75,1.3l-1.47,-0.85V12h-1.5v-1.7l-1.47,0.85l-0.75,-1.3L16.5,9L15.03,8.15zM9,8c1.65,0 3,1.35 3,3s-1.35,3 -3,3s-3,-1.35 -3,-3S7.35,8 9,8z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,14c1.65,0 3,-1.35 3,-3s-1.35,-3 -3,-3s-3,1.35 -3,3S7.35,14 9,14zM9,10c0.54,0 1,0.46 1,1s-0.46,1 -1,1s-1,-0.46 -1,-1S8.46,10 9,10z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22,3H2C0.9,3 0,3.9 0,5v14c0,1.1 0.9,2 2,2h20c1.1,0 1.99,-0.9 1.99,-2L24,5C24,3.9 23.1,3 22,3zM4.54,19c1.1,-1.22 2.69,-2 4.46,-2s3.36,0.78 4.46,2H4.54zM22,19h-6.08c-1.38,-2.39 -3.96,-4 -6.92,-4s-5.54,1.61 -6.92,4H2V5h20V19z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15.78,11.15l1.47,-0.85l0,1.7l1.5,0l0,-1.7l1.47,0.85l0.75,-1.3l-1.47,-0.85l1.47,-0.85l-0.75,-1.3l-1.47,0.85l0,-1.7l-1.5,0l0,1.7l-1.47,-0.85l-0.75,1.3l1.47,0.85l-1.47,0.85z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/crop_16_9.xml b/compose/material/material/icons/generator/raw-icons/twotone/crop_16_9.xml
index f66421e..7bc13cb 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/crop_16_9.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/crop_16_9.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,6L5,6c-1.1,0 -2,0.9 -2,2v8c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,8c0,-1.1 -0.9,-2 -2,-2zM19,16L5,16L5,8h14v8z"/>
+      android:pathData="M19,7H5C3.9,7 3,7.9 3,9v6c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V9C21,7.9 20.1,7 19,7zM19,15H5V9h14V15z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/crop_3_2.xml b/compose/material/material/icons/generator/raw-icons/twotone/crop_3_2.xml
index 2984303..acaa273 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/crop_3_2.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/crop_3_2.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,4L5,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.9,-2 -2,-2zM19,18L5,18L5,6h14v12z"/>
+      android:pathData="M19,6H5C3.9,6 3,6.9 3,8v8c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V8C21,6.9 20.1,6 19,6zM19,16H5V8h14V16z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/crop_5_4.xml b/compose/material/material/icons/generator/raw-icons/twotone/crop_5_4.xml
index 9ebb272..e9fc8e8 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/crop_5_4.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/crop_5_4.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,5L5,5c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,7c0,-1.1 -0.9,-2 -2,-2zM19,17L5,17L5,7h14v10z"/>
+      android:pathData="M19,4H5C3.9,4 3,4.9 3,6v12c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V6C21,4.9 20.1,4 19,4zM19,18H5V6h14V18z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/crop_7_5.xml b/compose/material/material/icons/generator/raw-icons/twotone/crop_7_5.xml
index 03c21aa..d151917 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/crop_7_5.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/crop_7_5.xml
@@ -6,5 +6,5 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,7L5,7c-1.1,0 -2,0.9 -2,2v6c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,9c0,-1.1 -0.9,-2 -2,-2zM19,15L5,15L5,9h14v6z"/>
+      android:pathData="M19,5H5C3.9,5 3,5.9 3,7v10c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V7C21,5.9 20.1,5 19,5zM19,17H5V7h14V17z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/dataset.xml b/compose/material/material/icons/generator/raw-icons/twotone/dataset.xml
new file mode 100644
index 0000000..271a56c
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/dataset.xml
@@ -0,0 +1,27 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M5,19h14V5H5V19zM13,7h4v4h-4V7zM13,13h4v4h-4V13zM7,7h4v4H7V7zM7,13h4v4H7V13z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,13h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,13h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19,3H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5C21,3.9 20.1,3 19,3zM19,19H5V5h14V19z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,7h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,7h4v4h-4z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/dataset_linked.xml b/compose/material/material/icons/generator/raw-icons/twotone/dataset_linked.xml
new file mode 100644
index 0000000..84a0e9b
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/dataset_linked.xml
@@ -0,0 +1,33 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M5,5v14h3.09C8.04,18.67 8,18.34 8,18s0.04,-0.67 0.09,-1H7v-4h3.69c0.95,-0.63 2.09,-1 3.31,-1h5V5H5zM11,11H7V7h4V11zM13,11V7h4v4H13z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,17h1.09c0.28,-1.67 1.24,-3.1 2.6,-4H7V17z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M5,19V5h14v7h1c0.34,0 0.67,0.04 1,0.09V5c0,-1.1 -0.9,-2 -2,-2H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h3.81c-0.35,-0.61 -0.6,-1.28 -0.72,-2H5z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,7h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,7h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,20h-2c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2h2v-2h-2c-2.21,0 -4,1.79 -4,4c0,2.21 1.79,4 4,4h2V20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,14h-2v2h2c1.1,0 2,0.9 2,2s-0.9,2 -2,2h-2v2h2c2.21,0 4,-1.79 4,-4C24,15.79 22.21,14 20,14z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,19l0,-2l-3,0l-3,0l0,2l5,0z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/design_services.xml b/compose/material/material/icons/generator/raw-icons/twotone/design_services.xml
index 4fcd251..7d77635 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/design_services.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/design_services.xml
@@ -21,7 +21,7 @@
       android:fillAlpha="0.3"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M16.0207,6.5581l1.4142,-1.4142l1.4142,1.4142l-1.4142,1.4142z"
+      android:pathData="M16.021,6.558l1.414,-1.414l1.414,1.414l-1.414,1.414z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/diversity_1.xml b/compose/material/material/icons/generator/raw-icons/twotone/diversity_1.xml
new file mode 100644
index 0000000..0579e9a
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/diversity_1.xml
@@ -0,0 +1,43 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,14m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.22,17.58C0.48,17.9 0,18.62 0,19.43V21l4.5,0v-1.61c0,-0.83 0.23,-1.61 0.63,-2.29C4.76,17.04 4.39,17 4,17C3.01,17 2.07,17.21 1.22,17.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,14m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.78,17.58C21.93,17.21 20.99,17 20,17c-0.39,0 -0.76,0.04 -1.13,0.1c0.4,0.68 0.63,1.46 0.63,2.29V21l4.5,0v-1.57C24,18.62 23.52,17.9 22.78,17.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.24,16.65c-1.17,-0.52 -2.61,-0.9 -4.24,-0.9c-1.63,0 -3.07,0.39 -4.24,0.9C6.68,17.13 6,18.21 6,19.39V21h12v-1.61C18,18.21 17.32,17.13 16.24,16.65zM8.07,19c0.09,-0.23 0.27,-0.42 0.49,-0.52c1.1,-0.49 2.26,-0.73 3.43,-0.73c1.18,0 2.33,0.25 3.43,0.73c0.23,0.1 0.4,0.29 0.49,0.52H8.07z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,12c0,1.66 1.34,3 3,3s3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3S9,10.34 9,12zM13,12c0,0.55 -0.45,1 -1,1s-1,-0.45 -1,-1s0.45,-1 1,-1S13,11.45 13,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2.48,10.86C2.17,10.1 2,9.36 2,8.6C2,6.02 4.02,4 6.6,4c2.68,0 3.82,1.74 5.4,3.59C13.57,5.76 14.7,4 17.4,4C19.98,4 22,6.02 22,8.6c0,0.76 -0.17,1.5 -0.48,2.26c0.65,0.31 1.18,0.82 1.53,1.44C23.65,11.1 24,9.88 24,8.6C24,4.9 21.1,2 17.4,2c-2.09,0 -4.09,0.97 -5.4,2.51C10.69,2.97 8.69,2 6.6,2C2.9,2 0,4.9 0,8.6c0,1.28 0.35,2.5 0.96,3.7C1.31,11.68 1.84,11.17 2.48,10.86z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.4,4c-2.68,0 -3.82,1.74 -5.4,3.59C10.44,5.75 9.3,4 6.6,4C4.02,4 2,6.02 2,8.6c0,0.76 0.17,1.5 0.48,2.26C2.94,10.64 3.45,10.5 4,10.5c1.93,0 3.5,1.57 3.5,3.5c0,0.45 -0.09,0.87 -0.24,1.26c0.97,-0.42 1.96,-0.69 2.98,-0.84C9.49,13.87 9,13 9,12c0,-1.66 1.34,-3 3,-3c1.66,0 3,1.34 3,3c0,1 -0.49,1.87 -1.24,2.42c1.02,0.15 2.02,0.43 2.98,0.85c-0.15,-0.39 -0.24,-0.82 -0.24,-1.26c0,-1.93 1.57,-3.5 3.5,-3.5c0.55,0 1.06,0.14 1.52,0.36C21.83,10.1 22,9.36 22,8.6C22,6.02 19.98,4 17.4,4z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8.07,19.02h7.85c-0.09,-0.23 -0.27,-0.42 -0.49,-0.52c-1.1,-0.49 -2.26,-0.73 -3.43,-0.73c-1.18,0 -2.33,0.25 -3.43,0.73C8.34,18.6 8.17,18.79 8.07,19.02z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,12m-1,0a1,1 0,1 1,2 0a1,1 0,1 1,-2 0"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/diversity_2.xml b/compose/material/material/icons/generator/raw-icons/twotone/diversity_2.xml
new file mode 100644
index 0000000..68dea66
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/diversity_2.xml
@@ -0,0 +1,31 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2.5,17.97c-0.48,0.28 -0.64,0.89 -0.37,1.37s0.89,0.64 1.37,0.37c0.48,-0.28 0.64,-0.89 0.37,-1.37S2.98,17.69 2.5,17.97z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21.5,17.97c-0.48,-0.28 -1.09,-0.11 -1.37,0.37s-0.11,1.09 0.37,1.37c0.48,0.28 1.09,0.11 1.37,-0.37S21.98,18.24 21.5,17.97z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4m-1,0a1,1 0,1 1,2 0a1,1 0,1 1,-2 0"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10.1,15.9l1.42,-1.42C8.79,12.05 7,10.41 7,8.85C7,7.8 7.8,7 8.85,7c1.11,0 1.54,0.65 2.68,2h0.93c1.12,-1.31 1.53,-2 2.68,-2c0.87,0 1.55,0.54 1.77,1.32c0.35,-0.04 0.68,-0.06 1,-0.06c0.36,0 0.7,0.03 1.03,0.08C18.7,6.43 17.13,5 15.15,5c-0.12,0 -0.23,0.03 -0.35,0.04C14.92,4.71 15,4.37 15,4c0,-1.66 -1.34,-3 -3,-3S9,2.34 9,4c0,0.37 0.08,0.71 0.2,1.04C9.08,5.03 8.97,5 8.85,5C6.69,5 5,6.69 5,8.85C5,11.27 7.04,13.16 10.1,15.9zM12,3c0.55,0 1,0.45 1,1s-0.45,1 -1,1s-1,-0.45 -1,-1S11.45,3 12,3z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.5,16.24c-0.32,-0.18 -0.66,-0.29 -1,-0.35c0.07,-0.1 0.15,-0.18 0.21,-0.28c1.08,-1.87 0.46,-4.18 -1.41,-5.26c-2.09,-1.21 -4.76,-0.39 -8.65,0.9l0.52,1.94c3.47,-1.14 5.79,-1.88 7.14,-1.1c0.91,0.53 1.2,1.61 0.68,2.53c-0.56,0.96 -1.33,1 -3.07,1.32l-0.47,0.81c0.58,1.62 0.97,2.33 0.39,3.32c-0.53,0.91 -1.61,1.2 -2.53,0.68c-0.06,-0.03 -0.11,-0.09 -0.17,-0.13c-0.3,0.67 -0.64,1.24 -1.03,1.73c0.07,0.04 0.13,0.09 0.2,0.14c1.87,1.08 4.18,0.46 5.26,-1.41c0.06,-0.1 0.09,-0.21 0.14,-0.32c0.22,0.27 0.48,0.51 0.8,0.69c1.43,0.83 3.27,0.34 4.1,-1.1S23.93,17.06 22.5,16.24zM21.87,19.33c-0.28,0.48 -0.89,0.64 -1.37,0.37c-0.48,-0.28 -0.64,-0.89 -0.37,-1.37s0.89,-0.64 1.37,-0.37C21.98,18.24 22.14,18.86 21.87,19.33z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.32,14.01c-0.74,3.58 -1.27,5.95 -2.62,6.73c-0.91,0.53 -2,0.24 -2.53,-0.68c-0.56,-0.96 -0.2,-1.66 0.39,-3.32L7.1,15.93c-1.7,-0.31 -2.5,-0.33 -3.07,-1.32c-0.53,-0.91 -0.24,-2 0.68,-2.53c0.09,-0.05 0.19,-0.08 0.29,-0.11c-0.35,-0.56 -0.64,-1.17 -0.82,-1.85c-0.16,0.07 -0.32,0.14 -0.48,0.23c-1.87,1.08 -2.49,3.39 -1.41,5.26c0.06,0.1 0.14,0.18 0.21,0.28c-0.34,0.06 -0.68,0.17 -1,0.35c-1.43,0.83 -1.93,2.66 -1.1,4.1s2.66,1.93 4.1,1.1c0.32,-0.18 0.58,-0.42 0.8,-0.69c0.05,0.11 0.08,0.22 0.14,0.32c1.08,1.87 3.39,2.49 5.26,1.41c2.09,-1.21 2.71,-3.93 3.55,-7.94L12.32,14.01zM3.5,19.7c-0.48,0.28 -1.09,0.11 -1.37,-0.37s-0.11,-1.09 0.37,-1.37c0.48,-0.28 1.09,-0.11 1.37,0.37S3.98,19.42 3.5,19.7z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/diversity_3.xml b/compose/material/material/icons/generator/raw-icons/twotone/diversity_3.xml
new file mode 100644
index 0000000..bb41d74
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/diversity_3.xml
@@ -0,0 +1,22 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6.32,13.01c0.96,0.02 1.85,0.5 2.45,1.34C9.5,15.38 10.71,16 12,16c1.29,0 2.5,-0.62 3.23,-1.66c0.6,-0.84 1.49,-1.32 2.45,-1.34C16.96,11.78 14.08,11 12,11C9.93,11 7.04,11.78 6.32,13.01z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,13L4,13c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3s-3,1.34 -3,3C1,11.66 2.34,13 4,13z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,13L20,13c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3s-3,1.34 -3,3C17,11.66 18.34,13 20,13z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,10c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3S9,5.34 9,7C9,8.66 10.34,10 12,10z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21,14h-3.27c-0.77,0 -1.35,0.45 -1.68,0.92C16.01,14.98 14.69,17 12,17c-1.43,0 -3.03,-0.64 -4.05,-2.08C7.56,14.37 6.95,14 6.27,14H3c-1.1,0 -2,0.9 -2,2v4h7v-2.26c1.15,0.8 2.54,1.26 4,1.26s2.85,-0.46 4,-1.26V20h7v-4C23,14.9 22.1,14 21,14z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/emoji_objects.xml b/compose/material/material/icons/generator/raw-icons/twotone/emoji_objects.xml
index d5ecdae..2bbe738 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/emoji_objects.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/emoji_objects.xml
@@ -22,8 +22,8 @@
       android:pathData="M11.5,11h1v3h-1z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M9.6724,9.5808l0.7071,-0.7071l2.1213,2.1213l-0.7071,0.7071z"/>
+      android:pathData="M9.672,9.581l0.707,-0.707l2.121,2.121l-0.707,0.707z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12.2081,11.7123l-0.7071,-0.7071l2.1213,-2.1213l0.7071,0.7071z"/>
+      android:pathData="M12.208,11.712l-0.707,-0.707l2.121,-2.121l0.707,0.707z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/emoji_symbols.xml b/compose/material/material/icons/generator/raw-icons/twotone/emoji_symbols.xml
index 8366721..5c3024a 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/emoji_symbols.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/emoji_symbols.xml
@@ -12,7 +12,7 @@
       android:pathData="M6,11l2,0l0,-4l3,0l0,-2l-8,0l0,2l3,0z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12.4036,20.1819l7.7781,-7.7781l1.4142,1.4142l-7.7781,7.7781z"/>
+      android:pathData="M12.404,20.182l7.778,-7.778l1.414,1.414l-7.778,7.778z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M14.5,14.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/face_2.xml b/compose/material/material/icons/generator/raw-icons/twotone/face_2.xml
new file mode 100644
index 0000000..c227f2d
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/face_2.xml
@@ -0,0 +1,46 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6.02,5C6.01,5 6.01,5 6,5C3.79,5 2,6.79 2,9c0,0.55 0.12,1.07 0.32,1.54C2.89,8.29 4.22,6.35 6.02,5z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15.1,3.5C14.36,2.59 13.25,2 12,2S9.64,2.59 8.9,3.5C9.88,3.18 10.92,3 12,3S14.12,3.18 15.1,3.5z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,5.31c0,2.24 1.82,4.06 4.06,4.06c0.93,0 1.82,-0.32 2.53,-0.89C17.16,6.39 14.75,5.01 12.03,5C12.02,5.11 12,5.21 12,5.31z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2.5,16.12C2.19,16.68 2,17.31 2,18c0,2.21 1.79,4 4,4c0.44,0 0.85,-0.07 1.25,-0.2C5.02,20.59 3.31,18.56 2.5,16.12z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21.68,10.54C21.88,10.07 22,9.55 22,9c0,-2.21 -1.79,-4 -4,-4c-0.01,0 -0.01,0 -0.02,0C19.78,6.35 21.11,8.29 21.68,10.54z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.75,21.8C17.15,21.93 17.56,22 18,22c2.21,0 4,-1.79 4,-4c0,-0.69 -0.19,-1.32 -0.5,-1.88C20.69,18.56 18.98,20.59 16.75,21.8z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21.97,13.52c0,-0.01 0,-0.02 0,-0.04C23.21,12.38 24,10.78 24,9c0,-3.31 -2.69,-6 -6,-6c-0.26,0 -0.52,0.02 -0.78,0.06C16.19,1.23 14.24,0 12,0S7.81,1.23 6.78,3.06C6.52,3.02 6.26,3 6,3C2.69,3 0,5.69 0,9c0,1.78 0.79,3.38 2.02,4.48c0,0.01 0,0.02 0,0.04C0.79,14.62 0,16.22 0,18c0,3.31 2.69,6 6,6c1.39,0 2.67,-0.48 3.69,-1.28C10.43,22.9 11.2,23 12,23s1.57,-0.1 2.31,-0.28C15.33,23.52 16.61,24 18,24c3.31,0 6,-2.69 6,-6C24,16.22 23.21,14.62 21.97,13.52zM18,5c2.21,0 4,1.79 4,4c0,0.55 -0.12,1.07 -0.32,1.54c-0.57,-2.25 -1.9,-4.19 -3.7,-5.54C17.99,5 17.99,5 18,5zM18.6,8.48c-0.71,0.57 -1.6,0.89 -2.53,0.89C13.82,9.38 12,7.55 12,5.31c0,-0.1 0.02,-0.21 0.03,-0.31C14.75,5.01 17.16,6.39 18.6,8.48zM12,2c1.25,0 2.36,0.59 3.1,1.5C14.12,3.18 13.08,3 12,3S9.88,3.18 8.9,3.5C9.64,2.59 10.75,2 12,2zM2,9c0,-2.21 1.79,-4 4,-4c0.01,0 0.01,0 0.02,0c-1.8,1.35 -3.13,3.29 -3.7,5.54C2.12,10.07 2,9.55 2,9zM6,22c-2.21,0 -4,-1.79 -4,-4c0,-0.69 0.19,-1.32 0.5,-1.88c0.8,2.44 2.52,4.47 4.74,5.68C6.85,21.93 6.44,22 6,22zM12,21c-4.41,0 -8,-3.59 -8,-8c0,-3.72 2.56,-6.85 6,-7.74c0,0.02 0,0.03 0,0.05c0,3.34 2.72,6.06 6.06,6.06c1.26,0 2.45,-0.39 3.45,-1.09C19.82,11.14 20,12.05 20,13C20,17.41 16.41,21 12,21zM18,22c-0.44,0 -0.85,-0.07 -1.25,-0.2c2.23,-1.21 3.94,-3.24 4.74,-5.68c0.31,0.56 0.5,1.2 0.5,1.88C22,20.21 20.21,22 18,22z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,14m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,14m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/face_3.xml b/compose/material/material/icons/generator/raw-icons/twotone/face_3.xml
new file mode 100644
index 0000000..e9ed533
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/face_3.xml
@@ -0,0 +1,36 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.5,8c0.73,0 1.41,-0.25 1.99,-0.65C17.22,5.58 15.26,4.35 13,4.07V4.5C13,6.43 14.57,8 16.5,8z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,4.5V4.07C8.74,4.35 6.78,5.58 5.51,7.35C6.09,7.75 6.77,8 7.5,8C9.43,8 11,6.43 11,4.5z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2.75,15.8L2.19,22H12C7.82,22 4.25,19.44 2.75,15.8z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,22h9.81l-0.56,-6.2C19.75,19.44 16.18,22 12,22z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.91,11.96C22.39,6.32 17.66,2 12,2S1.61,6.32 1.09,11.96l-0.9,9.86C0.09,22.99 1.01,24 2.19,24h19.62c1.18,0 2.1,-1.01 1.99,-2.18L22.91,11.96zM13,4.07c2.26,0.28 4.22,1.51 5.49,3.28C17.91,7.75 17.23,8 16.5,8C14.57,8 13,6.43 13,4.5V4.07zM11,4.07V4.5C11,6.43 9.43,8 7.5,8C6.77,8 6.09,7.75 5.51,7.35C6.78,5.58 8.74,4.35 11,4.07zM4.54,9.13C5.41,9.68 6.43,10 7.5,10C9.36,10 11,9.07 12,7.65C13,9.07 14.64,10 16.5,10c1.07,0 2.09,-0.32 2.96,-0.87C19.8,10.02 20,10.99 20,12c0,4.41 -3.59,8 -8,8s-8,-3.59 -8,-8C4,10.99 4.2,10.02 4.54,9.13zM12,22H2.19l0.56,-6.2C4.25,19.44 7.82,22 12,22s7.75,-2.56 9.25,-6.2l0.56,6.2H12z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/face_4.xml b/compose/material/material/icons/generator/raw-icons/twotone/face_4.xml
new file mode 100644
index 0000000..dc163ed
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/face_4.xml
@@ -0,0 +1,31 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4.42,9.47L4.42,9.47C6.13,8.5 7.45,6.92 8.08,5.03C6.37,6 5.05,7.58 4.42,9.47z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.5,8c0.46,0 0.91,-0.05 1.34,-0.12C17.44,5.56 14.9,4 12,4c-0.46,0 -0.91,0.05 -1.34,0.12h0C12.06,6.44 14.6,8 17.5,8z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7.35,3.15C6.8,2.46 5.95,2 5,2C3.35,2 2,3.35 2,5c0,0.95 0.46,1.8 1.15,2.35C4.09,5.56 5.56,4.09 7.35,3.15z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,2c-0.96,0 -1.88,0.14 -2.75,0.39C8.37,0.96 6.8,0 5,0C2.24,0 0,2.24 0,5c0,1.8 0.96,3.37 2.39,4.25C2.14,10.12 2,11.04 2,12c0,5.52 4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,4c2.9,0 5.44,1.56 6.84,3.88C18.41,7.95 17.96,8 17.5,8c-2.9,0 -5.44,-1.56 -6.84,-3.88h0C11.09,4.05 11.54,4 12,4zM2,5c0,-1.65 1.35,-3 3,-3c0.95,0 1.8,0.46 2.35,1.15C5.56,4.09 4.09,5.56 3.15,7.35C2.46,6.8 2,5.95 2,5zM8.08,5.03C7.45,6.92 6.13,8.5 4.42,9.47h0C5.05,7.58 6.37,6 8.08,5.03zM12,20c-4.41,0 -8,-3.59 -8,-8c0,-0.05 0.01,-0.1 0.01,-0.15c2.6,-0.98 4.68,-2.99 5.74,-5.55C11.58,8.56 14.37,10 17.5,10c0.75,0 1.47,-0.09 2.17,-0.24C19.88,10.47 20,11.22 20,12C20,16.41 16.41,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/face_5.xml b/compose/material/material/icons/generator/raw-icons/twotone/face_5.xml
new file mode 100644
index 0000000..525db6c
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/face_5.xml
@@ -0,0 +1,76 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8c0,-1.12 0.23,-2.18 0.65,-3.15C4.74,8.94 4.86,9 5,9c0.28,0 0.5,-0.22 0.5,-0.5c0,-0.25 -0.19,-0.45 -0.43,-0.49c0.15,-0.26 0.32,-0.51 0.49,-0.75C5.53,7.34 5.5,7.41 5.5,7.5C5.5,7.78 5.72,8 6,8s0.5,-0.22 0.5,-0.5C6.5,7.22 6.28,7 6,7C5.87,7 5.75,7.05 5.66,7.13c0.52,-0.68 1.15,-1.28 1.86,-1.76C7.51,5.41 7.5,5.45 7.5,5.5C7.5,5.78 7.72,6 8,6s0.5,-0.22 0.5,-0.5c0,-0.24 -0.17,-0.43 -0.4,-0.48c0.16,-0.09 0.32,-0.17 0.49,-0.25C8.68,4.91 8.83,5 9,5c0.28,0 0.5,-0.22 0.5,-0.5c0,-0.03 -0.01,-0.06 -0.02,-0.09c0.39,-0.13 0.79,-0.23 1.21,-0.3C10.58,4.21 10.5,4.34 10.5,4.5C10.5,4.78 10.72,5 11,5s0.5,-0.22 0.5,-0.5c0,-0.21 -0.13,-0.38 -0.3,-0.46C11.46,4.01 11.73,4 12,4s0.54,0.01 0.8,0.04c-0.18,0.08 -0.3,0.25 -0.3,0.46C12.5,4.78 12.72,5 13,5s0.5,-0.22 0.5,-0.5c0,-0.16 -0.08,-0.29 -0.19,-0.38c0.41,0.07 0.82,0.17 1.21,0.3C14.51,4.44 14.5,4.47 14.5,4.5C14.5,4.78 14.72,5 15,5c0.17,0 0.32,-0.09 0.41,-0.23c0.17,0.08 0.33,0.16 0.49,0.25c-0.23,0.05 -0.4,0.24 -0.4,0.48C15.5,5.78 15.72,6 16,6s0.5,-0.22 0.5,-0.5c0,-0.05 -0.01,-0.09 -0.03,-0.13c0.71,0.48 1.34,1.08 1.86,1.76C18.25,7.05 18.13,7 18,7c-0.28,0 -0.5,0.22 -0.5,0.5C17.5,7.78 17.72,8 18,8s0.5,-0.22 0.5,-0.5c0,-0.09 -0.03,-0.16 -0.07,-0.23c0.18,0.24 0.34,0.49 0.49,0.75C18.69,8.05 18.5,8.25 18.5,8.5C18.5,8.78 18.72,9 19,9c0.14,0 0.26,-0.06 0.35,-0.15C19.77,9.82 20,10.88 20,12C20,16.41 16.41,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,5.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,5.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,5.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,6.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8,7.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,8.5m-0.5,0a0.5,0.5 0,1 1,1 0a0.5,0.5 0,1 1,-1 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/face_6.xml b/compose/material/material/icons/generator/raw-icons/twotone/face_6.xml
new file mode 100644
index 0000000..ca799ef
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/face_6.xml
@@ -0,0 +1,21 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6.55,7.66C7.06,6.64 8.09,6 9.24,6h5.53c1.14,0 2.17,0.64 2.68,1.66c0.94,1.87 1.66,2.08 2.26,2.24C18.78,6.51 15.68,4 12,4S5.22,6.51 4.29,9.9C4.97,9.72 5.62,9.52 6.55,7.66z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,4c3.68,0 6.78,2.51 7.71,5.9c-0.6,-0.16 -1.33,-0.37 -2.26,-2.24C16.94,6.64 15.91,6 14.76,6H9.24C8.09,6 7.06,6.64 6.55,7.66C5.62,9.52 4.97,9.72 4.29,9.9C5.22,6.51 8.32,4 12,4zM12,20c-4.41,0 -8,-3.59 -8,-8c0,-0.01 0,-0.02 0,-0.03c2.31,-0.22 3.43,-1.59 4.34,-3.41C8.51,8.21 8.85,8 9.24,8h5.53c0.38,0 0.72,0.21 0.89,0.55c0.9,1.8 1.99,3.19 4.34,3.41c0,0.01 0,0.02 0,0.03C20,16.41 16.41,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15,13m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/fire_hydrant_alt.xml b/compose/material/material/icons/generator/raw-icons/twotone/fire_hydrant_alt.xml
new file mode 100644
index 0000000..44fc7ec
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/fire_hydrant_alt.xml
@@ -0,0 +1,28 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4c-1.47,0 -2.75,0.81 -3.44,2h6.89C14.75,4.81 13.47,4 12,4z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,14m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,8H8v5H5v2h3v5h8v-5h3v-2h-3V8zM12,17.5c-1.93,0 -3.5,-1.57 -3.5,-3.5s1.57,-3.5 3.5,-3.5s3.5,1.57 3.5,3.5S13.93,17.5 12,17.5z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,10.5c-1.93,0 -3.5,1.57 -3.5,3.5s1.57,3.5 3.5,3.5s3.5,-1.57 3.5,-3.5S13.93,10.5 12,10.5zM12,15.5c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5s1.5,0.67 1.5,1.5S12.83,15.5 12,15.5z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19,11h-1V8h2V6h-2.35C16.83,3.67 14.61,2 12,2S7.17,3.67 6.35,6H4v2h2v3H5c-1.1,0 -2,0.9 -2,2v2c0,1.1 0.9,2 2,2h1v3H4v2h16v-2h-2v-3h1c1.1,0 2,-0.9 2,-2v-2C21,11.9 20.1,11 19,11zM12,4c1.47,0 2.75,0.81 3.44,2H8.56C9.25,4.81 10.53,4 12,4zM19,15h-3v5H8v-5H5v-2h3V8h8v5h3V15z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/fire_truck.xml b/compose/material/material/icons/generator/raw-icons/twotone/fire_truck.xml
new file mode 100644
index 0000000..6dce035
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/fire_truck.xml
@@ -0,0 +1,23 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3,16h1.78c0.55,-0.61 1.34,-1 2.22,-1s1.67,0.39 2.22,1H12v-3H3V16z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,16h0.78c0.55,-0.61 1.34,-1 2.22,-1s1.67,0.39 2.22,1H21v-3h-7V16z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.9,10.69l-1.44,-4.32C21.18,5.55 20.42,5 19.56,5H19V4c0,-0.55 -0.45,-1 -1,-1h-1c-0.55,0 -1,0.45 -1,1v1h-2c-1.1,0 -2,0.9 -2,2v4H1v5c0,1.1 0.9,2 2,2h1c0,1.66 1.34,3 3,3s3,-1.34 3,-3h4c0,1.66 1.34,3 3,3s3,-1.34 3,-3h3v-6.68C23,11.11 22.97,10.9 22.9,10.69zM7,19c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1s1,0.45 1,1S7.55,19 7,19zM12,16H9.22C8.67,15.39 7.89,15 7,15s-1.67,0.39 -2.22,1H3v-3h9V16zM14,7h5.56l1.33,4H14V7zM17,19c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1s1,0.45 1,1S17.55,19 17,19zM21,16h-1.78c-0.55,-0.61 -1.34,-1 -2.22,-1s-1.67,0.39 -2.22,1H14v-3h7V16z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,8.5h-1v-2h1V5H1v1.5h1v2H1V10h10V8.5zM5.25,8.5H3.5v-2h1.75V8.5zM8.5,8.5H6.75v-2H8.5V8.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/fluorescent.xml b/compose/material/material/icons/generator/raw-icons/twotone/fluorescent.xml
new file mode 100644
index 0000000..6fc6214
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/fluorescent.xml
@@ -0,0 +1,33 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,11h10v2h-10z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M5,15h14V9H5V15zM7,11h10v2H7V11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,2h2v3h-2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.286,6.399l1.79,-1.802l1.419,1.409l-1.79,1.802z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,19h2v3h-2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.29,17.71l1.79,1.8l1.42,-1.42l-1.8,-1.79z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3.495,6.009l1.407,-1.407l1.789,1.789l-1.407,1.407z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3.492,18.076l1.802,-1.79l1.409,1.419l-1.802,1.79z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/groups_2.xml b/compose/material/material/icons/generator/raw-icons/twotone/groups_2.xml
new file mode 100644
index 0000000..de313ee
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/groups_2.xml
@@ -0,0 +1,35 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15.43,15.48c-1.1,-0.49 -2.26,-0.73 -3.43,-0.73c-1.18,0 -2.33,0.25 -3.43,0.73c-0.23,0.1 -0.4,0.29 -0.49,0.52h7.85C15.83,15.77 15.66,15.58 15.43,15.48z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.94,8.79C12.86,8.33 12.47,8 12,8s-0.86,0.33 -0.94,0.79L10.86,10h2.28L12.94,8.79z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10.27,12h3.46c0.93,0 1.63,-0.83 1.48,-1.75l-0.3,-1.79C14.67,7.04 13.44,6 12,6S9.33,7.04 9.09,8.47l-0.3,1.79C8.64,11.17 9.34,12 10.27,12zM11.06,8.79C11.14,8.33 11.53,8 12,8s0.86,0.33 0.94,0.79l0.2,1.21h-2.28L11.06,8.79z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.66,11.11c-0.13,0.26 -0.18,0.57 -0.1,0.88c0.16,0.69 0.76,1.03 1.53,1c0,0 1.49,0 1.95,0c0.83,0 1.51,-0.58 1.51,-1.29c0,-0.14 -0.03,-0.27 -0.07,-0.4c-0.01,-0.03 -0.01,-0.05 0.01,-0.08c0.09,-0.16 0.14,-0.34 0.14,-0.53c0,-0.31 -0.14,-0.6 -0.36,-0.82c-0.03,-0.03 -0.03,-0.06 -0.02,-0.1c0.07,-0.2 0.07,-0.43 0.01,-0.65C6.1,8.69 5.71,8.4 5.27,8.38c-0.03,0 -0.05,-0.01 -0.07,-0.03C5.03,8.14 4.72,8 4.37,8C4.07,8 3.8,8.1 3.62,8.26C3.59,8.29 3.56,8.29 3.53,8.28c-0.14,-0.06 -0.3,-0.09 -0.46,-0.09c-0.65,0 -1.18,0.49 -1.24,1.12c0,0.02 -0.01,0.04 -0.03,0.06c-0.29,0.26 -0.46,0.65 -0.41,1.05c0.03,0.22 0.12,0.43 0.25,0.6C1.67,11.04 1.67,11.08 1.66,11.11z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.24,13.65c-1.17,-0.52 -2.61,-0.9 -4.24,-0.9c-1.63,0 -3.07,0.39 -4.24,0.9C6.68,14.13 6,15.21 6,16.39V18h12v-1.61C18,15.21 17.32,14.13 16.24,13.65zM8.07,16c0.09,-0.23 0.27,-0.42 0.49,-0.52c1.1,-0.49 2.26,-0.73 3.43,-0.73c1.18,0 2.33,0.25 3.43,0.73c0.23,0.1 0.4,0.29 0.49,0.52H8.07z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.22,14.58C0.48,14.9 0,15.62 0,16.43V18l4.5,0v-1.61c0,-0.83 0.23,-1.61 0.63,-2.29C4.76,14.04 4.39,14 4,14C3.01,14 2.07,14.21 1.22,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.78,14.58C21.93,14.21 20.99,14 20,14c-0.39,0 -0.76,0.04 -1.13,0.1c0.4,0.68 0.63,1.46 0.63,2.29V18l4.5,0v-1.57C24,15.62 23.52,14.9 22.78,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22,11v-0.5c0,-1.1 -0.9,-2 -2,-2h-2c-0.42,0 -0.65,0.48 -0.39,0.81l0.7,0.63C18.12,10.25 18,10.61 18,11c0,1.1 0.9,2 2,2S22,12.1 22,11z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/groups_3.xml b/compose/material/material/icons/generator/raw-icons/twotone/groups_3.xml
new file mode 100644
index 0000000..bec5cdb
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/groups_3.xml
@@ -0,0 +1,35 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15.43,15.48c-1.1,-0.49 -2.26,-0.73 -3.43,-0.73c-1.18,0 -2.33,0.25 -3.43,0.73c-0.23,0.1 -0.4,0.29 -0.49,0.52h7.85C15.83,15.77 15.66,15.58 15.43,15.48z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,9m-1,0a1,1 0,1 1,2 0a1,1 0,1 1,-2 0"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.24,13.65c-1.17,-0.52 -2.61,-0.9 -4.24,-0.9c-1.63,0 -3.07,0.39 -4.24,0.9C6.68,14.13 6,15.21 6,16.39V18h12v-1.61C18,15.21 17.32,14.13 16.24,13.65zM8.07,16c0.09,-0.23 0.27,-0.42 0.49,-0.52c1.1,-0.49 2.26,-0.73 3.43,-0.73c1.18,0 2.33,0.25 3.43,0.73c0.23,0.1 0.4,0.29 0.49,0.52H8.07z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.22,14.58C0.48,14.9 0,15.62 0,16.43V18l4.5,0v-1.61c0,-0.83 0.23,-1.61 0.63,-2.29C4.76,14.04 4.39,14 4,14C3.01,14 2.07,14.21 1.22,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.78,14.58C21.93,14.21 20.99,14 20,14c-0.39,0 -0.76,0.04 -1.13,0.1c0.4,0.68 0.63,1.46 0.63,2.29V18l4.5,0v-1.57C24,15.62 23.52,14.9 22.78,14.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,12c1.66,0 3,-1.34 3,-3c0,-1.66 -1.34,-3 -3,-3S9,7.34 9,9C9,10.66 10.34,12 12,12zM12,8c0.55,0 1,0.45 1,1s-0.45,1 -1,1s-1,-0.45 -1,-1S11.45,8 12,8z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1.497,11l2.503,-2.503l2.503,2.503l-2.503,2.503z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,9l-2.5,4l5,0z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/handyman.xml b/compose/material/material/icons/generator/raw-icons/twotone/handyman.xml
index 19bfd7b..28d99f7 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/handyman.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/handyman.xml
@@ -11,7 +11,7 @@
       android:fillAlpha="0.3"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M14.5955,15.3453l0.7071,-0.7071l4.2426,4.2426l-0.7071,0.7071z"
+      android:pathData="M14.596,15.345l0.707,-0.707l4.243,4.243l-0.707,0.707z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/home_work.xml b/compose/material/material/icons/generator/raw-icons/twotone/home_work.xml
index 898ae670..f016276 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/home_work.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/home_work.xml
@@ -6,16 +6,27 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M17,15h2v2h-2zM17,11h2v2h-2zM17,7h2v2h-2zM13.74,7l1.26,0.84V7z"/>
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M10,3v1.51l2,1.33V5h9v14h-4v2h6V3z"/>
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M8.17,5.7L15,10.25V21H1V10.48L8.17,5.7zM10,19h3v-7.84L8.17,8.09 3,11.38V19h3v-6h4v6z"/>
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M10,19h3v-7.84L8.17,8.09 3,11.38V19h3v-6h4z"
+      android:pathData="M17,11h2v2h-2v2h2v2h-2v2h4V5h-9v1.4l5,3.57V11zM17,7h2v2h-2V7z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,3l0,1.97l0.96,0.69l1.04,0.74l0,-1.4l9,0l0,14l-4,0l0,2l6,0l0,-18z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3,12l0,7l2,0l0,-5l6,0l0,5l2,0l0,-7l-5,-3.5z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,7h2v2h-2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,11h2v2h-2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,15h2v2h-2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M1,11v10h6v-5h2v5h6V11L8,6L1,11zM13,19h-2v-5H5v5H3v-7l5,-3.5l5,3.5V19z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/local_fire_department.xml b/compose/material/material/icons/generator/raw-icons/twotone/local_fire_department.xml
index 13b2c56..76e2e0a 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/local_fire_department.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/local_fire_department.xml
@@ -6,10 +6,15 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12.58,15.07c-0.2,0.92 -0.94,1.96 -2.38,2.31c2.9,2.37 5.64,0.2 5.56,-2.32c0,-2.05 -2.95,-3.21 -3.27,-5.08C11.62,12.24 12.9,13.64 12.58,15.07z"
+      android:pathData="M16.2,8.65C15.56,9.07 14.8,9.3 14.02,9.3c-2.06,0 -3.77,-1.55 -3.99,-3.55C8.13,7.35 6,9.84 6,13c0,1.79 0.79,3.4 2.04,4.5c-0.04,-0.34 -0.23,-1.88 1.13,-3.22l0,0L12,11.5l2.83,2.78l0,0c1.35,1.33 1.17,2.86 1.13,3.21l0,0.01C17.21,16.4 18,14.79 18,13C18,11.35 17.34,9.78 16.2,8.65z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19.48,12.35c-1.57,-4.08 -7.16,-4.3 -5.81,-10.23c0.1,-0.44 -0.37,-0.78 -0.75,-0.55C9.29,3.71 6.68,8 8.87,13.62c0.18,0.46 -0.36,0.89 -0.75,0.59c-1.81,-1.37 -2,-3.34 -1.84,-4.75c0.06,-0.52 -0.62,-0.77 -0.91,-0.34C4.69,10.16 4,11.84 4,14.37c0.38,5.6 5.11,7.32 6.81,7.54c2.43,0.31 5.06,-0.14 6.95,-1.87C19.84,18.11 20.6,15.03 19.48,12.35zM10.2,17.38c1.44,-0.35 2.18,-1.39 2.38,-2.31c0.33,-1.43 -0.96,-2.83 -0.09,-5.09c0.33,1.87 3.27,3.04 3.27,5.08C15.84,17.59 13.1,19.76 10.2,17.38z"/>
+      android:pathData="M12,14.31l-1.42,1.4C10.2,16.07 10,16.55 10,17.06c0,1.07 0.9,1.94 2,1.94s2,-0.87 2,-1.94c0,-0.51 -0.2,-0.99 -0.57,-1.36L12,14.31z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,6l-0.44,0.55c-0.42,0.52 -0.98,0.75 -1.54,0.75C13,7.3 12,6.52 12,5.3V2c0,0 -8,4 -8,11c0,4.42 3.58,8 8,8s8,-3.58 8,-8C20,10.04 18.39,7.38 16,6zM12,19c-1.1,0 -2,-0.87 -2,-1.94c0,-0.51 0.2,-0.99 0.58,-1.36l1.42,-1.4l1.43,1.4C13.8,16.07 14,16.55 14,17.06C14,18.13 13.1,19 12,19zM15.96,17.5L15.96,17.5c0.04,-0.36 0.22,-1.89 -1.13,-3.22l0,0L12,11.5l-2.83,2.78l0,0c-1.36,1.34 -1.17,2.88 -1.13,3.22C6.79,16.4 6,14.79 6,13c0,-3.16 2.13,-5.65 4.03,-7.25c0.23,1.99 1.93,3.55 3.99,3.55c0.78,0 1.54,-0.23 2.18,-0.66C17.34,9.78 18,11.35 18,13C18,14.79 17.21,16.4 15.96,17.5z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/macro_off.xml b/compose/material/material/icons/generator/raw-icons/twotone/macro_off.xml
new file mode 100644
index 0000000..11df0d6
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/macro_off.xml
@@ -0,0 +1,49 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10.11,5.69L9.3,5.13C9.12,5 8.89,4.93 8.66,4.93c-0.25,0 -0.47,0.1 -0.66,0.24l1.39,1.39C9.57,6.23 9.82,5.93 10.11,5.69z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15.83,8.9l-0.88,-0.42c-0.12,0.73 -0.51,1.36 -1.05,1.82l0.8,0.57c0.18,0.13 0.4,0.2 0.64,0.2c0.47,0 0.87,-0.28 1.05,-0.69c0.06,-0.14 0.09,-0.28 0.09,-0.44C16.49,9.49 16.23,9.1 15.83,8.9z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.89,5.68c0.55,0.46 0.94,1.1 1.06,1.84l0.87,-0.42c0.41,-0.2 0.66,-0.59 0.66,-1.03c0,-0.63 -0.51,-1.14 -1.14,-1.14c-0.24,0 -0.46,0.07 -0.64,0.2L13.89,5.68z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,5c0.36,0 0.71,0.07 1.03,0.19l0.11,-1.09C13.12,3.49 12.62,3 12,3s-1.12,0.49 -1.14,1.1l0.12,1.09C11.3,5.07 11.64,5 12,5z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15.94,18.77l-0.71,-0.71c-0.32,0.47 -0.59,0.97 -0.79,1.5C14.98,19.36 15.48,19.09 15.94,18.77z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M5.44,15.44c0.71,1.9 2.22,3.41 4.12,4.12C8.85,17.66 7.34,16.15 5.44,15.44z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8.66,4.93C8.9,4.93 9.12,5 9.3,5.13l0.81,0.56C9.82,5.93 9.57,6.23 9.39,6.56l1.66,1.66C11.03,8.14 11,8.08 11,8c0,-0.55 0.45,-1 1,-1s1,0.45 1,1s-0.45,1 -1,1c-0.08,0 -0.14,-0.03 -0.22,-0.04l4.06,4.06c1.49,-0.24 2.63,-1.53 2.63,-3.09c0,-0.71 -0.25,-1.39 -0.67,-1.93c0.43,-0.54 0.67,-1.22 0.67,-1.93c0,-1.73 -1.41,-3.14 -3.14,-3.14c-0.15,0 -0.29,0.01 -0.43,0.03C14.44,1.81 13.31,1 12,1S9.56,1.81 9.09,2.96C8.95,2.94 8.8,2.93 8.66,2.93c-0.8,0 -1.53,0.31 -2.09,0.81l1.42,1.42C8.19,5.03 8.41,4.93 8.66,4.93zM16.39,10.38c-0.18,0.41 -0.58,0.69 -1.05,0.69c-0.24,0 -0.46,-0.07 -0.64,-0.2l-0.8,-0.57l-0.01,0c0.55,-0.45 0.94,-1.09 1.06,-1.83l0.88,0.42c0.4,0.19 0.66,0.59 0.66,1.03C16.49,10.09 16.45,10.24 16.39,10.38zM14.69,5.13c0.2,-0.13 0.42,-0.2 0.65,-0.2c0,0 0,0 0,0c0.63,0 1.14,0.51 1.14,1.14c0,0.44 -0.25,0.83 -0.66,1.03l-0.87,0.42l-0.01,0c-0.12,-0.74 -0.51,-1.38 -1.07,-1.83L14.69,5.13zM12,3c0.62,0 1.12,0.49 1.14,1.1l-0.11,1.09C12.71,5.07 12.36,5 12,5s-0.7,0.07 -1.02,0.19L10.86,4.1C10.88,3.49 11.38,3 12,3z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.98,17.15C20.63,15.91 21,14.5 21,13c-1.5,0 -2.91,0.37 -4.15,1.02l1.51,1.51"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3,13c0,4.97 4.03,9 9,9C12,17.03 7.97,13 3,13zM5.44,15.44c1.9,0.71 3.42,2.22 4.12,4.12C7.66,18.85 6.15,17.34 5.44,15.44z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2.81,2.81L1.39,4.22l4.42,4.42c-0.19,0.4 -0.3,0.84 -0.3,1.29c0,1.73 1.41,3.14 3.15,3.14c0.15,0 0.29,-0.01 0.43,-0.03C9.56,14.19 10.69,15 12,15c0.05,0 0.11,-0.01 0.16,-0.01l1.64,1.64C12.67,18.12 12,19.98 12,22c2.02,0 3.88,-0.67 5.38,-1.8l2.4,2.4l1.41,-1.41L2.81,2.81zM14.44,19.56c0.2,-0.54 0.47,-1.04 0.79,-1.5l0.71,0.71l0,0C15.48,19.09 14.98,19.36 14.44,19.56z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/man_2.xml b/compose/material/material/icons/generator/raw-icons/twotone/man_2.xml
new file mode 100644
index 0000000..230adba
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/man_2.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,7h-4C8.9,7 8,7.9 8,9v6h2.5v7h3v-7H16V9C16,7.9 15.1,7 14,7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/man_3.xml b/compose/material/material/icons/generator/raw-icons/twotone/man_3.xml
new file mode 100644
index 0000000..af7bb64
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/man_3.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14,7h-4C8.9,7 8,7.9 8,9v6h2v7h4v-7h2V9C16,7.9 15.1,7 14,7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,1.751l2.249,2.249l-2.249,2.249l-2.249,-2.249z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/man_4.xml b/compose/material/material/icons/generator/raw-icons/twotone/man_4.xml
new file mode 100644
index 0000000..3f70493
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/man_4.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.75,7h-3.5C9.04,7 8.11,8.07 8.27,9.26L10,22h4l1.73,-12.74C15.89,8.07 14.96,7 13.75,7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/noise_aware.xml b/compose/material/material/icons/generator/raw-icons/twotone/noise_aware.xml
index dd729e1..cc4e0b7 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/noise_aware.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/noise_aware.xml
@@ -6,29 +6,50 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M4.07,13H2.05c0.2,2.01 1,3.84 2.21,5.33l1.43,-1.43C4.83,15.79 4.25,14.46 4.07,13z"/>
+      android:pathData="M16,15h-2c0,0.55 -0.45,1 -1,1c-0.43,0 -0.81,-0.27 -0.95,-0.68c-0.15,-0.44 -0.4,-1.08 -0.93,-1.61l-1.36,-1.36C9.28,11.87 9,11.19 9,10.5C9,9.12 10.12,8 11.5,8c1.21,0 2.22,0.86 2.45,2h2.02c-0.25,-2.25 -2.16,-4 -4.47,-4C9.02,6 7,8.02 7,10.5c0,1.22 0.49,2.41 1.35,3.27l1.36,1.36c0.17,0.17 0.31,0.44 0.44,0.82C10.56,17.17 11.71,18 13,18C14.65,18 16,16.65 16,15z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M5.69,7.1L4.26,5.67C3.05,7.16 2.25,8.99 2.05,11h2.02C4.25,9.54 4.83,8.21 5.69,7.1z"/>
+      android:pathData="M13.5,12.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M11,4.07V2.05c-2.01,0.2 -3.84,1 -5.33,2.21L7.1,5.69C8.21,4.83 9.54,4.25 11,4.07z"/>
+      android:pathData="M3.6,6.58l1.58,1.26c0.35,-0.57 0.77,-1.1 1.24,-1.57L4.85,5.02C4.38,5.49 3.97,6.02 3.6,6.58z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M18.33,4.26C16.84,3.05 15.01,2.25 13,2.05v2.02c1.46,0.18 2.79,0.76 3.9,1.62L18.33,4.26z"/>
+      android:pathData="M9.46,4.42L8.59,2.61c-0.63,0.23 -1.24,0.52 -1.8,0.87l0.87,1.81C8.22,4.93 8.82,4.64 9.46,4.42z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M18.31,16.9l1.43,1.43c1.21,-1.48 2.01,-3.32 2.21,-5.33h-2.02C19.75,14.46 19.17,15.79 18.31,16.9z"/>
+      android:pathData="M4.49,9.26L2.53,8.81c-0.21,0.63 -0.36,1.28 -0.44,1.95l1.96,0.45C4.11,10.53 4.27,9.88 4.49,9.26z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19.93,11h2.02c-0.2,-2.01 -1,-3.84 -2.21,-5.33L18.31,7.1C19.17,8.21 19.75,9.54 19.93,11z"/>
+      android:pathData="M20.4,6.58c-0.36,-0.56 -0.78,-1.09 -1.25,-1.56l-1.58,1.26c0.48,0.47 0.89,0.99 1.24,1.57L20.4,6.58z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M13,19.93v2.02c2.01,-0.2 3.84,-1 5.33,-2.21l-1.43,-1.43C15.79,19.17 14.46,19.75 13,19.93z"/>
+      android:pathData="M4.04,12.79l-1.96,0.45c0.08,0.67 0.23,1.33 0.44,1.95l1.97,-0.45C4.27,14.12 4.11,13.47 4.04,12.79z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M5.67,19.74c1.48,1.21 3.32,2.01 5.33,2.21v-2.02c-1.46,-0.18 -2.79,-0.76 -3.9,-1.62L5.67,19.74z"/>
+      android:pathData="M17.21,3.48c-0.57,-0.35 -1.17,-0.64 -1.8,-0.87l-0.87,1.81c0.64,0.22 1.24,0.51 1.8,0.87L17.21,3.48z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,12m-5,0a5,5 0,1 1,10 0a5,5 0,1 1,-10 0"/>
+      android:pathData="M13,4.07V2.05C12.67,2.02 12.34,2 12,2s-0.67,0.02 -1,0.05v2.02C11.33,4.03 11.66,4 12,4S12.67,4.03 13,4.07z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,19.93v2.02c0.33,0.03 0.66,0.05 1,0.05s0.67,-0.02 1,-0.05v-2.02C12.67,19.97 12.34,20 12,20S11.33,19.97 11,19.93z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.51,14.74l1.97,0.45c0.21,-0.63 0.36,-1.28 0.44,-1.95l-1.96,-0.45C19.89,13.47 19.73,14.12 19.51,14.74z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.96,11.21l1.96,-0.45c-0.08,-0.67 -0.23,-1.33 -0.44,-1.95l-1.97,0.45C19.73,9.88 19.89,10.53 19.96,11.21z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.58,17.73l1.58,1.26c0.47,-0.48 0.88,-1 1.25,-1.56l-1.58,-1.26C18.47,16.73 18.05,17.26 17.58,17.73z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6.79,20.52c0.57,0.35 1.17,0.64 1.8,0.87l0.87,-1.81c-0.64,-0.22 -1.24,-0.51 -1.8,-0.87L6.79,20.52z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14.54,19.58l0.87,1.81c0.63,-0.23 1.24,-0.52 1.8,-0.87l-0.87,-1.81C15.78,19.07 15.18,19.36 14.54,19.58z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3.6,17.42c0.36,0.56 0.78,1.09 1.25,1.56l1.58,-1.26c-0.48,-0.47 -0.89,-0.99 -1.24,-1.57L3.6,17.42z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/noise_control_off.xml b/compose/material/material/icons/generator/raw-icons/twotone/noise_control_off.xml
index 4e65652..4d023ad 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/noise_control_off.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/noise_control_off.xml
@@ -6,5 +6,20 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,12m-5,0a5,5 0,1 1,10 0a5,5 0,1 1,-10 0"/>
+      android:pathData="M12,4c1.44,0 2.79,0.38 3.95,1.05l1.45,-1.45C15.85,2.59 13.99,2 12,2S8.15,2.59 6.59,3.59l1.45,1.45C9.21,4.38 10.56,4 12,4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,12c0,1.44 -0.38,2.79 -1.05,3.95l1.45,1.45C21.41,15.85 22,13.99 22,12s-0.59,-3.85 -1.59,-5.41l-1.45,1.45C19.62,9.21 20,10.56 20,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,20c-1.44,0 -2.79,-0.38 -3.95,-1.05l-1.45,1.45C8.15,21.41 10.01,22 12,22s3.85,-0.59 5.41,-1.59l-1.45,-1.45C14.79,19.62 13.44,20 12,20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,12c0,-1.44 0.38,-2.79 1.05,-3.95L3.59,6.59C2.59,8.15 2,10.01 2,12s0.59,3.85 1.59,5.41l1.45,-1.45C4.38,14.79 4,13.44 4,12z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11.5,6C9.02,6 7,8.02 7,10.5c0,1.22 0.49,2.41 1.35,3.27l1.36,1.36c0.17,0.17 0.31,0.44 0.44,0.82C10.56,17.17 11.71,18 13,18c1.65,0 3,-1.35 3,-3h-2c0,0.55 -0.45,1 -1,1c-0.43,0 -0.81,-0.27 -0.95,-0.68c-0.15,-0.44 -0.4,-1.08 -0.93,-1.61l-1.36,-1.36C9.28,11.87 9,11.19 9,10.5C9,9.12 10.12,8 11.5,8c1.21,0 2.22,0.86 2.45,2h2.02C15.72,7.75 13.81,6 11.5,6z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.5,12.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/person_2.xml b/compose/material/material/icons/generator/raw-icons/twotone/person_2.xml
new file mode 100644
index 0000000..021a1a3
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/person_2.xml
@@ -0,0 +1,23 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.9,7.59C13.74,6.67 12.94,6 12,6s-1.74,0.67 -1.9,1.59L9.78,10h4.44L13.9,7.59z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.48,16.34C16.29,15.73 14.37,15 12,15c-2.37,0 -4.29,0.73 -5.48,1.34C6.2,16.5 6,16.84 6,17.22V18h12v-0.78C18,16.84 17.8,16.5 17.48,16.34z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18.39,14.56C16.71,13.7 14.53,13 12,13c-2.53,0 -4.71,0.7 -6.39,1.56C4.61,15.07 4,16.1 4,17.22V20h16v-2.78C20,16.1 19.39,15.07 18.39,14.56zM18,18H6v-0.78c0,-0.38 0.2,-0.72 0.52,-0.88C7.71,15.73 9.63,15 12,15c2.37,0 4.29,0.73 5.48,1.34C17.8,16.5 18,16.84 18,17.22V18z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9.78,12h4.44c1.21,0 2.14,-1.06 1.98,-2.26l-0.32,-2.45C15.57,5.39 13.92,4 12,4S8.43,5.39 8.12,7.29L7.8,9.74C7.64,10.94 8.57,12 9.78,12zM10.1,7.59C10.26,6.67 11.06,6 12,6s1.74,0.67 1.9,1.59L14.22,10H9.78L10.1,7.59z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/person_3.xml b/compose/material/material/icons/generator/raw-icons/twotone/person_3.xml
new file mode 100644
index 0000000..ff86320
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/person_3.xml
@@ -0,0 +1,23 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,10h4c0.8,0 1.34,-0.94 0.76,-1.63c-0.87,-1.04 -0.26,-2 -0.26,-2.37c0,-0.41 -0.24,-0.77 -0.62,-0.92c-0.29,-0.12 -0.55,-0.31 -0.75,-0.54C12.96,4.33 12.58,4 12,4s-0.96,0.33 -1.13,0.53c-0.2,0.24 -0.46,0.42 -0.75,0.54C9.74,5.23 9.5,5.59 9.5,6c0,0.37 0.61,1.33 -0.26,2.37C8.66,9.06 9.2,10 10,10z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.48,16.34C16.29,15.73 14.37,15 12,15c-2.37,0 -4.29,0.73 -5.48,1.34C6.2,16.5 6,16.84 6,17.22V18h12v-0.78C18,16.84 17.8,16.5 17.48,16.34z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18.39,14.56C16.71,13.7 14.53,13 12,13c-2.53,0 -4.71,0.7 -6.39,1.56C4.61,15.07 4,16.1 4,17.22V20h16v-2.78C20,16.1 19.39,15.07 18.39,14.56zM18,18H6v-0.78c0,-0.38 0.2,-0.72 0.52,-0.88C7.71,15.73 9.63,15 12,15c2.37,0 4.29,0.73 5.48,1.34C17.8,16.5 18,16.84 18,17.22V18z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,12c0.17,0 3.83,0 4,0c1.66,0 3,-1.34 3,-3c0,-0.73 -0.27,-1.4 -0.71,-1.92C16.42,6.75 16.5,6.38 16.5,6c0,-1.25 -0.77,-2.32 -1.86,-2.77C14,2.48 13.06,2 12,2s-2,0.48 -2.64,1.23C8.27,3.68 7.5,4.75 7.5,6c0,0.38 0.08,0.75 0.21,1.08C7.27,7.6 7,8.27 7,9C7,10.66 8.34,12 10,12zM9.24,8.37C10.11,7.33 9.5,6.37 9.5,6c0,-0.41 0.24,-0.77 0.62,-0.92c0.29,-0.12 0.55,-0.31 0.75,-0.54C11.04,4.33 11.42,4 12,4s0.96,0.33 1.13,0.53c0.2,0.24 0.46,0.42 0.75,0.54C14.26,5.23 14.5,5.59 14.5,6c0,0.37 -0.61,1.33 0.26,2.37C15.34,9.06 14.8,10 14,10h-4C9.2,10 8.66,9.06 9.24,8.37z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/person_4.xml b/compose/material/material/icons/generator/raw-icons/twotone/person_4.xml
new file mode 100644
index 0000000..038f6ed
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/person_4.xml
@@ -0,0 +1,23 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,10c1.1,0 2,-0.9 2,-2V5.5h-4V8C10,9.1 10.9,10 12,10z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.48,16.34C16.29,15.73 14.37,15 12,15c-2.37,0 -4.29,0.73 -5.48,1.34C6.2,16.5 6,16.84 6,17.22V18h12v-0.78C18,16.84 17.8,16.5 17.48,16.34z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18.39,14.56C16.71,13.7 14.53,13 12,13c-2.53,0 -4.71,0.7 -6.39,1.56C4.61,15.07 4,16.1 4,17.22V20h16v-2.78C20,16.1 19.39,15.07 18.39,14.56zM18,18H6v-0.78c0,-0.38 0.2,-0.72 0.52,-0.88C7.71,15.73 9.63,15 12,15c2.37,0 4.29,0.73 5.48,1.34C17.8,16.5 18,16.84 18,17.22V18z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,12c2.21,0 4,-1.79 4,-4c0,-1.37 0,-3.5 0,-3.5C16,3.67 15.33,3 14.5,3c-0.52,0 -0.98,0.27 -1.25,0.67C12.98,3.27 12.52,3 12,3s-0.98,0.27 -1.25,0.67C10.48,3.27 10.02,3 9.5,3C8.67,3 8,3.67 8,4.5c0,0 0,2.12 0,3.5C8,10.21 9.79,12 12,12zM10,5.5h4V8c0,1.1 -0.9,2 -2,2s-2,-0.9 -2,-2V5.5z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/psychology_alt.xml b/compose/material/material/icons/generator/raw-icons/twotone/psychology_alt.xml
new file mode 100644
index 0000000..0a6ede5
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/psychology_alt.xml
@@ -0,0 +1,21 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,5c-2.65,0 -4.79,2.06 -4.97,4.67L6.7,12H8v4h3v3h3v-3.95l0.89,-0.42C16.71,13.88 18,12.09 18,10C18,7.24 15.76,5 13,5zM12.5,14c-0.41,0 -0.74,-0.33 -0.74,-0.74c0,-0.41 0.33,-0.73 0.74,-0.73c0.41,0 0.73,0.32 0.73,0.73C13.23,13.67 12.92,14 12.5,14zM14.26,9.68c-0.44,0.65 -0.86,0.85 -1.09,1.27c-0.09,0.17 -0.13,0.28 -0.13,0.82h-1.06c0,-0.29 -0.04,-0.75 0.18,-1.16c0.28,-0.51 0.83,-0.81 1.14,-1.26c0.33,-0.47 0.15,-1.36 -0.8,-1.36c-0.62,0 -0.92,0.47 -1.05,0.86l-0.96,-0.4C10.76,7.67 11.46,7 12.5,7c0.86,0 1.45,0.39 1.75,0.88C14.51,8.31 14.66,9.1 14.26,9.68z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19.94,9.06C19.5,5.73 16.57,3 13,3C9.47,3 6.57,5.61 6.08,9l-1.93,3.48C3.74,13.14 4.22,14 5,14h1l0,2c0,1.1 0.9,2 2,2h1v3h7l0,-4.68C18.62,15.07 20.35,12.24 19.94,9.06zM14.89,14.63L14,15.05V19h-3v-3H8v-4H6.7l1.33,-2.33C8.21,7.06 10.35,5 13,5c2.76,0 5,2.24 5,5C18,12.09 16.71,13.88 14.89,14.63z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.5,12.54c-0.41,0 -0.74,0.31 -0.74,0.73c0,0.41 0.33,0.74 0.74,0.74c0.42,0 0.73,-0.33 0.73,-0.74C13.23,12.85 12.92,12.54 12.5,12.54z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.5,7c-1.03,0 -1.74,0.67 -2,1.45l0.96,0.4c0.13,-0.39 0.43,-0.86 1.05,-0.86c0.95,0 1.13,0.89 0.8,1.36c-0.32,0.45 -0.86,0.75 -1.14,1.26c-0.23,0.4 -0.18,0.87 -0.18,1.16h1.06c0,-0.55 0.04,-0.65 0.13,-0.82c0.23,-0.42 0.65,-0.62 1.09,-1.27c0.4,-0.59 0.25,-1.38 -0.01,-1.8C13.95,7.39 13.36,7 12.5,7z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/repartition.xml b/compose/material/material/icons/generator/raw-icons/twotone/repartition.xml
new file mode 100644
index 0000000..92fefc8
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/repartition.xml
@@ -0,0 +1,28 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15.67,17h3.33v2h-3.33z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10.33,17h3.33v2h-3.33z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M5,17h3.33v2h-3.33z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M3,21h18v-6H3V21zM15.67,17H19v2h-3.33V17zM10.33,17h3.33v2h-3.33V17zM5,17h3.33v2H5V17z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,10l1.42,-1.42L5.83,7H17c1.1,0 2,0.9 2,2s-0.9,2 -2,2H3v2h14c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4H5.83l1.59,-1.59L6,2L2,6L6,10z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/rotate_90_degrees_cw.xml b/compose/material/material/icons/generator/raw-icons/twotone/rotate_90_degrees_cw.xml
index 66290cf..517b75a 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/rotate_90_degrees_cw.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/rotate_90_degrees_cw.xml
@@ -9,7 +9,7 @@
       android:pathData="M4.64,19.37c3.03,3.03 7.67,3.44 11.15,1.25l-1.46,-1.46c-2.66,1.43 -6.04,1.03 -8.28,-1.21c-2.73,-2.73 -2.73,-7.17 0,-9.9C7.42,6.69 9.21,6.03 11,6.03V9l4,-4l-4,-4v3.01c-2.3,0 -4.61,0.87 -6.36,2.63C1.12,10.15 1.12,15.85 4.64,19.37zM11,13l6,6l6,-6l-6,-6L11,13zM17,16.17L13.83,13L17,9.83L20.17,13L17,16.17z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M13.8172,12.9945l3.1749,-3.1749l3.1749,3.1749l-3.1749,3.1749z"
+      android:pathData="M13.817,12.995l3.175,-3.175l3.175,3.175l-3.175,3.175z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/shape_line.xml b/compose/material/material/icons/generator/raw-icons/twotone/shape_line.xml
new file mode 100644
index 0000000..050d535
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/shape_line.xml
@@ -0,0 +1,26 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,16h5v5h-5z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,6m-3,0a3,3 0,1 1,6 0a3,3 0,1 1,-6 0"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M6,11c2.76,0 5,-2.24 5,-5S8.76,1 6,1S1,3.24 1,6S3.24,11 6,11zM6,3c1.65,0 3,1.35 3,3c0,1.65 -1.35,3 -3,3S3,7.65 3,6C3,4.35 4.35,3 6,3z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21,14h-5c-1.1,0 -2,0.9 -2,2v5c0,1.1 0.9,2 2,2h5c1.1,0 2,-0.9 2,-2v-5C23,14.9 22.1,14 21,14zM21,21h-5v-5h5V21z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.71,7.7C18.11,7.89 18.54,8 19,8c1.65,0 3,-1.35 3,-3s-1.35,-3 -3,-3s-3,1.35 -3,3c0,0.46 0.11,0.89 0.3,1.29L6.29,16.3C5.89,16.11 5.46,16 5,16c-1.65,0 -3,1.35 -3,3s1.35,3 3,3s3,-1.35 3,-3c0,-0.46 -0.11,-0.89 -0.3,-1.29L17.71,7.7z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/sports_cricket.xml b/compose/material/material/icons/generator/raw-icons/twotone/sports_cricket.xml
index 72a0982..c4ec6a4 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/sports_cricket.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/sports_cricket.xml
@@ -6,7 +6,7 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M4.4141,7.8394l1.4213,-1.4213l7.0851,7.0851l-1.4213,1.4213z"
+      android:pathData="M4.414,7.839l1.421,-1.421l7.085,7.085l-1.421,1.421z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
@@ -19,7 +19,7 @@
       android:pathData="M15.04,12.79l-8.5,-8.5C6.35,4.1 6.09,4 5.83,4S5.32,4.1 5.13,4.29L2.29,7.13c-0.39,0.39 -0.39,1.03 0,1.42l8.5,8.5c0.2,0.2 0.45,0.29 0.71,0.29c0.26,0 0.51,-0.1 0.71,-0.29l2.83,-2.83C15.43,13.82 15.43,13.18 15.04,12.79zM11.5,14.92L4.41,7.83l1.42,-1.42l7.09,7.09L11.5,14.92z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M14.3412,17.7562l1.4142,-1.4142l4.2426,4.2426l-1.4142,1.4142z"/>
+      android:pathData="M14.341,17.756l1.414,-1.414l4.243,4.243l-1.414,1.414z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M18.5,2C16.57,2 15,3.57 15,5.5C15,7.43 16.57,9 18.5,9S22,7.43 22,5.5C22,3.57 20.43,2 18.5,2zM18.5,7C17.67,7 17,6.33 17,5.5S17.67,4 18.5,4S20,4.67 20,5.5S19.33,7 18.5,7z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/sports_football.xml b/compose/material/material/icons/generator/raw-icons/twotone/sports_football.xml
index 2ce86a1..a9bf131 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/sports_football.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/sports_football.xml
@@ -24,5 +24,5 @@
       android:pathData="M20.31,3.69C19.99,3.36 18.37,3 16.26,3c-3.03,0 -7.09,0.75 -9.8,3.46C1.87,11.05 2.9,19.52 3.69,20.31C4.01,20.64 5.63,21 7.74,21c3.03,0 7.09,-0.75 9.8,-3.46C22.13,12.95 21.1,4.48 20.31,3.69zM7.74,19c-1.14,0 -2.02,-0.12 -2.53,-0.23c-0.18,-0.79 -0.3,-2.21 -0.17,-3.83l4.01,4.01C8.53,18.99 8.08,19 7.74,19zM16.13,16.13c-1.33,1.33 -3.06,2.05 -4.66,2.44l-6.04,-6.04c0.42,-1.68 1.16,-3.37 2.45,-4.65c1.32,-1.32 3.05,-2.04 4.64,-2.43l6.05,6.05C18.15,13.17 17.4,14.85 16.13,16.13zM18.96,9.09l-4.03,-4.03C15.45,5.01 15.91,5 16.26,5c1.14,0 2.02,0.12 2.53,0.23C18.97,6.02 19.09,7.45 18.96,9.09z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M8.4997,14.1002l5.6002,-5.6002l1.4001,1.4001l-5.6002,5.6002z"/>
+      android:pathData="M8.5,14.1l5.6,-5.6l1.4,1.4l-5.6,5.6z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/stacked_bar_chart.xml b/compose/material/material/icons/generator/raw-icons/twotone/stacked_bar_chart.xml
index ebe5a8f..2a7fd72 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/stacked_bar_chart.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/stacked_bar_chart.xml
@@ -6,5 +6,20 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M6,10h3v10H6V10zM6,5h3v4H6V5zM16,16h3v4h-3V16zM16,13h3v2h-3V13zM11,13h3v7h-3V13zM11,9h3v3h-3V9z"/>
+      android:pathData="M4,9h4v11h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,4h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,7h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,10h4v4h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16,15h4v5h-4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M10,12h4v8h-4z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/stream.xml b/compose/material/material/icons/generator/raw-icons/twotone/stream.xml
index edef540..f748f56 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/stream.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/stream.xml
@@ -15,7 +15,7 @@
       android:pathData="M12,20m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M13.9431,8.619l4.4044,-4.3919l1.4122,1.4162l-4.4044,4.3919z"/>
+      android:pathData="M13.943,8.619l4.404,-4.392l1.412,1.416l-4.404,4.392z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M8.32,9.68l0.31,0.32l1.42,-1.41l-4.02,-4.04l-0.01,0l-0.31,-0.32l-1.42,1.41l4.02,4.05z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/transcribe.xml b/compose/material/material/icons/generator/raw-icons/twotone/transcribe.xml
new file mode 100644
index 0000000..fc8b87e
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/transcribe.xml
@@ -0,0 +1,29 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,9m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14.48,17.34C13.29,16.73 11.37,16 9,16c-2.37,0 -4.29,0.73 -5.48,1.34C3.2,17.5 3,17.84 3,18.22V19h12v-0.78C15,17.84 14.8,17.5 14.48,17.34z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17.93,2c-3.9,3.89 -3.91,9.95 0,14l1.63,-1.63c-2.77,-3.02 -2.77,-7.56 0,-10.74L17.93,2z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M9,13c2.21,0 4,-1.79 4,-4c0,-2.21 -1.79,-4 -4,-4S5,6.79 5,9C5,11.21 6.79,13 9,13zM9,7c1.1,0 2,0.9 2,2c0,1.1 -0.9,2 -2,2s-2,-0.9 -2,-2C7,7.9 7.9,7 9,7z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15.39,15.56C13.71,14.7 11.53,14 9,14c-2.53,0 -4.71,0.7 -6.39,1.56C1.61,16.07 1,17.1 1,18.22V21h16v-2.78C17,17.1 16.39,16.07 15.39,15.56zM15,19H3v-0.78c0,-0.38 0.2,-0.72 0.52,-0.88C4.71,16.73 6.63,16 9,16c2.37,0 4.29,0.73 5.48,1.34C14.8,17.5 15,17.84 15,18.22V19z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22.92,7.06l-1.68,-1.69c-2.02,2.02 -2.02,5.07 0,7.27l1.68,-1.69C22.08,9.77 22.08,8.24 22.92,7.06z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/troubleshoot.xml b/compose/material/material/icons/generator/raw-icons/twotone/troubleshoot.xml
new file mode 100644
index 0000000..97931d3
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/troubleshoot.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M22,20.59l-4.69,-4.69C18.37,14.55 19,12.85 19,11c0,-4.42 -3.58,-8 -8,-8c-4.08,0 -7.44,3.05 -7.93,7h2.02C5.57,7.17 8.03,5 11,5c3.31,0 6,2.69 6,6s-2.69,6 -6,6c-2.42,0 -4.5,-1.44 -5.45,-3.5H3.4C4.45,16.69 7.46,19 11,19c1.85,0 3.55,-0.63 4.9,-1.69L20.59,22L22,20.59z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8.43,9.69l1.22,5.31l1.64,0l1.26,-3.78l0.95,2.28l2,0l0,-1.5l-1,0l-1.25,-3l-1.54,0l-1.12,3.37l-1.24,-5.37l-1.65,0l-1.25,4l-5.45,0l0,1.5l6.55,0z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/tungsten.xml b/compose/material/material/icons/generator/raw-icons/twotone/tungsten.xml
index a422435..7ff23f80 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/tungsten.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/tungsten.xml
@@ -20,10 +20,10 @@
       android:pathData="M19,11h3v2h-3z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M15.8941,17.8014l1.4071,-1.4071l2.1213,2.1213l-1.4071,1.4071z"/>
+      android:pathData="M15.894,17.801l1.407,-1.407l2.121,2.121l-1.407,1.407z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M4.5842,18.5085l2.1213,-2.1213l1.4071,1.4071l-2.1213,2.1213z"/>
+      android:pathData="M4.584,18.509l2.121,-2.121l1.407,1.407l-2.121,2.121z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M15,8.02V3H9v5.02C7.79,8.94 7,10.37 7,12c0,2.76 2.24,5 5,5s5,-2.24 5,-5C17,10.37 16.21,8.94 15,8.02zM11,5h2v2.1C12.68,7.04 12.34,7 12,7s-0.68,0.04 -1,0.1V5zM12,15c-1.65,0 -3,-1.35 -3,-3s1.35,-3 3,-3c1.65,0 3,1.35 3,3S13.65,15 12,15z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/type_specimen.xml b/compose/material/material/icons/generator/raw-icons/twotone/type_specimen.xml
new file mode 100644
index 0000000..c196ceb
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/type_specimen.xml
@@ -0,0 +1,26 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M14.04,7.17l-0.08,0l-1.31,3.72l2.69,0z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8,16h12V4H8V16zM13.2,5.5h1.61l3.38,9h-1.56l-0.8,-2.3h-3.63l-0.82,2.3H9.81L13.2,5.5z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,6H2v14c0,1.1 0.9,2 2,2h14v-2H4V6z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,2H8C6.9,2 6,2.9 6,4v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2V4C22,2.9 21.1,2 20,2zM20,16H8V4h12V16z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.19,12.2h3.63l0.8,2.3h1.56l-3.38,-9H13.2l-3.38,9h1.56L12.19,12.2zM13.96,7.17h0.08l1.31,3.72h-2.69L13.96,7.17z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/unfold_less_double.xml b/compose/material/material/icons/generator/raw-icons/twotone/unfold_less_double.xml
new file mode 100644
index 0000000..92f9c80
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/unfold_less_double.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.58,1.41l-1.42,-1.41l-3.17,3.17l-3.17,-3.17l-1.41,1.41l4.58,4.59z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.58,6.41l-1.42,-1.41l-3.17,3.17l-3.17,-3.17l-1.41,1.41l4.58,4.59z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7.42,17.59l1.42,1.41l3.17,-3.17l3.17,3.17l1.41,-1.41l-4.58,-4.59z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7.42,22.59l1.42,1.41l3.17,-3.17l3.17,3.17l1.41,-1.41l-4.58,-4.59z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/unfold_more_double.xml b/compose/material/material/icons/generator/raw-icons/twotone/unfold_more_double.xml
new file mode 100644
index 0000000..4d100fe
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/unfold_more_double.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,7.83L15.17,11l1.41,-1.41L12,5L7.41,9.59L8.83,11L12,7.83zM12,2.83L15.17,6l1.41,-1.41L12,0L7.41,4.59L8.83,6L12,2.83zM12,21.17L8.83,18l-1.41,1.41L12,24l4.59,-4.59L15.17,18L12,21.17zM12,16.17L8.83,13l-1.41,1.41L12,19l4.59,-4.59L15.17,13L12,16.17z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/video_chat.xml b/compose/material/material/icons/generator/raw-icons/twotone/video_chat.xml
new file mode 100644
index 0000000..1ab32de
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/video_chat.xml
@@ -0,0 +1,18 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,17.17L5.17,16H20V4H4V17.17zM7,7c0,-0.55 0.45,-1 1,-1h6c0.55,0 1,0.45 1,1v1.99L17,7v6l-2,-1.99V13c0,0.55 -0.45,1 -1,1H8c-0.55,0 -1,-0.45 -1,-1V7z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,2H4C2.9,2 2.01,2.9 2.01,4L2,22l4,-4h14c1.1,0 2,-0.9 2,-2V4C22,2.9 21.1,2 20,2zM20,16H5.17L4,17.17V4h16V16z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M8,14h6c0.55,0 1,-0.45 1,-1v-1.99L17,13V7l-2,1.99V7c0,-0.55 -0.45,-1 -1,-1H8C7.45,6 7,6.45 7,7v6C7,13.55 7.45,14 8,14z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/video_stable.xml b/compose/material/material/icons/generator/raw-icons/twotone/video_stable.xml
index 9d21844..9d88d38 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/video_stable.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/video_stable.xml
@@ -6,7 +6,7 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M7.0627,13.3186l1.3204,-4.9261l8.5579,2.2939l-1.3204,4.9261z"
+      android:pathData="M7.063,13.319l1.32,-4.926l8.558,2.294l-1.32,4.926z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/view_comfy.xml b/compose/material/material/icons/generator/raw-icons/twotone/view_comfy.xml
index cd8006c..51be2d1 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/view_comfy.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/view_comfy.xml
@@ -6,10 +6,10 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M9.25,11h2.25v2L9.25,13zM9.25,15h2.25v2L9.25,17zM9.25,7h2.25v2L9.25,9zM13.5,15h2.25v2L13.5,17zM5,15h2.25v2L5,17zM5,11h2.25v2L5,13zM5,7h2.25v2L5,9zM17.75,7L20,7v2h-2.25zM13.5,11h2.25v2L13.5,13zM13.5,7h2.25v2L13.5,9zM17.75,15L20,15v2h-2.25zM17.75,11L20,11v2h-2.25z"
+      android:pathData="M10,18h10v-5H10V18zM4,6v5h16V6H4zM4,18h4v-5H4V18z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3,5v14h19L22,5L3,5zM7.25,17L5,17v-2h2.25v2zM7.25,13L5,13v-2h2.25v2zM7.25,9L5,9L5,7h2.25v2zM11.5,17L9.25,17v-2h2.25v2zM11.5,13L9.25,13v-2h2.25v2zM11.5,9L9.25,9L9.25,7h2.25v2zM15.75,17L13.5,17v-2h2.25v2zM15.75,13L13.5,13v-2h2.25v2zM15.75,9L13.5,9L13.5,7h2.25v2zM20,17h-2.25v-2L20,15v2zM20,13h-2.25v-2L20,11v2zM20,9h-2.25L17.75,7L20,7v2z"/>
+      android:pathData="M2,4v16h20V4H2zM8,18H4v-5h4V18zM20,18H10v-5h10V18zM20,11H4V6h16V11z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/view_compact.xml b/compose/material/material/icons/generator/raw-icons/twotone/view_compact.xml
index caee9f1..2a91c96 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/view_compact.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/view_compact.xml
@@ -6,10 +6,10 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M11,13h9v4h-9zM5,13h4v4L5,17zM5,7h15v4L5,11z"
+      android:pathData="M4,13.25h2.5v-2.5H4V13.25zM4,18h2.5v-2.5H4V18zM8.5,8.5H11V6H8.5V8.5zM17.5,18H20v-2.5h-2.5V18zM17.5,13.25H20v-2.5h-2.5V13.25zM17.5,6v2.5H20V6H17.5zM13,8.5h2.5V6H13V8.5zM8.5,13.25H11v-2.5H8.5V13.25zM8.5,18H11v-2.5H8.5V18zM4,8.5h2.5V6H4V8.5zM13,13.25h2.5v-2.5H13V13.25zM13,18h2.5v-2.5H13V18z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3,5v14h19L22,5L3,5zM9,17L5,17v-4h4v4zM20,17h-9v-4h9v4zM20,11L5,11L5,7h15v4z"/>
+      android:pathData="M2,4v16h20V4H2zM6.5,18H4v-2.5h2.5V18zM6.5,13.25H4v-2.5h2.5V13.25zM6.5,8.5H4V6h2.5V8.5zM11,18H8.5v-2.5H11V18zM11,13.25H8.5v-2.5H11V13.25zM11,8.5H8.5V6H11V8.5zM15.5,18H13v-2.5h2.5V18zM15.5,13.25H13v-2.5h2.5V13.25zM15.5,8.5H13V6h2.5V8.5zM20,18h-2.5v-2.5H20V18zM20,13.25h-2.5v-2.5H20V13.25zM20,8.5h-2.5V6H20V8.5z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/wb_twilight.xml b/compose/material/material/icons/generator/raw-icons/twotone/wb_twilight.xml
index 8431091..474dbed 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/wb_twilight.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/wb_twilight.xml
@@ -6,7 +6,7 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M16.9552,8.662l2.1207,-2.1222l1.4148,1.4138l-2.1207,2.1222z"/>
+      android:pathData="M16.955,8.662l2.121,-2.122l1.415,1.414l-2.121,2.122z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M2,18h20v2h-20z"/>
@@ -15,7 +15,7 @@
       android:pathData="M11,4h2v3h-2z"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3.5425,7.9248l1.4142,-1.4142l2.1213,2.1213l-1.4142,1.4142z"/>
+      android:pathData="M3.543,7.925l1.414,-1.414l2.121,2.121l-1.414,1.414z"/>
   <path
       android:fillColor="@android:color/white"
       android:pathData="M5,16h14c0,-3.87 -3.13,-7 -7,-7S5,12.13 5,16z"/>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/web_stories.xml b/compose/material/material/icons/generator/raw-icons/twotone/web_stories.xml
new file mode 100644
index 0000000..7141c46
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/web_stories.xml
@@ -0,0 +1,21 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4,4h9v16h-9z"
+      android:strokeAlpha="0.3"
+      android:fillAlpha="0.3"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M17,4v16c1.1,0 2,-0.9 2,-2V6C19,4.9 18.1,4 17,4z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13,2H4C2.9,2 2,2.9 2,4v16c0,1.1 0.9,2 2,2h9c1.1,0 2,-0.9 2,-2V4C15,2.9 14.1,2 13,2zM13,20H4V4h9V20z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21,6v12c0.83,0 1.5,-0.67 1.5,-1.5v-9C22.5,6.67 21.83,6 21,6z"/>
+</vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/window.xml b/compose/material/material/icons/generator/raw-icons/twotone/window.xml
index 33206f3..28ecf14 100644
--- a/compose/material/material/icons/generator/raw-icons/twotone/window.xml
+++ b/compose/material/material/icons/generator/raw-icons/twotone/window.xml
@@ -6,25 +6,25 @@
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M4,4h7v7h-7z"
+      android:pathData="M13,13h6v6h-6z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M4,13h7v7h-7z"
+      android:pathData="M5,13h6v6h-6z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M13,13h7v7h-7z"
+      android:pathData="M5,5h6v6h-6z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M13,4h7v7h-7z"
+      android:pathData="M13,5h6v6h-6z"
       android:strokeAlpha="0.3"
       android:fillAlpha="0.3"/>
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M20,2H4C2.9,2 2,2.9 2,4v16c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V4C22,2.9 21.1,2 20,2zM11,20H4v-7h7V20zM11,11H4V4h7V11zM20,20h-7v-7h7V20zM20,11h-7V4h7V11z"/>
+      android:pathData="M19,3H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5C21,3.9 20.1,3 19,3zM11,19H5v-6h6V19zM11,11H5V5h6V11zM19,19h-6v-6h6V19zM19,11h-6V5h6V11z"/>
 </vector>
diff --git a/compose/material/material/icons/generator/raw-icons/twotone/woman_2.xml b/compose/material/material/icons/generator/raw-icons/twotone/woman_2.xml
new file mode 100644
index 0000000..1f42b3f
--- /dev/null
+++ b/compose/material/material/icons/generator/raw-icons/twotone/woman_2.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M13.94,8.31C13.62,7.52 12.85,7 12,7s-1.62,0.52 -1.94,1.31L7,16h3.5v6h3v-6H17L13.94,8.31z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+</vector>
diff --git a/compose/material3/material3/api/current.txt b/compose/material3/material3/api/current.txt
index c2adf73..cdca37d 100644
--- a/compose/material3/material3/api/current.txt
+++ b/compose/material3/material3/api/current.txt
@@ -21,7 +21,7 @@
   }
 
   public final class AndroidAlertDialog_androidKt {
-    method @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, kotlin.jvm.functions.Function0<kotlin.Unit> confirmButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? dismissButton, optional kotlin.jvm.functions.Function0<kotlin.Unit>? icon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? text, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional float tonalElevation, optional long iconContentColor, optional long titleContentColor, optional long textContentColor, optional androidx.compose.ui.window.DialogProperties properties);
+    method @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, kotlin.jvm.functions.Function0<kotlin.Unit> confirmButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? dismissButton, optional kotlin.jvm.functions.Function0<kotlin.Unit>? icon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? text, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long iconContentColor, optional long titleContentColor, optional long textContentColor, optional float tonalElevation, optional androidx.compose.ui.window.DialogProperties properties);
   }
 
   public final class AndroidMenu_androidKt {
@@ -30,7 +30,7 @@
   }
 
   public final class AppBarKt {
-    method @androidx.compose.runtime.Composable public static void BottomAppBar(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> icons, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton, optional long containerColor, optional long contentColor, optional float tonalElevation, optional androidx.compose.foundation.layout.PaddingValues contentPadding);
+    method @androidx.compose.runtime.Composable public static void BottomAppBar(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> actions, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton, optional long containerColor, optional long contentColor, optional float tonalElevation, optional androidx.compose.foundation.layout.PaddingValues contentPadding);
     method @androidx.compose.runtime.Composable public static void BottomAppBar(optional androidx.compose.ui.Modifier modifier, optional long containerColor, optional long contentColor, optional float tonalElevation, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
   }
 
@@ -110,11 +110,11 @@
   }
 
   public final class ButtonKt {
-    method @androidx.compose.runtime.Composable public static void Button(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void ElevatedButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void FilledTonalButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void OutlinedButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void TextButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void Button(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void ElevatedButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FilledTonalButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void OutlinedButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void TextButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
   }
 
   @androidx.compose.runtime.Stable public interface CardColors {
@@ -145,9 +145,9 @@
   }
 
   public final class CardKt {
-    method @androidx.compose.runtime.Composable public static void Card(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.material3.CardColors colors, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void ElevatedCard(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.material3.CardColors colors, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void OutlinedCard(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke border, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.material3.CardColors colors, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void Card(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.CardColors colors, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.foundation.BorderStroke? border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void ElevatedCard(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.CardColors colors, optional androidx.compose.material3.CardElevation elevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void OutlinedCard(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.CardColors colors, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.foundation.BorderStroke border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
   }
 
   @androidx.compose.runtime.Stable public interface CheckboxColors {
@@ -162,8 +162,8 @@
   }
 
   public final class CheckboxKt {
-    method @androidx.compose.runtime.Composable public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.CheckboxColors colors);
-    method @androidx.compose.runtime.Composable public static void TriStateCheckbox(androidx.compose.ui.state.ToggleableState state, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.CheckboxColors colors);
+    method @androidx.compose.runtime.Composable public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.material3.CheckboxColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
+    method @androidx.compose.runtime.Composable public static void TriStateCheckbox(androidx.compose.ui.state.ToggleableState state, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.material3.CheckboxColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   public final class ChipKt {
@@ -297,7 +297,7 @@
   public final class FloatingActionButtonKt {
     method @androidx.compose.runtime.Composable public static void ExtendedFloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void ExtendedFloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> text, kotlin.jvm.functions.Function0<kotlin.Unit> icon, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean expanded, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation);
-    method @androidx.compose.runtime.Composable public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void LargeFloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void SmallFloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
@@ -326,14 +326,14 @@
   }
 
   public final class IconButtonKt {
-    method @androidx.compose.runtime.Composable public static void FilledIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void FilledIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconToggleButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void FilledTonalIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void FilledTonalIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconToggleButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void IconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.IconButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void IconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.IconToggleButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void OutlinedIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.IconButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void OutlinedIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.IconToggleButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FilledIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FilledIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconToggleButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FilledTonalIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FilledTonalIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconToggleButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void IconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.material3.IconButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void IconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.material3.IconToggleButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void OutlinedIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconButtonColors colors, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void OutlinedIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconToggleButtonColors colors, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
   public final class IconKt {
@@ -399,13 +399,13 @@
   }
 
   public final class NavigationBarItemDefaults {
-    method @androidx.compose.runtime.Composable public androidx.compose.material3.NavigationBarItemColors colors(optional long selectedIconColor, optional long unselectedIconColor, optional long selectedTextColor, optional long unselectedTextColor, optional long indicatorColor);
+    method @androidx.compose.runtime.Composable public androidx.compose.material3.NavigationBarItemColors colors(optional long selectedIconColor, optional long selectedTextColor, optional long indicatorColor, optional long unselectedIconColor, optional long unselectedTextColor);
     field public static final androidx.compose.material3.NavigationBarItemDefaults INSTANCE;
   }
 
   public final class NavigationBarKt {
     method @androidx.compose.runtime.Composable public static void NavigationBar(optional androidx.compose.ui.Modifier modifier, optional long containerColor, optional long contentColor, optional float tonalElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void NavigationBarItem(androidx.compose.foundation.layout.RowScope, boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional boolean alwaysShowLabel, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.NavigationBarItemColors colors);
+    method @androidx.compose.runtime.Composable public static void NavigationBarItem(androidx.compose.foundation.layout.RowScope, boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional boolean alwaysShowLabel, optional androidx.compose.material3.NavigationBarItemColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   public final class NavigationDrawerKt {
@@ -425,13 +425,13 @@
   }
 
   public final class NavigationRailItemDefaults {
-    method @androidx.compose.runtime.Composable public androidx.compose.material3.NavigationRailItemColors colors(optional long selectedIconColor, optional long unselectedIconColor, optional long selectedTextColor, optional long unselectedTextColor, optional long indicatorColor);
+    method @androidx.compose.runtime.Composable public androidx.compose.material3.NavigationRailItemColors colors(optional long selectedIconColor, optional long selectedTextColor, optional long indicatorColor, optional long unselectedIconColor, optional long unselectedTextColor);
     field public static final androidx.compose.material3.NavigationRailItemDefaults INSTANCE;
   }
 
   public final class NavigationRailKt {
     method @androidx.compose.runtime.Composable public static void NavigationRail(optional androidx.compose.ui.Modifier modifier, optional long containerColor, optional long contentColor, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? header, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void NavigationRailItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional boolean alwaysShowLabel, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.NavigationRailItemColors colors);
+    method @androidx.compose.runtime.Composable public static void NavigationRailItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional boolean alwaysShowLabel, optional androidx.compose.material3.NavigationRailItemColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   public final class OutlinedTextFieldKt {
@@ -468,7 +468,7 @@
   }
 
   public final class RadioButtonKt {
-    method @androidx.compose.runtime.Composable public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.RadioButtonColors colors);
+    method @androidx.compose.runtime.Composable public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.material3.RadioButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   public final class ScaffoldKt {
@@ -513,12 +513,12 @@
   }
 
   public final class SliderDefaults {
-    method @androidx.compose.runtime.Composable public androidx.compose.material3.SliderColors colors(optional long thumbColor, optional long disabledThumbColor, optional long activeTrackColor, optional long inactiveTrackColor, optional long disabledActiveTrackColor, optional long disabledInactiveTrackColor, optional long activeTickColor, optional long inactiveTickColor, optional long disabledActiveTickColor, optional long disabledInactiveTickColor);
+    method @androidx.compose.runtime.Composable public androidx.compose.material3.SliderColors colors(optional long thumbColor, optional long activeTrackColor, optional long activeTickColor, optional long inactiveTrackColor, optional long inactiveTickColor, optional long disabledThumbColor, optional long disabledActiveTrackColor, optional long disabledActiveTickColor, optional long disabledInactiveTrackColor, optional long disabledInactiveTickColor);
     field public static final androidx.compose.material3.SliderDefaults INSTANCE;
   }
 
   public final class SliderKt {
-    method @androidx.compose.runtime.Composable public static void Slider(float value, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit> onValueChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional int steps, optional kotlin.jvm.functions.Function0<kotlin.Unit>? onValueChangeFinished, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.SliderColors colors);
+    method @androidx.compose.runtime.Composable public static void Slider(float value, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit> onValueChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional int steps, optional kotlin.jvm.functions.Function0<kotlin.Unit>? onValueChangeFinished, optional androidx.compose.material3.SliderColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   @androidx.compose.runtime.Stable public interface SnackbarData {
@@ -613,7 +613,7 @@
   }
 
   public final class SwitchKt {
-    method @androidx.compose.runtime.Composable public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? thumbContent, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.SwitchColors colors);
+    method @androidx.compose.runtime.Composable public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? thumbContent, optional boolean enabled, optional androidx.compose.material3.SwitchColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   public final class TabKt {
diff --git a/compose/material3/material3/api/public_plus_experimental_current.txt b/compose/material3/material3/api/public_plus_experimental_current.txt
index e0bda3a9..5c3774a 100644
--- a/compose/material3/material3/api/public_plus_experimental_current.txt
+++ b/compose/material3/material3/api/public_plus_experimental_current.txt
@@ -21,7 +21,7 @@
   }
 
   public final class AndroidAlertDialog_androidKt {
-    method @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, kotlin.jvm.functions.Function0<kotlin.Unit> confirmButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? dismissButton, optional kotlin.jvm.functions.Function0<kotlin.Unit>? icon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? text, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional float tonalElevation, optional long iconContentColor, optional long titleContentColor, optional long textContentColor, optional androidx.compose.ui.window.DialogProperties properties);
+    method @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, kotlin.jvm.functions.Function0<kotlin.Unit> confirmButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? dismissButton, optional kotlin.jvm.functions.Function0<kotlin.Unit>? icon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? text, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long iconContentColor, optional long titleContentColor, optional long textContentColor, optional float tonalElevation, optional androidx.compose.ui.window.DialogProperties properties);
   }
 
   public final class AndroidMenu_androidKt {
@@ -30,7 +30,7 @@
   }
 
   public final class AppBarKt {
-    method @androidx.compose.runtime.Composable public static void BottomAppBar(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> icons, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton, optional long containerColor, optional long contentColor, optional float tonalElevation, optional androidx.compose.foundation.layout.PaddingValues contentPadding);
+    method @androidx.compose.runtime.Composable public static void BottomAppBar(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> actions, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton, optional long containerColor, optional long contentColor, optional float tonalElevation, optional androidx.compose.foundation.layout.PaddingValues contentPadding);
     method @androidx.compose.runtime.Composable public static void BottomAppBar(optional androidx.compose.ui.Modifier modifier, optional long containerColor, optional long contentColor, optional float tonalElevation, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
     method @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void CenterAlignedTopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit> navigationIcon, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> actions, optional androidx.compose.material3.TopAppBarColors colors, optional androidx.compose.material3.TopAppBarScrollBehavior? scrollBehavior);
     method @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void LargeTopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit> navigationIcon, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> actions, optional androidx.compose.material3.TopAppBarColors colors, optional androidx.compose.material3.TopAppBarScrollBehavior? scrollBehavior);
@@ -132,11 +132,11 @@
   }
 
   public final class ButtonKt {
-    method @androidx.compose.runtime.Composable public static void Button(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void ElevatedButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void FilledTonalButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void OutlinedButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void TextButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void Button(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void ElevatedButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FilledTonalButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void OutlinedButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void TextButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
   }
 
   @androidx.compose.runtime.Stable public interface CardColors {
@@ -167,12 +167,12 @@
   }
 
   public final class CardKt {
-    method @androidx.compose.runtime.Composable public static void Card(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.material3.CardColors colors, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
-    method @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void Card(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.material3.CardColors colors, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void ElevatedCard(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.material3.CardColors colors, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
-    method @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void ElevatedCard(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.material3.CardColors colors, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void OutlinedCard(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke border, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.material3.CardColors colors, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
-    method @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void OutlinedCard(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke border, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.material3.CardColors colors, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void Card(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.CardColors colors, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.foundation.BorderStroke? border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void Card(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.CardColors colors, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void ElevatedCard(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.CardColors colors, optional androidx.compose.material3.CardElevation elevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void ElevatedCard(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.CardColors colors, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void OutlinedCard(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.CardColors colors, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.foundation.BorderStroke border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void OutlinedCard(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.CardColors colors, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.foundation.BorderStroke border, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
   }
 
   @androidx.compose.runtime.Stable public interface CheckboxColors {
@@ -187,8 +187,8 @@
   }
 
   public final class CheckboxKt {
-    method @androidx.compose.runtime.Composable public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.CheckboxColors colors);
-    method @androidx.compose.runtime.Composable public static void TriStateCheckbox(androidx.compose.ui.state.ToggleableState state, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.CheckboxColors colors);
+    method @androidx.compose.runtime.Composable public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.material3.CheckboxColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
+    method @androidx.compose.runtime.Composable public static void TriStateCheckbox(androidx.compose.ui.state.ToggleableState state, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.material3.CheckboxColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Stable public interface ChipBorder {
@@ -437,7 +437,7 @@
   public final class FloatingActionButtonKt {
     method @androidx.compose.runtime.Composable public static void ExtendedFloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void ExtendedFloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> text, kotlin.jvm.functions.Function0<kotlin.Unit> icon, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean expanded, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation);
-    method @androidx.compose.runtime.Composable public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void LargeFloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void SmallFloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
@@ -466,14 +466,14 @@
   }
 
   public final class IconButtonKt {
-    method @androidx.compose.runtime.Composable public static void FilledIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void FilledIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconToggleButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void FilledTonalIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void FilledTonalIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconToggleButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void IconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.IconButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void IconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.IconToggleButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void OutlinedIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.IconButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void OutlinedIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.IconToggleButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FilledIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FilledIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconToggleButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FilledTonalIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FilledTonalIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconToggleButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void IconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.material3.IconButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void IconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.material3.IconToggleButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void OutlinedIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconButtonColors colors, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void OutlinedIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconToggleButtonColors colors, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
   public final class IconKt {
@@ -577,13 +577,13 @@
   }
 
   public final class NavigationBarItemDefaults {
-    method @androidx.compose.runtime.Composable public androidx.compose.material3.NavigationBarItemColors colors(optional long selectedIconColor, optional long unselectedIconColor, optional long selectedTextColor, optional long unselectedTextColor, optional long indicatorColor);
+    method @androidx.compose.runtime.Composable public androidx.compose.material3.NavigationBarItemColors colors(optional long selectedIconColor, optional long selectedTextColor, optional long indicatorColor, optional long unselectedIconColor, optional long unselectedTextColor);
     field public static final androidx.compose.material3.NavigationBarItemDefaults INSTANCE;
   }
 
   public final class NavigationBarKt {
     method @androidx.compose.runtime.Composable public static void NavigationBar(optional androidx.compose.ui.Modifier modifier, optional long containerColor, optional long contentColor, optional float tonalElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void NavigationBarItem(androidx.compose.foundation.layout.RowScope, boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional boolean alwaysShowLabel, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.NavigationBarItemColors colors);
+    method @androidx.compose.runtime.Composable public static void NavigationBarItem(androidx.compose.foundation.layout.RowScope, boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional boolean alwaysShowLabel, optional androidx.compose.material3.NavigationBarItemColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Stable public interface NavigationDrawerItemColors {
@@ -626,13 +626,13 @@
   }
 
   public final class NavigationRailItemDefaults {
-    method @androidx.compose.runtime.Composable public androidx.compose.material3.NavigationRailItemColors colors(optional long selectedIconColor, optional long unselectedIconColor, optional long selectedTextColor, optional long unselectedTextColor, optional long indicatorColor);
+    method @androidx.compose.runtime.Composable public androidx.compose.material3.NavigationRailItemColors colors(optional long selectedIconColor, optional long selectedTextColor, optional long indicatorColor, optional long unselectedIconColor, optional long unselectedTextColor);
     field public static final androidx.compose.material3.NavigationRailItemDefaults INSTANCE;
   }
 
   public final class NavigationRailKt {
     method @androidx.compose.runtime.Composable public static void NavigationRail(optional androidx.compose.ui.Modifier modifier, optional long containerColor, optional long contentColor, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? header, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void NavigationRailItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional boolean alwaysShowLabel, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.NavigationRailItemColors colors);
+    method @androidx.compose.runtime.Composable public static void NavigationRailItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional boolean alwaysShowLabel, optional androidx.compose.material3.NavigationRailItemColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   public final class OutlinedTextFieldKt {
@@ -671,7 +671,7 @@
   }
 
   public final class RadioButtonKt {
-    method @androidx.compose.runtime.Composable public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.RadioButtonColors colors);
+    method @androidx.compose.runtime.Composable public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.material3.RadioButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   public final class ScaffoldKt {
@@ -733,13 +733,13 @@
   }
 
   public final class SliderDefaults {
-    method @androidx.compose.runtime.Composable public androidx.compose.material3.SliderColors colors(optional long thumbColor, optional long disabledThumbColor, optional long activeTrackColor, optional long inactiveTrackColor, optional long disabledActiveTrackColor, optional long disabledInactiveTrackColor, optional long activeTickColor, optional long inactiveTickColor, optional long disabledActiveTickColor, optional long disabledInactiveTickColor);
+    method @androidx.compose.runtime.Composable public androidx.compose.material3.SliderColors colors(optional long thumbColor, optional long activeTrackColor, optional long activeTickColor, optional long inactiveTrackColor, optional long inactiveTickColor, optional long disabledThumbColor, optional long disabledActiveTrackColor, optional long disabledActiveTickColor, optional long disabledInactiveTrackColor, optional long disabledInactiveTickColor);
     field public static final androidx.compose.material3.SliderDefaults INSTANCE;
   }
 
   public final class SliderKt {
     method @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void RangeSlider(kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> value, kotlin.jvm.functions.Function1<? super kotlin.ranges.ClosedFloatingPointRange<java.lang.Float>,kotlin.Unit> onValueChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional int steps, optional kotlin.jvm.functions.Function0<kotlin.Unit>? onValueChangeFinished, optional androidx.compose.material3.SliderColors colors);
-    method @androidx.compose.runtime.Composable public static void Slider(float value, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit> onValueChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional int steps, optional kotlin.jvm.functions.Function0<kotlin.Unit>? onValueChangeFinished, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.SliderColors colors);
+    method @androidx.compose.runtime.Composable public static void Slider(float value, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit> onValueChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional int steps, optional kotlin.jvm.functions.Function0<kotlin.Unit>? onValueChangeFinished, optional androidx.compose.material3.SliderColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   @androidx.compose.runtime.Stable public interface SnackbarData {
@@ -853,7 +853,7 @@
   }
 
   public final class SwitchKt {
-    method @androidx.compose.runtime.Composable public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? thumbContent, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.SwitchColors colors);
+    method @androidx.compose.runtime.Composable public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? thumbContent, optional boolean enabled, optional androidx.compose.material3.SwitchColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   public final class TabKt {
diff --git a/compose/material3/material3/api/restricted_current.txt b/compose/material3/material3/api/restricted_current.txt
index c2adf73..cdca37d 100644
--- a/compose/material3/material3/api/restricted_current.txt
+++ b/compose/material3/material3/api/restricted_current.txt
@@ -21,7 +21,7 @@
   }
 
   public final class AndroidAlertDialog_androidKt {
-    method @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, kotlin.jvm.functions.Function0<kotlin.Unit> confirmButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? dismissButton, optional kotlin.jvm.functions.Function0<kotlin.Unit>? icon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? text, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional float tonalElevation, optional long iconContentColor, optional long titleContentColor, optional long textContentColor, optional androidx.compose.ui.window.DialogProperties properties);
+    method @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, kotlin.jvm.functions.Function0<kotlin.Unit> confirmButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? dismissButton, optional kotlin.jvm.functions.Function0<kotlin.Unit>? icon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? text, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long iconContentColor, optional long titleContentColor, optional long textContentColor, optional float tonalElevation, optional androidx.compose.ui.window.DialogProperties properties);
   }
 
   public final class AndroidMenu_androidKt {
@@ -30,7 +30,7 @@
   }
 
   public final class AppBarKt {
-    method @androidx.compose.runtime.Composable public static void BottomAppBar(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> icons, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton, optional long containerColor, optional long contentColor, optional float tonalElevation, optional androidx.compose.foundation.layout.PaddingValues contentPadding);
+    method @androidx.compose.runtime.Composable public static void BottomAppBar(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> actions, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton, optional long containerColor, optional long contentColor, optional float tonalElevation, optional androidx.compose.foundation.layout.PaddingValues contentPadding);
     method @androidx.compose.runtime.Composable public static void BottomAppBar(optional androidx.compose.ui.Modifier modifier, optional long containerColor, optional long contentColor, optional float tonalElevation, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
   }
 
@@ -110,11 +110,11 @@
   }
 
   public final class ButtonKt {
-    method @androidx.compose.runtime.Composable public static void Button(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void ElevatedButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void FilledTonalButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void OutlinedButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void TextButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void Button(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void ElevatedButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FilledTonalButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void OutlinedButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void TextButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.ButtonColors colors, optional androidx.compose.material3.ButtonElevation? elevation, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
   }
 
   @androidx.compose.runtime.Stable public interface CardColors {
@@ -145,9 +145,9 @@
   }
 
   public final class CardKt {
-    method @androidx.compose.runtime.Composable public static void Card(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.material3.CardColors colors, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void ElevatedCard(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.material3.CardColors colors, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void OutlinedCard(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke border, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.material3.CardColors colors, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void Card(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.CardColors colors, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.foundation.BorderStroke? border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void ElevatedCard(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.CardColors colors, optional androidx.compose.material3.CardElevation elevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void OutlinedCard(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.CardColors colors, optional androidx.compose.material3.CardElevation elevation, optional androidx.compose.foundation.BorderStroke border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
   }
 
   @androidx.compose.runtime.Stable public interface CheckboxColors {
@@ -162,8 +162,8 @@
   }
 
   public final class CheckboxKt {
-    method @androidx.compose.runtime.Composable public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.CheckboxColors colors);
-    method @androidx.compose.runtime.Composable public static void TriStateCheckbox(androidx.compose.ui.state.ToggleableState state, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.CheckboxColors colors);
+    method @androidx.compose.runtime.Composable public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.material3.CheckboxColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
+    method @androidx.compose.runtime.Composable public static void TriStateCheckbox(androidx.compose.ui.state.ToggleableState state, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.material3.CheckboxColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   public final class ChipKt {
@@ -297,7 +297,7 @@
   public final class FloatingActionButtonKt {
     method @androidx.compose.runtime.Composable public static void ExtendedFloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void ExtendedFloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> text, kotlin.jvm.functions.Function0<kotlin.Unit> icon, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean expanded, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation);
-    method @androidx.compose.runtime.Composable public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void LargeFloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void SmallFloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional androidx.compose.material3.FloatingActionButtonElevation elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
@@ -326,14 +326,14 @@
   }
 
   public final class IconButtonKt {
-    method @androidx.compose.runtime.Composable public static void FilledIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void FilledIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconToggleButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void FilledTonalIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void FilledTonalIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconToggleButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void IconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.IconButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void IconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.IconToggleButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void OutlinedIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.IconButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void OutlinedIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.material3.IconToggleButtonColors colors, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FilledIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FilledIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconToggleButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FilledTonalIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void FilledTonalIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconToggleButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void IconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.material3.IconButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void IconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.material3.IconToggleButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void OutlinedIconButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconButtonColors colors, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void OutlinedIconToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.IconToggleButtonColors colors, optional androidx.compose.foundation.BorderStroke? border, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
   public final class IconKt {
@@ -399,13 +399,13 @@
   }
 
   public final class NavigationBarItemDefaults {
-    method @androidx.compose.runtime.Composable public androidx.compose.material3.NavigationBarItemColors colors(optional long selectedIconColor, optional long unselectedIconColor, optional long selectedTextColor, optional long unselectedTextColor, optional long indicatorColor);
+    method @androidx.compose.runtime.Composable public androidx.compose.material3.NavigationBarItemColors colors(optional long selectedIconColor, optional long selectedTextColor, optional long indicatorColor, optional long unselectedIconColor, optional long unselectedTextColor);
     field public static final androidx.compose.material3.NavigationBarItemDefaults INSTANCE;
   }
 
   public final class NavigationBarKt {
     method @androidx.compose.runtime.Composable public static void NavigationBar(optional androidx.compose.ui.Modifier modifier, optional long containerColor, optional long contentColor, optional float tonalElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void NavigationBarItem(androidx.compose.foundation.layout.RowScope, boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional boolean alwaysShowLabel, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.NavigationBarItemColors colors);
+    method @androidx.compose.runtime.Composable public static void NavigationBarItem(androidx.compose.foundation.layout.RowScope, boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional boolean alwaysShowLabel, optional androidx.compose.material3.NavigationBarItemColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   public final class NavigationDrawerKt {
@@ -425,13 +425,13 @@
   }
 
   public final class NavigationRailItemDefaults {
-    method @androidx.compose.runtime.Composable public androidx.compose.material3.NavigationRailItemColors colors(optional long selectedIconColor, optional long unselectedIconColor, optional long selectedTextColor, optional long unselectedTextColor, optional long indicatorColor);
+    method @androidx.compose.runtime.Composable public androidx.compose.material3.NavigationRailItemColors colors(optional long selectedIconColor, optional long selectedTextColor, optional long indicatorColor, optional long unselectedIconColor, optional long unselectedTextColor);
     field public static final androidx.compose.material3.NavigationRailItemDefaults INSTANCE;
   }
 
   public final class NavigationRailKt {
     method @androidx.compose.runtime.Composable public static void NavigationRail(optional androidx.compose.ui.Modifier modifier, optional long containerColor, optional long contentColor, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? header, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void NavigationRailItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional boolean alwaysShowLabel, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.NavigationRailItemColors colors);
+    method @androidx.compose.runtime.Composable public static void NavigationRailItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional boolean alwaysShowLabel, optional androidx.compose.material3.NavigationRailItemColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   public final class OutlinedTextFieldKt {
@@ -468,7 +468,7 @@
   }
 
   public final class RadioButtonKt {
-    method @androidx.compose.runtime.Composable public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.RadioButtonColors colors);
+    method @androidx.compose.runtime.Composable public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.material3.RadioButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   public final class ScaffoldKt {
@@ -513,12 +513,12 @@
   }
 
   public final class SliderDefaults {
-    method @androidx.compose.runtime.Composable public androidx.compose.material3.SliderColors colors(optional long thumbColor, optional long disabledThumbColor, optional long activeTrackColor, optional long inactiveTrackColor, optional long disabledActiveTrackColor, optional long disabledInactiveTrackColor, optional long activeTickColor, optional long inactiveTickColor, optional long disabledActiveTickColor, optional long disabledInactiveTickColor);
+    method @androidx.compose.runtime.Composable public androidx.compose.material3.SliderColors colors(optional long thumbColor, optional long activeTrackColor, optional long activeTickColor, optional long inactiveTrackColor, optional long inactiveTickColor, optional long disabledThumbColor, optional long disabledActiveTrackColor, optional long disabledActiveTickColor, optional long disabledInactiveTrackColor, optional long disabledInactiveTickColor);
     field public static final androidx.compose.material3.SliderDefaults INSTANCE;
   }
 
   public final class SliderKt {
-    method @androidx.compose.runtime.Composable public static void Slider(float value, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit> onValueChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional int steps, optional kotlin.jvm.functions.Function0<kotlin.Unit>? onValueChangeFinished, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.SliderColors colors);
+    method @androidx.compose.runtime.Composable public static void Slider(float value, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit> onValueChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional int steps, optional kotlin.jvm.functions.Function0<kotlin.Unit>? onValueChangeFinished, optional androidx.compose.material3.SliderColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   @androidx.compose.runtime.Stable public interface SnackbarData {
@@ -613,7 +613,7 @@
   }
 
   public final class SwitchKt {
-    method @androidx.compose.runtime.Composable public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? thumbContent, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material3.SwitchColors colors);
+    method @androidx.compose.runtime.Composable public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? thumbContent, optional boolean enabled, optional androidx.compose.material3.SwitchColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
   public final class TabKt {
diff --git a/compose/material3/material3/integration-tests/material3-demos/src/main/java/androidx/compose/material3/demos/ShapeDemos.kt b/compose/material3/material3/integration-tests/material3-demos/src/main/java/androidx/compose/material3/demos/ShapeDemos.kt
index e8388fe..b34e08d 100644
--- a/compose/material3/material3/integration-tests/material3-demos/src/main/java/androidx/compose/material3/demos/ShapeDemos.kt
+++ b/compose/material3/material3/integration-tests/material3-demos/src/main/java/androidx/compose/material3/demos/ShapeDemos.kt
@@ -38,18 +38,18 @@
         horizontalAlignment = Alignment.CenterHorizontally,
         modifier = Modifier.verticalScroll(rememberScrollState()),
     ) {
-        Button(shape = RectangleShape, onClick = {}) { Text("None") }
+        Button(onClick = {}, shape = RectangleShape) { Text("None") }
         Spacer(modifier = Modifier.height(16.dp))
-        Button(shape = shapes.extraSmall, onClick = {}) { Text("Extra  Small") }
+        Button(onClick = {}, shape = shapes.extraSmall) { Text("Extra  Small") }
         Spacer(modifier = Modifier.height(16.dp))
-        Button(shape = shapes.small, onClick = {}) { Text("Small") }
+        Button(onClick = {}, shape = shapes.small) { Text("Small") }
         Spacer(modifier = Modifier.height(16.dp))
-        Button(shape = shapes.medium, onClick = {}) { Text("Medium") }
+        Button(onClick = {}, shape = shapes.medium) { Text("Medium") }
         Spacer(modifier = Modifier.height(16.dp))
-        Button(shape = shapes.large, onClick = {}) { Text("Large") }
+        Button(onClick = {}, shape = shapes.large) { Text("Large") }
         Spacer(modifier = Modifier.height(16.dp))
-        Button(shape = shapes.extraLarge, onClick = {}) { Text("Extra Large") }
+        Button(onClick = {}, shape = shapes.extraLarge) { Text("Extra Large") }
         Spacer(modifier = Modifier.height(16.dp))
-        Button(shape = CircleShape, onClick = {}) { Text("Full") }
+        Button(onClick = {}, shape = CircleShape) { Text("Full") }
     }
 }
diff --git a/compose/material3/material3/lint-baseline.xml b/compose/material3/material3/lint-baseline.xml
new file mode 100644
index 0000000..328b7622
--- /dev/null
+++ b/compose/material3/material3/lint-baseline.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<issues format="6" by="lint 7.4.0-alpha08" type="baseline" client="gradle" dependencies="false" name="AGP (7.4.0-alpha08)" variant="all" version="7.4.0-alpha08">
+
+    <issue
+        id="IllegalExperimentalApiUsage"
+        message="`Experimental` and `RequiresOptIn` APIs may only be used within the same-version group where they were defined."
+        errorLine1="@OptIn(ExperimentalTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/material3/IncludeFontPaddingHelper.android.kt"/>
+    </issue>
+
+</issues>
diff --git a/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/AppBarSamples.kt b/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/AppBarSamples.kt
index c9ce766..e1199d8 100644
--- a/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/AppBarSamples.kt
+++ b/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/AppBarSamples.kt
@@ -430,7 +430,7 @@
 @Composable
 fun BottomAppBarWithFAB() {
     BottomAppBar(
-        icons = {
+        actions = {
             IconButton(onClick = { /* doSomething() */ }) {
                 Icon(Icons.Filled.Check, contentDescription = "Localized description")
             }
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/AppBarScreenshotTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/AppBarScreenshotTest.kt
index 10c2353..faea010 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/AppBarScreenshotTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/AppBarScreenshotTest.kt
@@ -303,7 +303,7 @@
         composeTestRule.setMaterialContent(lightColorScheme()) {
             Box(Modifier.testTag(BottomAppBarTestTag)) {
                 BottomAppBar(
-                    icons = {
+                    actions = {
                         IconButton(onClick = { /* doSomething() */ }) {
                             Icon(
                                 imageVector = Icons.Filled.Menu,
@@ -335,7 +335,7 @@
         composeTestRule.setMaterialContent(darkColorScheme()) {
             Box(Modifier.testTag(BottomAppBarTestTag)) {
                 BottomAppBar(
-                    icons = {
+                    actions = {
                         IconButton(onClick = { /* doSomething() */ }) {
                             Icon(
                                 imageVector = Icons.Filled.Menu,
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/AppBarTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/AppBarTest.kt
index a83167cb..b3c0b8f 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/AppBarTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/AppBarTest.kt
@@ -812,7 +812,7 @@
         rule
             .setMaterialContentForSizeAssertions {
                 BottomAppBar(
-                    icons = {},
+                    actions = {},
                     floatingActionButton = {
                         FloatingActionButton(
                             onClick = { /* do something */ },
@@ -862,7 +862,7 @@
     fun bottomAppBarWithFAB_default_positioning() {
         rule.setMaterialContent(lightColorScheme()) {
             BottomAppBar(
-                icons = {},
+                actions = {},
                 Modifier.testTag("bar"),
                 floatingActionButton = {
                     FloatingActionButton(
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/ListItemScreenshotTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/ListItemScreenshotTest.kt
index ad47991..3f65222 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/ListItemScreenshotTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/ListItemScreenshotTest.kt
@@ -22,6 +22,7 @@
 import androidx.compose.material.icons.filled.Favorite
 import androidx.compose.testutils.assertAgainstGolden
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.testTag
 import androidx.compose.ui.test.captureToImage
 import androidx.compose.ui.test.junit4.createComposeRule
@@ -47,6 +48,28 @@
     val screenshotRule = AndroidXScreenshotTestRule(GOLDEN_MATERIAL3)
 
     @Test
+    fun listItem_customColor() {
+        composeTestRule.setMaterialContent(lightColorScheme()) {
+            Column(Modifier.testTag(Tag)) {
+                ListItem(
+                    headlineText = { Text("One line list item with 24x24 icon") },
+                    leadingContent = {
+                        Icon(
+                            Icons.Filled.Favorite,
+                            contentDescription = null
+                        )
+                    },
+                    colors = ListItemDefaults.colors(containerColor = Color.Red)
+                )
+                Divider()
+            }
+        }
+        composeTestRule.onNodeWithTag(Tag)
+            .captureToImage()
+            .assertAgainstGolden(screenshotRule, "list_oneLine_customColor")
+    }
+
+    @Test
     fun oneLine_lightTheme() {
         composeTestRule.setMaterialContent(lightColorScheme()) {
             Column(Modifier.testTag(Tag)) {
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/PermanentNavigationDrawerTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/PermanentNavigationDrawerTest.kt
index 988821e..4e90085 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/PermanentNavigationDrawerTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/PermanentNavigationDrawerTest.kt
@@ -18,6 +18,7 @@
 
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.width
 import androidx.compose.material3.tokens.NavigationDrawerTokens
 import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.ui.Modifier
@@ -116,6 +117,27 @@
     }
 
     @Test
+    fun permanentNavigationDrawer_testCustomWidth() {
+        rule.setMaterialContent(lightColorScheme()) {
+            PermanentNavigationDrawer(
+                drawerContent = {
+                    PermanentDrawerSheet(modifier = Modifier.width(260.dp)) {
+                        Box(
+                            Modifier
+                                .fillMaxSize()
+                                .testTag("content")
+                        )
+                    }
+                },
+                content = {}
+            )
+        }
+
+        rule.onNodeWithTag("content")
+            .assertWidthIsEqualTo(260.dp)
+    }
+
+    @Test
     @SmallTest
     fun permanentNavigationDrawer_hasPaneTitle() {
         lateinit var navigationMenu: String
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/ShapesScreenshotTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/ShapesScreenshotTest.kt
index def51d0..4b53ee8 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/ShapesScreenshotTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/ShapesScreenshotTest.kt
@@ -29,7 +29,6 @@
 import androidx.compose.ui.graphics.RectangleShape
 import androidx.compose.ui.platform.testTag
 import androidx.compose.ui.semantics.semantics
-import androidx.compose.ui.test.ExperimentalTestApi
 import androidx.compose.ui.test.captureToImage
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onNodeWithTag
@@ -45,7 +44,6 @@
 @MediumTest
 @RunWith(AndroidJUnit4::class)
 @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
-@OptIn(ExperimentalTestApi::class, ExperimentalMaterial3Api::class)
 class ShapesScreenshotTest {
 
     @get:Rule
@@ -57,25 +55,28 @@
     @Test
     fun shapes() {
         rule.setMaterialContent(lightColorScheme()) {
-            Box(Modifier.semantics(mergeDescendants = true) {}.testTag(Tag)) {
+            Box(
+                Modifier
+                    .semantics(mergeDescendants = true) {}
+                    .testTag(Tag)) {
                 val shapes = MaterialTheme.shapes
                 Column(
                     horizontalAlignment = Alignment.CenterHorizontally,
                     modifier = Modifier.verticalScroll(rememberScrollState()),
                 ) {
-                    Button(shape = RectangleShape, onClick = {}) { Text("None") }
+                    Button(onClick = {}, shape = RectangleShape) { Text("None") }
                     Spacer(modifier = Modifier.height(16.dp))
-                    Button(shape = shapes.extraSmall, onClick = {}) { Text("Extra  Small") }
+                    Button(onClick = {}, shape = shapes.extraSmall) { Text("Extra  Small") }
                     Spacer(modifier = Modifier.height(16.dp))
-                    Button(shape = shapes.small, onClick = {}) { Text("Small") }
+                    Button(onClick = {}, shape = shapes.small) { Text("Small") }
                     Spacer(modifier = Modifier.height(16.dp))
-                    Button(shape = shapes.medium, onClick = {}) { Text("Medium") }
+                    Button(onClick = {}, shape = shapes.medium) { Text("Medium") }
                     Spacer(modifier = Modifier.height(16.dp))
-                    Button(shape = shapes.large, onClick = {}) { Text("Large") }
+                    Button(onClick = {}, shape = shapes.large) { Text("Large") }
                     Spacer(modifier = Modifier.height(16.dp))
-                    Button(shape = shapes.extraLarge, onClick = {}) { Text("Extra Large") }
+                    Button(onClick = {}, shape = shapes.extraLarge) { Text("Extra Large") }
                     Spacer(modifier = Modifier.height(16.dp))
-                    Button(shape = CircleShape, onClick = {}) { Text("Full") }
+                    Button(onClick = {}, shape = CircleShape) { Text("Full") }
                 }
             }
         }
diff --git a/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/AndroidAlertDialog.android.kt b/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/AndroidAlertDialog.android.kt
index cd77885..abe3066 100644
--- a/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/AndroidAlertDialog.android.kt
+++ b/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/AndroidAlertDialog.android.kt
@@ -60,12 +60,12 @@
  * @param shape defines the shape of this dialog's container
  * @param containerColor the color used for the background of this dialog. Use [Color.Transparent]
  * to have no color.
- * @param tonalElevation when [containerColor] is [ColorScheme.surface], a translucent primary color
- * overlay is applied on top of the container. A higher tonal elevation value will result in a
- * darker color in light theme and lighter color in dark theme. See also: [Surface].
  * @param iconContentColor the content color used for the icon.
  * @param titleContentColor the content color used for the title.
  * @param textContentColor the content color used for the text.
+ * @param tonalElevation when [containerColor] is [ColorScheme.surface], a translucent primary color
+ * overlay is applied on top of the container. A higher tonal elevation value will result in a
+ * darker color in light theme and lighter color in dark theme. See also: [Surface].
  * @param properties typically platform specific properties to further configure the dialog.
  */
 @Composable
@@ -79,10 +79,10 @@
     text: @Composable (() -> Unit)? = null,
     shape: Shape = AlertDialogDefaults.shape,
     containerColor: Color = AlertDialogDefaults.containerColor,
-    tonalElevation: Dp = AlertDialogDefaults.TonalElevation,
     iconContentColor: Color = AlertDialogDefaults.iconContentColor,
     titleContentColor: Color = AlertDialogDefaults.titleContentColor,
     textContentColor: Color = AlertDialogDefaults.textContentColor,
+    tonalElevation: Dp = AlertDialogDefaults.TonalElevation,
     properties: DialogProperties = DialogProperties()
 ) {
     Dialog(
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/AppBar.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/AppBar.kt
index efc3e9d..dff4547 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/AppBar.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/AppBar.kt
@@ -308,7 +308,7 @@
  *
  * Also see [NavigationBar].
  *
- * @param icons the icon content of this BottomAppBar. The default layout here is a [Row],
+ * @param actions the icon content of this BottomAppBar. The default layout here is a [Row],
  * so content inside will be placed horizontally.
  * @param modifier the [Modifier] to be applied to this BottomAppBar
  * @param floatingActionButton optional floating action button at the end of this BottomAppBar
@@ -324,7 +324,7 @@
  */
 @Composable
 fun BottomAppBar(
-    icons: @Composable RowScope.() -> Unit,
+    actions: @Composable RowScope.() -> Unit,
     modifier: Modifier = Modifier,
     floatingActionButton: @Composable (() -> Unit)? = null,
     containerColor: Color = BottomAppBarDefaults.containerColor,
@@ -338,7 +338,7 @@
     tonalElevation = tonalElevation,
     contentPadding = contentPadding
 ) {
-    icons()
+    actions()
     if (floatingActionButton != null) {
         Spacer(Modifier.weight(1f, true))
         Box(
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Button.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Button.kt
index 6eaa263..d2e490c 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Button.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Button.kt
@@ -83,20 +83,20 @@
  * @param enabled controls the enabled state of this button. When `false`, this component will not
  * respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
- * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
- * for this button. You can create and pass in your own `remember`ed instance to observe
- * [Interaction]s and customize the appearance / behavior of this button in different states.
+ * @param shape defines the shape of this button's container, border (when [border] is not null),
+ * and shadow (when using [elevation])
+ * @param colors [ButtonColors] that will be used to resolve the colors for this button in different
+ * states. See [ButtonDefaults.buttonColors].
  * @param elevation [ButtonElevation] used to resolve the elevation for this button in different
  * states. This controls the size of the shadow below the button. Additionally, when the container
  * color is [ColorScheme.surface], this controls the amount of primary color applied as an overlay.
  * See [ButtonElevation.shadowElevation] and [ButtonElevation.tonalElevation].
- * @param shape defines the shape of this button's container, border (when [border] is not null),
- * and shadow (when using [elevation])
  * @param border the border to draw around the container of this button
- * @param colors [ButtonColors] that will be used to resolve the colors for this button in different
- * states. See [ButtonDefaults.buttonColors].
  * @param contentPadding the spacing values to apply internally between the container and the
  * content
+ * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
+ * for this button. You can create and pass in your own `remember`ed instance to observe
+ * [Interaction]s and customize the appearance / behavior of this button in different states.
  */
 @OptIn(ExperimentalMaterial3Api::class)
 @Composable
@@ -104,31 +104,29 @@
     onClick: () -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
-    elevation: ButtonElevation? = ButtonDefaults.buttonElevation(),
     shape: Shape = ButtonDefaults.shape,
-    border: BorderStroke? = null,
     colors: ButtonColors = ButtonDefaults.buttonColors(),
+    elevation: ButtonElevation? = ButtonDefaults.buttonElevation(),
+    border: BorderStroke? = null,
     contentPadding: PaddingValues = ButtonDefaults.ContentPadding,
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable RowScope.() -> Unit
 ) {
     val containerColor = colors.containerColor(enabled).value
     val contentColor = colors.contentColor(enabled).value
     val shadowElevation = elevation?.shadowElevation(enabled, interactionSource)?.value ?: 0.dp
     val tonalElevation = elevation?.tonalElevation(enabled, interactionSource)?.value ?: 0.dp
-
-    // TODO(b/202880001): Apply shadow color from token (will not be possibly any time soon, if ever).
     Surface(
         onClick = onClick,
         modifier = modifier,
+        enabled = enabled,
         shape = shape,
         color = containerColor,
         contentColor = contentColor,
         tonalElevation = tonalElevation,
         shadowElevation = shadowElevation,
         border = border,
-        interactionSource = interactionSource,
-        enabled = enabled,
+        interactionSource = interactionSource
     ) {
         CompositionLocalProvider(LocalContentColor provides contentColor) {
             ProvideTextStyle(value = MaterialTheme.typography.labelLarge) {
@@ -177,44 +175,44 @@
  * @param enabled controls the enabled state of this button. When `false`, this component will not
  * respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
- * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
- * for this button. You can create and pass in your own `remember`ed instance to observe
- * [Interaction]s and customize the appearance / behavior of this button in different states.
+ * @param shape defines the shape of this button's container, border (when [border] is not null),
+ * and shadow (when using [elevation])
+ * @param colors [ButtonColors] that will be used to resolve the colors for this button in different
+ * states. See [ButtonDefaults.elevatedButtonColors].
  * @param elevation [ButtonElevation] used to resolve the elevation for this button in different
  * states. This controls the size of the shadow below the button. Additionally, when the container
  * color is [ColorScheme.surface], this controls the amount of primary color applied as an overlay.
  * See [ButtonDefaults.elevatedButtonElevation].
- * @param shape defines the shape of this button's container, border (when [border] is not null),
- * and shadow (when using [elevation])
  * @param border the border to draw around the container of this button
- * @param colors [ButtonColors] that will be used to resolve the colors for this button in different
- * states. See [ButtonDefaults.elevatedButtonColors].
  * @param contentPadding the spacing values to apply internally between the container and the
  * content
+ * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
+ * for this button. You can create and pass in your own `remember`ed instance to observe
+ * [Interaction]s and customize the appearance / behavior of this button in different states.
  */
 @Composable
 fun ElevatedButton(
     onClick: () -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
-    elevation: ButtonElevation? = ButtonDefaults.elevatedButtonElevation(),
     shape: Shape = ButtonDefaults.elevatedShape,
-    border: BorderStroke? = null,
     colors: ButtonColors = ButtonDefaults.elevatedButtonColors(),
+    elevation: ButtonElevation? = ButtonDefaults.elevatedButtonElevation(),
+    border: BorderStroke? = null,
     contentPadding: PaddingValues = ButtonDefaults.ContentPadding,
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable RowScope.() -> Unit
 ) =
     Button(
         onClick = onClick,
         modifier = modifier,
         enabled = enabled,
-        interactionSource = interactionSource,
-        elevation = elevation,
         shape = shape,
-        border = border,
         colors = colors,
+        elevation = elevation,
+        border = border,
         contentPadding = contentPadding,
+        interactionSource = interactionSource,
         content = content
     )
 
@@ -248,43 +246,43 @@
  * @param enabled controls the enabled state of this button. When `false`, this component will not
  * respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
- * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
- * for this button. You can create and pass in your own `remember`ed instance to observe
- * [Interaction]s and customize the appearance / behavior of this button in different states.
+ * @param shape defines the shape of this button's container, border (when [border] is not null),
+ * and shadow (when using [elevation])
+ * @param colors [ButtonColors] that will be used to resolve the colors for this button in different
+ * states. See [ButtonDefaults.filledTonalButtonColors].
  * @param elevation [ButtonElevation] used to resolve the elevation for this button in different
  * states. This controls the size of the shadow below the button. Additionally, when the container
  * color is [ColorScheme.surface], this controls the amount of primary color applied as an overlay.
- * @param shape defines the shape of this button's container, border (when [border] is not null),
- * and shadow (when using [elevation])
  * @param border the border to draw around the container of this button
- * @param colors [ButtonColors] that will be used to resolve the colors for this button in different
- * states. See [ButtonDefaults.filledTonalButtonColors].
  * @param contentPadding the spacing values to apply internally between the container and the
  * content
+ * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
+ * for this button. You can create and pass in your own `remember`ed instance to observe
+ * [Interaction]s and customize the appearance / behavior of this button in different states.
  */
 @Composable
 fun FilledTonalButton(
     onClick: () -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
-    elevation: ButtonElevation? = ButtonDefaults.filledTonalButtonElevation(),
     shape: Shape = ButtonDefaults.filledTonalShape,
-    border: BorderStroke? = null,
     colors: ButtonColors = ButtonDefaults.filledTonalButtonColors(),
+    elevation: ButtonElevation? = ButtonDefaults.filledTonalButtonElevation(),
+    border: BorderStroke? = null,
     contentPadding: PaddingValues = ButtonDefaults.ContentPadding,
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable RowScope.() -> Unit
 ) =
     Button(
         onClick = onClick,
         modifier = modifier,
         enabled = enabled,
-        interactionSource = interactionSource,
-        elevation = elevation,
         shape = shape,
-        border = border,
         colors = colors,
+        elevation = elevation,
+        border = border,
         contentPadding = contentPadding,
+        interactionSource = interactionSource,
         content = content
     )
 
@@ -317,43 +315,43 @@
  * @param enabled controls the enabled state of this button. When `false`, this component will not
  * respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
- * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
- * for this button. You can create and pass in your own `remember`ed instance to observe
- * [Interaction]s and customize the appearance / behavior of this button in different states.
+ * @param shape defines the shape of this button's container, border (when [border] is not null),
+ * and shadow (when using [elevation]).
+ * @param colors [ButtonColors] that will be used to resolve the colors for this button in different
+ * states. See [ButtonDefaults.outlinedButtonColors].
  * @param elevation [ButtonElevation] used to resolve the elevation for this button in different
  * states. This controls the size of the shadow below the button. Additionally, when the container
  * color is [ColorScheme.surface], this controls the amount of primary color applied as an overlay.
- * @param shape defines the shape of this button's container, border (when [border] is not null),
- * and shadow (when using [elevation]).
  * @param border the border to draw around the container of this button. Pass `null` for no border.
- * @param colors [ButtonColors] that will be used to resolve the colors for this button in different
- * states. See [ButtonDefaults.outlinedButtonColors].
  * @param contentPadding the spacing values to apply internally between the container and the
  * content
+ * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
+ * for this button. You can create and pass in your own `remember`ed instance to observe
+ * [Interaction]s and customize the appearance / behavior of this button in different states.
  */
 @Composable
 fun OutlinedButton(
     onClick: () -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
-    elevation: ButtonElevation? = null,
     shape: Shape = ButtonDefaults.outlinedShape,
-    border: BorderStroke? = ButtonDefaults.outlinedButtonBorder,
     colors: ButtonColors = ButtonDefaults.outlinedButtonColors(),
+    elevation: ButtonElevation? = null,
+    border: BorderStroke? = ButtonDefaults.outlinedButtonBorder,
     contentPadding: PaddingValues = ButtonDefaults.ContentPadding,
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable RowScope.() -> Unit
 ) =
     Button(
         onClick = onClick,
         modifier = modifier,
         enabled = enabled,
-        interactionSource = interactionSource,
-        elevation = elevation,
         shape = shape,
-        border = border,
         colors = colors,
+        elevation = elevation,
+        border = border,
         contentPadding = contentPadding,
+        interactionSource = interactionSource,
         content = content
     )
 
@@ -386,45 +384,45 @@
  * @param enabled controls the enabled state of this button. When `false`, this component will not
  * respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
- * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
- * for this button. You can create and pass in your own `remember`ed instance to observe
- * [Interaction]s and customize the appearance / behavior of this button in different states.
+ * @param shape defines the shape of this button's container, border (when [border] is not null),
+ * and shadow (when using [elevation])
+ * @param colors [ButtonColors] that will be used to resolve the colors for this button in different
+ * states. See [ButtonDefaults.textButtonColors].
  * @param elevation [ButtonElevation] used to resolve the elevation for this button in different
  * states. This controls the size of the shadow below the button. Additionally, when the container
  * color is [ColorScheme.surface], this controls the amount of primary color applied as an overlay.
  * A TextButton typically has no elevation, and the default value is `null`. See [ElevatedButton]
  * for a button with elevation.
- * @param shape defines the shape of this button's container, border (when [border] is not null),
- * and shadow (when using [elevation])
  * @param border the border to draw around the container of this button
- * @param colors [ButtonColors] that will be used to resolve the colors for this button in different
- * states. See [ButtonDefaults.textButtonColors].
  * @param contentPadding the spacing values to apply internally between the container and the
  * content
+ * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
+ * for this button. You can create and pass in your own `remember`ed instance to observe
+ * [Interaction]s and customize the appearance / behavior of this button in different states.
  */
 @Composable
 fun TextButton(
     onClick: () -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
-    elevation: ButtonElevation? = null,
     shape: Shape = ButtonDefaults.textShape,
-    border: BorderStroke? = null,
     colors: ButtonColors = ButtonDefaults.textButtonColors(),
+    elevation: ButtonElevation? = null,
+    border: BorderStroke? = null,
     contentPadding: PaddingValues = ButtonDefaults.TextButtonContentPadding,
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable RowScope.() -> Unit
 ) =
     Button(
         onClick = onClick,
         modifier = modifier,
         enabled = enabled,
-        interactionSource = interactionSource,
-        elevation = elevation,
         shape = shape,
-        border = border,
         colors = colors,
+        elevation = elevation,
+        border = border,
         contentPadding = contentPadding,
+        interactionSource = interactionSource,
         content = content
     )
 
@@ -448,11 +446,7 @@
  */
 object ButtonDefaults {
 
-    // TODO(b/201344013): Make sure these values stay up to date until replaced with tokens.
     private val ButtonHorizontalPadding = 24.dp
-
-    // TODO(b/202453316): There is no current vertical padding in the spec.
-    // Instead, the height is const 40dp, and the content is vertically center-aligned.
     private val ButtonVerticalPadding = 8.dp
 
     /**
@@ -462,7 +456,6 @@
      * - See [TextButtonContentPadding] for content padding used by [TextButton].
      * - See [ButtonWithIconContentPadding] for content padding used by [Button] that contains [Icon].
      */
-    // TODO(b/201343537): Use tokens.
     val ContentPadding =
         PaddingValues(
             start = ButtonHorizontalPadding,
@@ -482,7 +475,6 @@
             bottom = ButtonVerticalPadding
         )
 
-    // TODO(b/201344013): Make sure these values stay up to date until replaced with tokens.
     private val TextButtonHorizontalPadding = 12.dp
 
     /** The default content padding used by [TextButton] */
@@ -498,24 +490,20 @@
      * The default min width applied for all buttons. Note that you can override it by applying
      * Modifier.widthIn directly on the button composable.
      */
-    // TODO(b/202453316): Make sure this value stays up to date until replaced with a token.
     val MinWidth = 58.dp
 
     /**
      * The default min height applied for all buttons. Note that you can override it by applying
      * Modifier.heightIn directly on the button composable.
      */
-    // TODO(b/202453316): Make sure this value stays up to date until replaced with a token.
     val MinHeight = 40.dp
 
     /** The default size of the icon when used inside any button. */
-    // TODO(b/201344013): Make sure this value stays up to date until replaced with a token.
-    val IconSize = 18.dp
+    val IconSize = FilledButtonTokens.IconSize
 
     /**
      * The default size of the spacing between an icon and a text when they used inside any button.
      */
-    // TODO(b/201344013): Make sure this value stays up to date until replaced with a token.
     val IconSpacing = 8.dp
 
     /** Default shape for a button. */
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Card.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Card.kt
index cedd229..563f3f1 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Card.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Card.kt
@@ -65,21 +65,21 @@
  * @param modifier the [Modifier] to be applied to this card
  * @param shape defines the shape of this card's container, border (when [border] is not null), and
  * shadow (when using [elevation])
- * @param border the border to draw around the container of this card
+ * @param colors [CardColors] that will be used to resolve the colors used for this card in
+ * different states. See [CardDefaults.cardColors].
  * @param elevation [CardElevation] used to resolve the elevation for this card in different states.
  * This controls the size of the shadow below the card. Additionally, when the container color is
  * [ColorScheme.surface], this controls the amount of primary color applied as an overlay. See also:
  * [Surface].
- * @param colors [CardColors] that will be used to resolve the colors used for this card in
- * different states. See [CardDefaults.cardColors].
+ * @param border the border to draw around the container of this card
  */
 @Composable
 fun Card(
     modifier: Modifier = Modifier,
     shape: Shape = CardDefaults.shape,
-    border: BorderStroke? = null,
-    elevation: CardElevation = CardDefaults.cardElevation(),
     colors: CardColors = CardDefaults.cardColors(),
+    elevation: CardElevation = CardDefaults.cardElevation(),
+    border: BorderStroke? = null,
     content: @Composable ColumnScope.() -> Unit
 ) {
     Surface(
@@ -114,18 +114,19 @@
  * @param enabled controls the enabled state of this card. When `false`, this component will not
  * respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
- * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
- * for this card. You can create and pass in your own `remember`ed instance to observe
- * [Interaction]s and customize the appearance / behavior of this card in different states.
  * @param shape defines the shape of this card's container, border (when [border] is not null), and
  * shadow (when using [elevation])
- * @param border the border to draw around the container of this card
+ * @param colors [CardColors] that will be used to resolve the color(s) used for this card in
+ * different states. See [CardDefaults.cardColors].
  * @param elevation [CardElevation] used to resolve the elevation for this card in different states.
  * This controls the size of the shadow below the card. Additionally, when the container color is
  * [ColorScheme.surface], this controls the amount of primary color applied as an overlay. See also:
  * [Surface].
- * @param colors [CardColors] that will be used to resolve the color(s) used for this card in
- * different states. See [CardDefaults.cardColors].
+ * @param border the border to draw around the container of this card
+ * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
+ * for this card. You can create and pass in your own `remember`ed instance to observe
+ * [Interaction]s and customize the appearance / behavior of this card in different states.
+ *
  */
 @ExperimentalMaterial3Api
 @Composable
@@ -133,11 +134,11 @@
     onClick: () -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     shape: Shape = CardDefaults.shape,
-    border: BorderStroke? = null,
-    elevation: CardElevation = CardDefaults.cardElevation(),
     colors: CardColors = CardDefaults.cardColors(),
+    elevation: CardElevation = CardDefaults.cardElevation(),
+    border: BorderStroke? = null,
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable ColumnScope.() -> Unit
 ) {
     Surface(
@@ -173,19 +174,19 @@
  *
  * @param modifier the [Modifier] to be applied to this card
  * @param shape defines the shape of this card's container and shadow (when using [elevation])
+ * @param colors [CardColors] that will be used to resolve the color(s) used for this card in
+ * different states. See [CardDefaults.elevatedCardElevation].
  * @param elevation [CardElevation] used to resolve the elevation for this card in different states.
  * This controls the size of the shadow below the card. Additionally, when the container color is
  * [ColorScheme.surface], this controls the amount of primary color applied as an overlay. See also:
  * [Surface].
- * @param colors [CardColors] that will be used to resolve the color(s) used for this card in
- * different states. See [CardDefaults.elevatedCardElevation].
  */
 @Composable
 fun ElevatedCard(
     modifier: Modifier = Modifier,
     shape: Shape = CardDefaults.elevatedShape,
-    elevation: CardElevation = CardDefaults.elevatedCardElevation(),
     colors: CardColors = CardDefaults.elevatedCardColors(),
+    elevation: CardElevation = CardDefaults.elevatedCardElevation(),
     content: @Composable ColumnScope.() -> Unit
 ) = Card(
     modifier = modifier,
@@ -215,16 +216,16 @@
  * @param enabled controls the enabled state of this card. When `false`, this component will not
  * respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
- * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
- * for this card. You can create and pass in your own `remember`ed instance to observe
- * [Interaction]s and customize the appearance / behavior of this card in different states.
  * @param shape defines the shape of this card's container and shadow (when using [elevation])
+ * @param colors [CardColors] that will be used to resolve the color(s) used for this card in
+ * different states. See [CardDefaults.elevatedCardElevation].
  * @param elevation [CardElevation] used to resolve the elevation for this card in different states.
  * This controls the size of the shadow below the card. Additionally, when the container color is
  * [ColorScheme.surface], this controls the amount of primary color applied as an overlay. See also:
  * [Surface].
- * @param colors [CardColors] that will be used to resolve the color(s) used for this card in
- * different states. See [CardDefaults.elevatedCardElevation].
+ * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
+ * for this card. You can create and pass in your own `remember`ed instance to observe
+ * [Interaction]s and customize the appearance / behavior of this card in different states.
  */
 @ExperimentalMaterial3Api
 @Composable
@@ -232,20 +233,20 @@
     onClick: () -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     shape: Shape = CardDefaults.elevatedShape,
-    elevation: CardElevation = CardDefaults.elevatedCardElevation(),
     colors: CardColors = CardDefaults.elevatedCardColors(),
+    elevation: CardElevation = CardDefaults.elevatedCardElevation(),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable ColumnScope.() -> Unit
 ) = Card(
     onClick = onClick,
     modifier = modifier,
     enabled = enabled,
-    interactionSource = interactionSource,
     shape = shape,
-    border = null,
-    elevation = elevation,
     colors = colors,
+    elevation = elevation,
+    border = null,
+    interactionSource = interactionSource,
     content = content
 )
 
@@ -266,28 +267,28 @@
  * @param modifier the [Modifier] to be applied to this card
  * @param shape defines the shape of this card's container, border (when [border] is not null), and
  * shadow (when using [elevation])
- * @param border the border to draw around the container of this card
+ * @param colors [CardColors] that will be used to resolve the color(s) used for this card in
+ * different states. See [CardDefaults.outlinedCardColors].
  * @param elevation [CardElevation] used to resolve the elevation for this card in different states.
  * This controls the size of the shadow below the card. Additionally, when the container color is
  * [ColorScheme.surface], this controls the amount of primary color applied as an overlay. See also:
  * [Surface].
- * @param colors [CardColors] that will be used to resolve the color(s) used for this card in
- * different states. See [CardDefaults.outlinedCardColors].
+ * @param border the border to draw around the container of this card
  */
 @Composable
 fun OutlinedCard(
     modifier: Modifier = Modifier,
     shape: Shape = CardDefaults.outlinedShape,
-    border: BorderStroke = CardDefaults.outlinedCardBorder(),
-    elevation: CardElevation = CardDefaults.outlinedCardElevation(),
     colors: CardColors = CardDefaults.outlinedCardColors(),
+    elevation: CardElevation = CardDefaults.outlinedCardElevation(),
+    border: BorderStroke = CardDefaults.outlinedCardBorder(),
     content: @Composable ColumnScope.() -> Unit
 ) = Card(
     modifier = modifier,
     shape = shape,
-    border = border,
-    elevation = elevation,
     colors = colors,
+    elevation = elevation,
+    border = border,
     content = content
 )
 
@@ -309,18 +310,18 @@
  * @param enabled controls the enabled state of this card. When `false`, this component will not
  * respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
- * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
- * for this card. You can create and pass in your own `remember`ed instance to observe
- * [Interaction]s and customize the appearance / behavior of this card in different states.
  * @param shape defines the shape of this card's container, border (when [border] is not null), and
  * shadow (when using [elevation])
- * @param border the border to draw around the container of this card
+ * @param colors [CardColors] that will be used to resolve the color(s) used for this card in
+ * different states. See [CardDefaults.outlinedCardColors].
  * @param elevation [CardElevation] used to resolve the elevation for this card in different states.
  * This controls the size of the shadow below the card. Additionally, when the container color is
  * [ColorScheme.surface], this controls the amount of primary color applied as an overlay. See also:
  * [Surface].
- * @param colors [CardColors] that will be used to resolve the color(s) used for this card in
- * different states. See [CardDefaults.outlinedCardColors].
+ * @param border the border to draw around the container of this card
+ * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
+ * for this card. You can create and pass in your own `remember`ed instance to observe
+ * [Interaction]s and customize the appearance / behavior of this card in different states.
  */
 @ExperimentalMaterial3Api
 @Composable
@@ -328,21 +329,21 @@
     onClick: () -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     shape: Shape = CardDefaults.outlinedShape,
-    border: BorderStroke = CardDefaults.outlinedCardBorder(enabled),
-    elevation: CardElevation = CardDefaults.outlinedCardElevation(),
     colors: CardColors = CardDefaults.outlinedCardColors(),
+    elevation: CardElevation = CardDefaults.outlinedCardElevation(),
+    border: BorderStroke = CardDefaults.outlinedCardBorder(enabled),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable ColumnScope.() -> Unit
 ) = Card(
     onClick = onClick,
     modifier = modifier,
     enabled = enabled,
-    interactionSource = interactionSource,
     shape = shape,
-    border = border,
-    elevation = elevation,
     colors = colors,
+    elevation = elevation,
+    border = border,
+    interactionSource = interactionSource,
     content = content
 )
 
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Checkbox.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Checkbox.kt
index d8483ff..c521bd8 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Checkbox.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Checkbox.kt
@@ -79,11 +79,11 @@
  * @param enabled controls the enabled state of this checkbox. When `false`, this component will not
  * respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
+ * @param colors [CheckboxColors] that will be used to resolve the colors used for this checkbox in
+ * different states. See [CheckboxDefaults.colors].
  * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
  * for this checkbox. You can create and pass in your own `remember`ed instance to observe
  * [Interaction]s and customize the appearance / behavior of this checkbox in different states.
- * @param colors [CheckboxColors] that will be used to resolve the colors used for this checkbox in
- * different states. See [CheckboxDefaults.colors].
  */
 @Composable
 fun Checkbox(
@@ -91,18 +91,18 @@
     onCheckedChange: ((Boolean) -> Unit)?,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
-    colors: CheckboxColors = CheckboxDefaults.colors()
+    colors: CheckboxColors = CheckboxDefaults.colors(),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }
 ) {
     TriStateCheckbox(
         state = ToggleableState(checked),
         onClick = if (onCheckedChange != null) {
             { onCheckedChange(!checked) }
         } else null,
-        interactionSource = interactionSource,
+        modifier = modifier,
         enabled = enabled,
         colors = colors,
-        modifier = modifier
+        interactionSource = interactionSource
     )
 }
 
@@ -127,11 +127,11 @@
  * @param enabled controls the enabled state of this checkbox. When `false`, this component will not
  * respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
+ * @param colors [CheckboxColors] that will be used to resolve the colors used for this checkbox in
+ * different states. See [CheckboxDefaults.colors].
  * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
  * for this checkbox. You can create and pass in your own `remember`ed instance to observe
  * [Interaction]s and customize the appearance / behavior of this checkbox in different states.
- * @param colors [CheckboxColors] that will be used to resolve the colors used for this checkbox in
- * different states. See [CheckboxDefaults.colors].
  */
 @Composable
 fun TriStateCheckbox(
@@ -139,8 +139,8 @@
     onClick: (() -> Unit)?,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
-    colors: CheckboxColors = CheckboxDefaults.colors()
+    colors: CheckboxColors = CheckboxDefaults.colors(),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }
 ) {
     val toggleableModifier =
         if (onClick != null) {
@@ -320,7 +320,8 @@
     Canvas(
         modifier
             .wrapContentSize(Alignment.Center)
-            .requiredSize(CheckboxSize)) {
+            .requiredSize(CheckboxSize)
+    ) {
         val strokeWidthPx = floor(StrokeWidth.toPx())
         drawBox(
             boxColor = boxColor.value,
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/FloatingActionButton.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/FloatingActionButton.kt
index dcb813d..8783c11 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/FloatingActionButton.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/FloatingActionButton.kt
@@ -74,9 +74,6 @@
  *
  * @param onClick called when this FAB is clicked
  * @param modifier the [Modifier] to be applied to this FAB
- * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
- * for this FAB. You can create and pass in your own `remember`ed instance to observe [Interaction]s
- * and customize the appearance / behavior of this FAB in different states.
  * @param shape defines the shape of this FAB's container and shadow (when using [elevation])
  * @param containerColor the color used for the background of this FAB. Use [Color.Transparent] to
  * have no color.
@@ -87,6 +84,9 @@
  * different states. This controls the size of the shadow below the FAB. Additionally, when the
  * container color is [ColorScheme.surface], this controls the amount of primary color applied as an
  * overlay. See also: [Surface].
+ * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
+ * for this FAB. You can create and pass in your own `remember`ed instance to observe [Interaction]s
+ * and customize the appearance / behavior of this FAB in different states.
  * @param content the content of this FAB, typically an [Icon]
  */
 @OptIn(ExperimentalMaterial3Api::class)
@@ -94,11 +94,11 @@
 fun FloatingActionButton(
     onClick: () -> Unit,
     modifier: Modifier = Modifier,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     shape: Shape = FloatingActionButtonDefaults.shape,
     containerColor: Color = FloatingActionButtonDefaults.containerColor,
     contentColor: Color = contentColorFor(containerColor),
     elevation: FloatingActionButtonElevation = FloatingActionButtonDefaults.elevation(),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable () -> Unit,
 ) {
     Surface(
@@ -600,12 +600,12 @@
 
 private val ExtendedFabCollapseAnimation = fadeOut(
     animationSpec = tween(
-        durationMillis = MotionTokens.Duration100DurationMs.toInt(),
+        durationMillis = MotionTokens.DurationShort2.toInt(),
         easing = MotionTokens.EasingLinearCubicBezier,
     )
 ) + shrinkHorizontally(
     animationSpec = tween(
-        durationMillis = MotionTokens.Duration500DurationMs.toInt(),
+        durationMillis = MotionTokens.DurationLong2.toInt(),
         easing = MotionTokens.EasingEmphasizedCubicBezier,
     ),
     shrinkTowards = Alignment.Start,
@@ -613,13 +613,13 @@
 
 private val ExtendedFabExpandAnimation = fadeIn(
     animationSpec = tween(
-        durationMillis = MotionTokens.Duration200DurationMs.toInt(),
-        delayMillis = MotionTokens.Duration100DurationMs.toInt(),
+        durationMillis = MotionTokens.DurationShort4.toInt(),
+        delayMillis = MotionTokens.DurationShort2.toInt(),
         easing = MotionTokens.EasingLinearCubicBezier,
     ),
 ) + expandHorizontally(
     animationSpec = tween(
-        durationMillis = MotionTokens.Duration500DurationMs.toInt(),
+        durationMillis = MotionTokens.DurationLong2.toInt(),
         easing = MotionTokens.EasingEmphasizedCubicBezier,
     ),
     expandFrom = Alignment.Start,
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/IconButton.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/IconButton.kt
index 970d9c4..0445c65 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/IconButton.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/IconButton.kt
@@ -63,11 +63,11 @@
  * @param enabled controls the enabled state of this icon button. When `false`, this component will
  * not respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
+ * @param colors [IconButtonColors] that will be used to resolve the colors used for this icon
+ * button in different states. See [IconButtonDefaults.iconButtonColors].
  * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
  * for this icon button. You can create and pass in your own `remember`ed instance to observe
  * [Interaction]s and customize the appearance / behavior of this icon button in different states.
- * @param colors [IconButtonColors] that will be used to resolve the colors used for this icon
- * button in different states. See [IconButtonDefaults.iconButtonColors].
  * @param content the content of this icon button, typically an [Icon]
  */
 @Composable
@@ -75,8 +75,8 @@
     onClick: () -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     colors: IconButtonColors = IconButtonDefaults.iconButtonColors(),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable () -> Unit
 ) {
     Box(
@@ -123,11 +123,11 @@
  * @param enabled controls the enabled state of this icon button. When `false`, this component will
  * not respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
+ * @param colors [IconToggleButtonColors] that will be used to resolve the colors used for this icon
+ * button in different states. See [IconButtonDefaults.iconToggleButtonColors].
  * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
  * for this icon button. You can create and pass in your own `remember`ed instance to observe
  * [Interaction]s and customize the appearance / behavior of this icon button in different states.
- * @param colors [IconToggleButtonColors] that will be used to resolve the colors used for this icon
- * button in different states. See [IconButtonDefaults.iconToggleButtonColors].
  * @param content the content of this icon button, typically an [Icon]
  */
 @Composable
@@ -136,8 +136,8 @@
     onCheckedChange: (Boolean) -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     colors: IconToggleButtonColors = IconButtonDefaults.iconToggleButtonColors(),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable () -> Unit
 ) {
     Box(
@@ -185,12 +185,12 @@
  * @param enabled controls the enabled state of this icon button. When `false`, this component will
  * not respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
- * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
- * for this icon button. You can create and pass in your own `remember`ed instance to observe
- * [Interaction]s and customize the appearance / behavior of this icon button in different states.
  * @param shape defines the shape of this icon button's container
  * @param colors [IconButtonColors] that will be used to resolve the colors used for this icon
  * button in different states. See [IconButtonDefaults.filledIconButtonColors].
+ * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
+ * for this icon button. You can create and pass in your own `remember`ed instance to observe
+ * [Interaction]s and customize the appearance / behavior of this icon button in different states.
  * @param content the content of this icon button, typically an [Icon]
  */
 @OptIn(ExperimentalMaterial3Api::class)
@@ -199,9 +199,9 @@
     onClick: () -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     shape: Shape = IconButtonDefaults.filledShape,
     colors: IconButtonColors = IconButtonDefaults.filledIconButtonColors(),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable () -> Unit
 ) = Surface(
     onClick = onClick,
@@ -246,12 +246,12 @@
  * @param enabled controls the enabled state of this icon button. When `false`, this component will
  * not respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
- * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
- * for this icon button. You can create and pass in your own `remember`ed instance to observe
- * [Interaction]s and customize the appearance / behavior of this icon button in different states.
  * @param shape defines the shape of this icon button's container
  * @param colors [IconButtonColors] that will be used to resolve the colors used for this icon
  * button in different states. See [IconButtonDefaults.filledIconButtonColors].
+ * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
+ * for this icon button. You can create and pass in your own `remember`ed instance to observe
+ * [Interaction]s and customize the appearance / behavior of this icon button in different states.
  * @param content the content of this icon button, typically an [Icon]
  */
 @OptIn(ExperimentalMaterial3Api::class)
@@ -260,9 +260,9 @@
     onClick: () -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     shape: Shape = IconButtonDefaults.filledShape,
     colors: IconButtonColors = IconButtonDefaults.filledTonalIconButtonColors(),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable () -> Unit
 ) = Surface(
     onClick = onClick,
@@ -303,12 +303,12 @@
  * @param enabled controls the enabled state of this icon button. When `false`, this component will
  * not respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
- * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
- * for this icon button. You can create and pass in your own `remember`ed instance to observe
- * [Interaction]s and customize the appearance / behavior of this icon button in different states.
  * @param shape defines the shape of this icon button's container
  * @param colors [IconToggleButtonColors] that will be used to resolve the colors used for this icon
  * button in different states. See [IconButtonDefaults.filledIconToggleButtonColors].
+ * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
+ * for this icon button. You can create and pass in your own `remember`ed instance to observe
+ * [Interaction]s and customize the appearance / behavior of this icon button in different states.
  * @param content the content of this icon button, typically an [Icon]
  */
 @OptIn(ExperimentalMaterial3Api::class)
@@ -318,9 +318,9 @@
     onCheckedChange: (Boolean) -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     shape: Shape = IconButtonDefaults.filledShape,
     colors: IconToggleButtonColors = IconButtonDefaults.filledIconToggleButtonColors(),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable () -> Unit
 ) = Surface(
     checked = checked,
@@ -367,12 +367,12 @@
  * @param enabled controls the enabled state of this icon button. When `false`, this component will
  * not respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
- * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
- * for this icon button. You can create and pass in your own `remember`ed instance to observe
- * [Interaction]s and customize the appearance / behavior of this icon button in different states.
  * @param shape defines the shape of this icon button's container
  * @param colors [IconToggleButtonColors] that will be used to resolve the colors used for this icon
  * button in different states. See [IconButtonDefaults.filledIconToggleButtonColors].
+ * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
+ * for this icon button. You can create and pass in your own `remember`ed instance to observe
+ * [Interaction]s and customize the appearance / behavior of this icon button in different states.
  * @param content the content of this icon button, typically an [Icon]
  */
 @OptIn(ExperimentalMaterial3Api::class)
@@ -382,9 +382,9 @@
     onCheckedChange: (Boolean) -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     shape: Shape = IconButtonDefaults.filledShape,
     colors: IconToggleButtonColors = IconButtonDefaults.filledTonalIconToggleButtonColors(),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable () -> Unit
 ) = Surface(
     checked = checked,
@@ -430,15 +430,15 @@
  * @param enabled controls the enabled state of this icon button. When `false`, this component will
  * not respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
+ * @param shape defines the shape of this icon button's container and border (when [border] is not
+ * null)
+ * @param colors [IconButtonColors] that will be used to resolve the colors used for this icon
+ * button in different states. See [IconButtonDefaults.outlinedIconButtonColors].
+ * @param border the border to draw around the container of this icon button. Pass `null` for no
+ * border. See [IconButtonDefaults.outlinedIconButtonBorder].
  * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
  * for this icon button. You can create and pass in your own `remember`ed instance to observe
  * [Interaction]s and customize the appearance / behavior of this icon button in different states.
- * @param shape defines the shape of this icon button's container and border (when [border] is not
- * null)
- * @param border the border to draw around the container of this icon button. Pass `null` for no
- * border. See [IconButtonDefaults.outlinedIconButtonBorder].
- * @param colors [IconButtonColors] that will be used to resolve the colors used for this icon
- * button in different states. See [IconButtonDefaults.outlinedIconButtonColors].
  * @param content the content of this icon button, typically an [Icon]
  */
 @OptIn(ExperimentalMaterial3Api::class)
@@ -447,10 +447,10 @@
     onClick: () -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     shape: Shape = IconButtonDefaults.outlinedShape,
-    border: BorderStroke? = IconButtonDefaults.outlinedIconButtonBorder(enabled),
     colors: IconButtonColors = IconButtonDefaults.outlinedIconButtonColors(),
+    border: BorderStroke? = IconButtonDefaults.outlinedIconButtonBorder(enabled),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable () -> Unit
 ) = Surface(
     onClick = onClick,
@@ -491,15 +491,15 @@
  * @param enabled controls the enabled state of this icon button. When `false`, this component will
  * not respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
+ * @param shape defines the shape of this icon button's container and border (when [border] is not
+ * null)
+ * @param colors [IconToggleButtonColors] that will be used to resolve the colors used for this icon
+ * button in different states. See [IconButtonDefaults.outlinedIconToggleButtonColors].
+ * @param border the border to draw around the container of this icon button. Pass `null` for no
+ * border. See [IconButtonDefaults.outlinedIconToggleButtonBorder].
  * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
  * for this icon button. You can create and pass in your own `remember`ed instance to observe
  * [Interaction]s and customize the appearance / behavior of this icon button in different states.
- * @param shape defines the shape of this icon button's container and border (when [border] is not
- * null)
- * @param border the border to draw around the container of this icon button. Pass `null` for no
- * border. See [IconButtonDefaults.outlinedIconToggleButtonBorder].
- * @param colors [IconToggleButtonColors] that will be used to resolve the colors used for this icon
- * button in different states. See [IconButtonDefaults.outlinedIconToggleButtonColors].
  * @param content the content of this icon button, typically an [Icon]
  */
 @OptIn(ExperimentalMaterial3Api::class)
@@ -509,10 +509,10 @@
     onCheckedChange: (Boolean) -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     shape: Shape = IconButtonDefaults.outlinedShape,
-    border: BorderStroke? = IconButtonDefaults.outlinedIconToggleButtonBorder(enabled, checked),
     colors: IconToggleButtonColors = IconButtonDefaults.outlinedIconToggleButtonColors(),
+    border: BorderStroke? = IconButtonDefaults.outlinedIconToggleButtonBorder(enabled, checked),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     content: @Composable () -> Unit
 ) = Surface(
     checked = checked,
@@ -600,8 +600,9 @@
     val filledShape: Shape @Composable get() = FilledIconButtonTokens.ContainerShape.toShape()
 
     /** Default shape for an outlined icon button. */
-    val outlinedShape: Shape @Composable get() =
-        OutlinedIconButtonTokens.ContainerShape.toShape()
+    val outlinedShape: Shape
+        @Composable get() =
+            OutlinedIconButtonTokens.ContainerShape.toShape()
 
     /**
      * Creates a [IconButtonColors] that represents the default colors used in a [IconButton].
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/ListItem.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/ListItem.kt
index d07e4eb..cdca4adc 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/ListItem.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/ListItem.kt
@@ -18,6 +18,7 @@
 
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.RowScope
 import androidx.compose.foundation.layout.heightIn
@@ -81,14 +82,13 @@
     if (overlineText == null && supportingText == null) {
         // One-Line List Item
         ListItem(
-            modifier = modifier
-                .heightIn(min = ListTokens.ListItemContainerHeight)
-                .padding(
-                    vertical = ListItemVerticalPadding,
-                    horizontal = ListItemHorizontalPadding
-                ),
+            modifier = modifier,
+            containerColor = colors.containerColor(enabled = true).value,
+            contentColor = colors.headlineColor(enabled = true).value,
             tonalElevation = tonalElevation,
             shadowElevation = shadowElevation,
+            minHeight = ListTokens.ListItemContainerHeight,
+            paddingValues = PaddingValues(ListItemHorizontalPadding, ListItemVerticalPadding)
         ) {
             if (leadingContent != null) {
                 leadingContent(
@@ -119,14 +119,13 @@
     } else if (overlineText == null) {
         // Two-Line List Item
         ListItem(
-            modifier = modifier
-                .heightIn(min = TwoLineListItemContainerHeight)
-                .padding(
-                    vertical = ListItemVerticalPadding,
-                    horizontal = ListItemHorizontalPadding
-                ),
+            modifier = modifier,
+            containerColor = colors.containerColor(enabled = true).value,
+            contentColor = colors.headlineColor(enabled = true).value,
             tonalElevation = tonalElevation,
             shadowElevation = shadowElevation,
+            minHeight = TwoLineListItemContainerHeight,
+            paddingValues = PaddingValues(ListItemHorizontalPadding, ListItemVerticalPadding)
         ) {
             if (leadingContent != null) {
                 leadingContent(
@@ -164,14 +163,13 @@
     } else if (supportingText == null) {
         // Two-Line List Item
         ListItem(
-            modifier = modifier
-                .heightIn(min = TwoLineListItemContainerHeight)
-                .padding(
-                    vertical = ListItemVerticalPadding,
-                    horizontal = ListItemHorizontalPadding
-                ),
+            modifier = modifier,
+            containerColor = colors.containerColor(enabled = true).value,
+            contentColor = colors.headlineColor(enabled = true).value,
             tonalElevation = tonalElevation,
             shadowElevation = shadowElevation,
+            minHeight = TwoLineListItemContainerHeight,
+            paddingValues = PaddingValues(ListItemHorizontalPadding, ListItemVerticalPadding)
         ) {
             if (leadingContent != null) {
                 leadingContent(
@@ -209,14 +207,16 @@
     } else {
         // Three-Line List Item
         ListItem(
-            modifier = modifier
-                .heightIn(min = ThreeLineListItemContainerHeight)
-                .padding(
-                    vertical = ListItemThreeLineVerticalPadding,
-                    horizontal = ListItemHorizontalPadding
-                ),
+            modifier = modifier,
+            containerColor = colors.containerColor(enabled = true).value,
+            contentColor = colors.headlineColor(enabled = true).value,
             tonalElevation = tonalElevation,
             shadowElevation = shadowElevation,
+            minHeight = ThreeLineListItemContainerHeight,
+            paddingValues = PaddingValues(
+                ListItemHorizontalPadding,
+                ListItemThreeLineVerticalPadding
+            )
         ) {
             if (leadingContent != null) {
                 leadingContent(
@@ -284,6 +284,8 @@
     contentColor: Color = ListItemDefaults.contentColor,
     tonalElevation: Dp = ListItemDefaults.Elevation,
     shadowElevation: Dp = ListItemDefaults.Elevation,
+    minHeight: Dp,
+    paddingValues: PaddingValues,
     content: @Composable RowScope.() -> Unit,
 ) {
     Surface(
@@ -294,7 +296,12 @@
         tonalElevation = tonalElevation,
         shadowElevation = shadowElevation,
     ) {
-        Row(content = content)
+        Row(
+            modifier = Modifier
+            .heightIn(min = minHeight)
+            .padding(paddingValues),
+            content = content
+        )
     }
 }
 
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationBar.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationBar.kt
index 5de0980..7209ef9 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationBar.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationBar.kt
@@ -140,11 +140,11 @@
  * @param label optional text label for this item
  * @param alwaysShowLabel whether to always show the label for this item. If `false`, the label will
  * only be shown when this item is selected.
+ * @param colors [NavigationBarItemColors] that will be used to resolve the colors used for this
+ * item in different states. See [NavigationBarItemDefaults.colors].
  * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
  * for this item. You can create and pass in your own `remember`ed instance to observe
  * [Interaction]s and customize the appearance / behavior of this item in different states.
- * @param colors [NavigationBarItemColors] that will be used to resolve the colors used for this
- * item in different states. See [NavigationBarItemDefaults.colors].
  */
 @Composable
 fun RowScope.NavigationBarItem(
@@ -155,8 +155,8 @@
     enabled: Boolean = true,
     label: @Composable (() -> Unit)? = null,
     alwaysShowLabel: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
-    colors: NavigationBarItemColors = NavigationBarItemDefaults.colors()
+    colors: NavigationBarItemColors = NavigationBarItemDefaults.colors(),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }
 ) {
     val styledIcon = @Composable {
         val iconColor by colors.iconColor(selected = selected)
@@ -262,19 +262,19 @@
      * specification.
      *
      * @param selectedIconColor the color to use for the icon when the item is selected.
-     * @param unselectedIconColor the color to use for the icon when the item is unselected.
      * @param selectedTextColor the color to use for the text label when the item is selected.
-     * @param unselectedTextColor the color to use for the text label when the item is unselected.
      * @param indicatorColor the color to use for the indicator when the item is selected.
+     * @param unselectedIconColor the color to use for the icon when the item is unselected.
+     * @param unselectedTextColor the color to use for the text label when the item is unselected.
      * @return the resulting [NavigationBarItemColors] used for [NavigationBarItem]
      */
     @Composable
     fun colors(
         selectedIconColor: Color = NavigationBarTokens.ActiveIconColor.toColor(),
-        unselectedIconColor: Color = NavigationBarTokens.InactiveIconColor.toColor(),
         selectedTextColor: Color = NavigationBarTokens.ActiveLabelTextColor.toColor(),
-        unselectedTextColor: Color = NavigationBarTokens.InactiveLabelTextColor.toColor(),
         indicatorColor: Color = NavigationBarTokens.ActiveIndicatorColor.toColor(),
+        unselectedIconColor: Color = NavigationBarTokens.InactiveIconColor.toColor(),
+        unselectedTextColor: Color = NavigationBarTokens.InactiveLabelTextColor.toColor(),
     ): NavigationBarItemColors = remember(
         selectedIconColor,
         unselectedIconColor,
@@ -284,10 +284,10 @@
     ) {
         DefaultNavigationBarItemColors(
             selectedIconColor = selectedIconColor,
-            unselectedIconColor = unselectedIconColor,
             selectedTextColor = selectedTextColor,
-            unselectedTextColor = unselectedTextColor,
             selectedIndicatorColor = indicatorColor,
+            unselectedIconColor = unselectedIconColor,
+            unselectedTextColor = unselectedTextColor,
         )
     }
 }
@@ -319,10 +319,10 @@
 @Stable
 private class DefaultNavigationBarItemColors(
     private val selectedIconColor: Color,
-    private val unselectedIconColor: Color,
     private val selectedTextColor: Color,
-    private val unselectedTextColor: Color,
     private val selectedIndicatorColor: Color,
+    private val unselectedIconColor: Color,
+    private val unselectedTextColor: Color,
 ) : NavigationBarItemColors {
     @Composable
     override fun iconColor(selected: Boolean): State<Color> {
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationRail.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationRail.kt
index fcfc11a..2e593e8 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationRail.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationRail.kt
@@ -144,11 +144,11 @@
  * @param label optional text label for this item
  * @param alwaysShowLabel whether to always show the label for this item. If false, the label will
  * only be shown when this item is selected.
+ * @param colors [NavigationRailItemColors] that will be used to resolve the colors used for this
+ * item in different states. See [NavigationRailItemDefaults.colors].
  * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
  * for this item. You can create and pass in your own `remember`ed instance to observe
  * [Interaction]s and customize the appearance / behavior of this item in different states.
- * @param colors [NavigationRailItemColors] that will be used to resolve the colors used for this
- * item in different states. See [NavigationRailItemDefaults.colors].
  */
 @Composable
 fun NavigationRailItem(
@@ -159,8 +159,8 @@
     enabled: Boolean = true,
     label: @Composable (() -> Unit)? = null,
     alwaysShowLabel: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     colors: NavigationRailItemColors = NavigationRailItemDefaults.colors(),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
 ) {
     val styledIcon = @Composable {
         val iconColor by colors.iconColor(selected = selected)
@@ -264,19 +264,19 @@
      * specification.
      *
      * @param selectedIconColor the color to use for the icon when the item is selected.
-     * @param unselectedIconColor the color to use for the icon when the item is unselected.
      * @param selectedTextColor the color to use for the text label when the item is selected.
-     * @param unselectedTextColor the color to use for the text label when the item is unselected.
      * @param indicatorColor the color to use for the indicator when the item is selected.
+     * @param unselectedIconColor the color to use for the icon when the item is unselected.
+     * @param unselectedTextColor the color to use for the text label when the item is unselected.
      * @return the resulting [NavigationRailItemColors] used for [NavigationRailItem]
      */
     @Composable
     fun colors(
         selectedIconColor: Color = NavigationRailTokens.ActiveIconColor.toColor(),
-        unselectedIconColor: Color = NavigationRailTokens.InactiveIconColor.toColor(),
         selectedTextColor: Color = NavigationRailTokens.ActiveLabelTextColor.toColor(),
-        unselectedTextColor: Color = NavigationRailTokens.InactiveLabelTextColor.toColor(),
         indicatorColor: Color = NavigationRailTokens.ActiveIndicatorColor.toColor(),
+        unselectedIconColor: Color = NavigationRailTokens.InactiveIconColor.toColor(),
+        unselectedTextColor: Color = NavigationRailTokens.InactiveLabelTextColor.toColor(),
     ): NavigationRailItemColors = remember(
         selectedIconColor,
         unselectedIconColor,
@@ -321,10 +321,10 @@
 @Stable
 private class DefaultNavigationRailItemColors(
     private val selectedIconColor: Color,
-    private val unselectedIconColor: Color,
     private val selectedTextColor: Color,
-    private val unselectedTextColor: Color,
     private val selectedIndicatorColor: Color,
+    private val unselectedIconColor: Color,
+    private val unselectedTextColor: Color,
 ) : NavigationRailItemColors {
     @Composable
     override fun iconColor(selected: Boolean): State<Color> {
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/RadioButton.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/RadioButton.kt
index b24884c..5e1c05d 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/RadioButton.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/RadioButton.kt
@@ -64,11 +64,11 @@
  * @param enabled controls the enabled state of this radio button. When `false`, this component will
  * not respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
+ * @param colors [RadioButtonColors] that will be used to resolve the color used for this radio
+ * button in different states. See [RadioButtonDefaults.colors].
  * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
  * for this radio button. You can create and pass in your own `remember`ed instance to observe
  * [Interaction]s and customize the appearance / behavior of this radio button in different states.
- * @param colors [RadioButtonColors] that will be used to resolve the color used for this radio
- * button in different states. See [RadioButtonDefaults.colors].
  */
 @Composable
 fun RadioButton(
@@ -76,8 +76,8 @@
     onClick: (() -> Unit)?,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
-    colors: RadioButtonColors = RadioButtonDefaults.colors()
+    colors: RadioButtonColors = RadioButtonDefaults.colors(),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }
 ) {
     val dotRadius = animateDpAsState(
         targetValue = if (selected) RadioButtonDotSize / 2 else 0.dp,
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Scaffold.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Scaffold.kt
index 24e3088..a3bd39e 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Scaffold.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Scaffold.kt
@@ -220,7 +220,6 @@
 /**
  * The possible positions for a [FloatingActionButton] attached to a [Scaffold].
  */
-// TODO(b/200553810): Mark as experimental
 @ExperimentalMaterial3Api
 @kotlin.jvm.JvmInline
 value class FabPosition internal constructor(@Suppress("unused") private val value: Int) {
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Slider.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Slider.kt
index dd9b2d9..1be3607 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Slider.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Slider.kt
@@ -136,11 +136,12 @@
  * @param onValueChangeFinished called when value change has ended. This should not be used to
  * update the slider value (use [onValueChange] instead), but rather to know when the user has
  * completed selecting a new value by ending a drag or a click.
+ * @param colors [SliderColors] that will be used to resolve the colors used for this slider in
+ * different states. See [SliderDefaults.colors].
  * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
  * for this slider. You can create and pass in your own `remember`ed instance to observe
  * [Interaction]s and customize the appearance / behavior of this slider in different states.
- * @param colors [SliderColors] that will be used to resolve the colors used for this slider in
- * different states. See [SliderDefaults.colors].
+
  */
 // TODO(b/229979132): Add m.io link
 @Composable
@@ -153,105 +154,22 @@
     /*@IntRange(from = 0)*/
     steps: Int = 0,
     onValueChangeFinished: (() -> Unit)? = null,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
-    colors: SliderColors = SliderDefaults.colors()
+    colors: SliderColors = SliderDefaults.colors(),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }
 ) {
     require(steps >= 0) { "steps should be >= 0" }
-    val onValueChangeState = rememberUpdatedState<(Float) -> Unit> {
-        if (it != value) {
-            onValueChange(it)
-        }
-    }
 
-    val tickFractions = remember(steps) {
-        stepsToTickFractions(steps)
-    }
-    BoxWithConstraints(
-        modifier
-            .minimumTouchTargetSize()
-            .requiredSizeIn(
-                minWidth = SliderTokens.HandleWidth,
-                minHeight = SliderTokens.HandleHeight
-            )
-            .sliderSemantics(
-                value,
-                enabled,
-                onValueChange,
-                onValueChangeFinished,
-                valueRange,
-                steps
-            )
-            .focusable(enabled, interactionSource)
-    ) {
-        val isRtl = LocalLayoutDirection.current == LayoutDirection.Rtl
-        val widthPx = constraints.maxWidth.toFloat()
-        val maxPx: Float
-        val minPx: Float
-        val thumbRadius = ThumbDiameter / 2
-
-        with(LocalDensity.current) {
-            maxPx = max(widthPx - thumbRadius.toPx(), 0f)
-            minPx = min(thumbRadius.toPx(), maxPx)
-        }
-
-        fun scaleToUserValue(offset: Float) =
-            scale(minPx, maxPx, offset, valueRange.start, valueRange.endInclusive)
-
-        fun scaleToOffset(userValue: Float) =
-            scale(valueRange.start, valueRange.endInclusive, userValue, minPx, maxPx)
-
-        val rawOffset = remember { mutableStateOf(scaleToOffset(value)) }
-        val pressOffset = remember { mutableStateOf(0f) }
-
-        val draggableState = remember(minPx, maxPx, valueRange) {
-            SliderDraggableState {
-                rawOffset.value = (rawOffset.value + it + pressOffset.value)
-                pressOffset.value = 0f
-                val offsetInTrack = snapValueToTick(rawOffset.value, tickFractions, minPx, maxPx)
-                onValueChangeState.value.invoke(scaleToUserValue(offsetInTrack))
-            }
-        }
-
-        val gestureEndAction = rememberUpdatedState {
-            if (!draggableState.isDragging) {
-                // check isDragging in case the change is still in progress (touch -> drag case)
-                onValueChangeFinished?.invoke()
-            }
-        }
-
-        val press = Modifier.sliderTapModifier(
-            draggableState,
-            interactionSource,
-            widthPx,
-            isRtl,
-            rawOffset,
-            gestureEndAction,
-            pressOffset,
-            enabled
-        )
-
-        val drag = Modifier.draggable(
-            orientation = Orientation.Horizontal,
-            reverseDirection = isRtl,
-            enabled = enabled,
-            interactionSource = interactionSource,
-            onDragStopped = { _ -> gestureEndAction.value.invoke() },
-            startDragImmediately = draggableState.isDragging,
-            state = draggableState
-        )
-
-        val coerced = value.coerceIn(valueRange.start, valueRange.endInclusive)
-        val fraction = calcFraction(valueRange.start, valueRange.endInclusive, coerced)
-        SliderImpl(
-            enabled,
-            fraction,
-            tickFractions,
-            colors,
-            maxPx - minPx,
-            interactionSource,
-            modifier = press.then(drag)
-        )
-    }
+    SliderImpl(
+        colors = colors,
+        enabled = enabled,
+        interactionSource = interactionSource,
+        modifier = modifier,
+        onValueChange = onValueChange,
+        onValueChangeFinished = onValueChangeFinished,
+        steps = steps,
+        value = value,
+        valueRange = valueRange
+    )
 }
 
 /**
@@ -492,61 +410,62 @@
      * right in RTL) 30% of the track will be active, while the rest is inactive.
      *
      * @param thumbColor thumb color when enabled
-     * @param disabledThumbColor thumb colors when disabled
      * @param activeTrackColor color of the track in the part that is "active", meaning that the
      * thumb is ahead of it
-     * @param inactiveTrackColor color of the track in the part that is "inactive", meaning that the
-     * thumb is before it
-     * @param disabledActiveTrackColor color of the track in the "active" part when the Slider is
-     * disabled
-     * @param disabledInactiveTrackColor color of the track in the "inactive" part when the
-     * Slider is disabled
      * @param activeTickColor colors to be used to draw tick marks on the active track, if `steps`
      * is specified
+     * @param inactiveTrackColor color of the track in the part that is "inactive", meaning that the
+     * thumb is before it
      * @param inactiveTickColor colors to be used to draw tick marks on the inactive track, if
      * `steps` are specified on the Slider is specified
+     * @param disabledThumbColor thumb colors when disabled
+     * @param disabledActiveTrackColor color of the track in the "active" part when the Slider is
+     * disabled
      * @param disabledActiveTickColor colors to be used to draw tick marks on the active track
      * when Slider is disabled and when `steps` are specified on it
+     * @param disabledInactiveTrackColor color of the track in the "inactive" part when the
+     * Slider is disabled
      * @param disabledInactiveTickColor colors to be used to draw tick marks on the inactive part
      * of the track when Slider is disabled and when `steps` are specified on it
      */
     @Composable
     fun colors(
         thumbColor: Color = SliderTokens.HandleColor.toColor(),
+        activeTrackColor: Color = SliderTokens.ActiveTrackColor.toColor(),
+        activeTickColor: Color = SliderTokens.TickMarksActiveContainerColor
+            .toColor()
+            .copy(alpha = SliderTokens.TickMarksActiveContainerOpacity),
+        inactiveTrackColor: Color = SliderTokens.InactiveTrackColor.toColor(),
+        inactiveTickColor: Color = SliderTokens.TickMarksInactiveContainerColor.toColor()
+            .copy(alpha = SliderTokens.TickMarksInactiveContainerOpacity),
         disabledThumbColor: Color = SliderTokens.DisabledHandleColor
             .toColor()
             .copy(alpha = SliderTokens.DisabledHandleOpacity)
             .compositeOver(MaterialTheme.colorScheme.surface),
-        activeTrackColor: Color = SliderTokens.ActiveTrackColor.toColor(),
-        inactiveTrackColor: Color = SliderTokens.InactiveTrackColor.toColor(),
         disabledActiveTrackColor: Color =
             SliderTokens.DisabledActiveTrackColor
                 .toColor()
                 .copy(alpha = SliderTokens.DisabledActiveTrackOpacity),
+        disabledActiveTickColor: Color = SliderTokens.TickMarksDisabledContainerColor
+            .toColor()
+            .copy(alpha = SliderTokens.TickMarksDisabledContainerOpacity),
         disabledInactiveTrackColor: Color =
             SliderTokens.DisabledInactiveTrackColor
                 .toColor()
                 .copy(alpha = SliderTokens.DisabledInactiveTrackOpacity),
-        activeTickColor: Color = SliderTokens.TickMarksActiveContainerColor
-            .toColor()
-            .copy(alpha = SliderTokens.TickMarksActiveContainerOpacity),
-        inactiveTickColor: Color = SliderTokens.TickMarksInactiveContainerColor.toColor()
-            .copy(alpha = SliderTokens.TickMarksInactiveContainerOpacity),
-        disabledActiveTickColor: Color = SliderTokens.TickMarksDisabledContainerColor
-            .toColor()
-            .copy(alpha = SliderTokens.TickMarksDisabledContainerOpacity),
+
         disabledInactiveTickColor: Color = SliderTokens.TickMarksDisabledContainerColor.toColor()
             .copy(alpha = SliderTokens.TickMarksDisabledContainerOpacity)
     ): SliderColors = DefaultSliderColors(
         thumbColor = thumbColor,
-        disabledThumbColor = disabledThumbColor,
         activeTrackColor = activeTrackColor,
-        inactiveTrackColor = inactiveTrackColor,
-        disabledActiveTrackColor = disabledActiveTrackColor,
-        disabledInactiveTrackColor = disabledInactiveTrackColor,
         activeTickColor = activeTickColor,
+        inactiveTrackColor = inactiveTrackColor,
         inactiveTickColor = inactiveTickColor,
+        disabledThumbColor = disabledThumbColor,
+        disabledActiveTrackColor = disabledActiveTrackColor,
         disabledActiveTickColor = disabledActiveTickColor,
+        disabledInactiveTrackColor = disabledInactiveTrackColor,
         disabledInactiveTickColor = disabledInactiveTickColor
     )
 }
@@ -596,35 +515,151 @@
 }
 
 @Composable
-private fun SliderImpl(
-    enabled: Boolean,
-    positionFraction: Float,
-    tickFractions: List<Float>,
+internal fun SliderImpl(
+    modifier: Modifier,
     colors: SliderColors,
-    width: Float,
+    enabled: Boolean,
     interactionSource: MutableInteractionSource,
-    modifier: Modifier
+    onValueChange: (Float) -> Unit,
+    onValueChangeFinished: (() -> Unit)?,
+    steps: Int,
+    value: Float,
+    valueRange: ClosedFloatingPointRange<Float>
 ) {
-    Box(modifier.then(DefaultSliderConstraints)) {
-        val trackStrokeWidth: Float
-        val widthDp: Dp
+    val onValueChangeState = rememberUpdatedState<(Float) -> Unit> {
+        if (it != value) {
+            onValueChange(it)
+        }
+    }
+
+    val tickFractions = remember(steps) {
+        stepsToTickFractions(steps)
+    }
+    BoxWithConstraints(
+        modifier
+            .minimumTouchTargetSize()
+            .requiredSizeIn(
+                minWidth = SliderTokens.HandleWidth,
+                minHeight = SliderTokens.HandleHeight
+            )
+            .sliderSemantics(
+                value,
+                enabled,
+                onValueChange,
+                onValueChangeFinished,
+                valueRange,
+                steps
+            )
+            .focusable(enabled, interactionSource)
+    ) {
+        val isRtl = LocalLayoutDirection.current == LayoutDirection.Rtl
+        val widthPx = constraints.maxWidth.toFloat()
+        val maxPx: Float
+        val minPx: Float
+        val thumbRadius = ThumbDiameter / 2
+
         with(LocalDensity.current) {
-            trackStrokeWidth = TrackHeight.toPx()
+            maxPx = max(widthPx - thumbRadius.toPx(), 0f)
+            minPx = min(thumbRadius.toPx(), maxPx)
+        }
+
+        fun scaleToUserValue(offset: Float) =
+            scale(minPx, maxPx, offset, valueRange.start, valueRange.endInclusive)
+
+        fun scaleToOffset(userValue: Float) =
+            scale(valueRange.start, valueRange.endInclusive, userValue, minPx, maxPx)
+
+        val rawOffset = remember { mutableStateOf(scaleToOffset(value)) }
+        val pressOffset = remember { mutableStateOf(0f) }
+
+        val draggableState = remember(minPx, maxPx, valueRange) {
+            SliderDraggableState {
+                rawOffset.value = (rawOffset.value + it + pressOffset.value)
+                pressOffset.value = 0f
+                val offsetInTrack = snapValueToTick(rawOffset.value, tickFractions, minPx, maxPx)
+                onValueChangeState.value.invoke(scaleToUserValue(offsetInTrack))
+            }
+        }
+
+        val gestureEndAction = rememberUpdatedState {
+            if (!draggableState.isDragging) {
+                // check isDragging in case the change is still in progress (touch -> drag case)
+                onValueChangeFinished?.invoke()
+            }
+        }
+
+        val press = Modifier.sliderTapModifier(
+            draggableState,
+            interactionSource,
+            widthPx,
+            isRtl,
+            rawOffset,
+            gestureEndAction,
+            pressOffset,
+            enabled
+        )
+
+        val drag = Modifier.draggable(
+            orientation = Orientation.Horizontal,
+            reverseDirection = isRtl,
+            enabled = enabled,
+            interactionSource = interactionSource,
+            onDragStopped = { _ -> gestureEndAction.value.invoke() },
+            startDragImmediately = draggableState.isDragging,
+            state = draggableState
+        )
+
+        val coerced = value.coerceIn(valueRange.start, valueRange.endInclusive)
+        val positionFraction = calcFraction(valueRange.start, valueRange.endInclusive, coerced)
+
+        val width = maxPx - minPx
+        val widthDp: Dp
+        val trackStrokeWidth: Float
+
+        with(LocalDensity.current) {
             widthDp = width.toDp()
+            trackStrokeWidth = TrackHeight.toPx()
         }
 
         val offset = widthDp * positionFraction
-        Track(
-            Modifier.fillMaxSize(),
-            colors,
-            enabled,
-            0f,
-            positionFraction,
-            tickFractions,
-            ThumbWidth,
-            trackStrokeWidth
+
+        SliderLayout(
+            track = {
+                Track(
+                    Modifier.fillMaxSize(),
+                    colors,
+                    enabled,
+                    0f,
+                    positionFraction,
+                    tickFractions,
+                    ThumbWidth,
+                    trackStrokeWidth
+                )
+            },
+            thumb = {
+                SliderThumb(
+                    Modifier,
+                    offset,
+                    interactionSource,
+                    colors,
+                    enabled,
+                    ThumbSize
+                )
+            },
+            modifier = press.then(drag)
         )
-        SliderThumb(Modifier, offset, interactionSource, colors, enabled, ThumbSize)
+    }
+}
+
+@Composable
+private fun SliderLayout(
+    modifier: Modifier,
+    thumb: @Composable BoxScope.() -> Unit,
+    track: @Composable () -> Unit,
+) {
+    Box(modifier.then(DefaultSliderConstraints)) {
+        track()
+        thumb()
     }
 }
 
@@ -1014,14 +1049,14 @@
 @Immutable
 private class DefaultSliderColors(
     private val thumbColor: Color,
-    private val disabledThumbColor: Color,
     private val activeTrackColor: Color,
-    private val inactiveTrackColor: Color,
-    private val disabledActiveTrackColor: Color,
-    private val disabledInactiveTrackColor: Color,
     private val activeTickColor: Color,
+    private val inactiveTrackColor: Color,
     private val inactiveTickColor: Color,
+    private val disabledThumbColor: Color,
+    private val disabledActiveTrackColor: Color,
     private val disabledActiveTickColor: Color,
+    private val disabledInactiveTrackColor: Color,
     private val disabledInactiveTickColor: Color
 ) : SliderColors {
 
@@ -1059,14 +1094,14 @@
         other as DefaultSliderColors
 
         if (thumbColor != other.thumbColor) return false
-        if (disabledThumbColor != other.disabledThumbColor) return false
         if (activeTrackColor != other.activeTrackColor) return false
-        if (inactiveTrackColor != other.inactiveTrackColor) return false
-        if (disabledActiveTrackColor != other.disabledActiveTrackColor) return false
-        if (disabledInactiveTrackColor != other.disabledInactiveTrackColor) return false
         if (activeTickColor != other.activeTickColor) return false
+        if (inactiveTrackColor != other.inactiveTrackColor) return false
         if (inactiveTickColor != other.inactiveTickColor) return false
+        if (disabledThumbColor != other.disabledThumbColor) return false
+        if (disabledActiveTrackColor != other.disabledActiveTrackColor) return false
         if (disabledActiveTickColor != other.disabledActiveTickColor) return false
+        if (disabledInactiveTrackColor != other.disabledInactiveTrackColor) return false
         if (disabledInactiveTickColor != other.disabledInactiveTickColor) return false
 
         return true
@@ -1074,14 +1109,14 @@
 
     override fun hashCode(): Int {
         var result = thumbColor.hashCode()
-        result = 31 * result + disabledThumbColor.hashCode()
         result = 31 * result + activeTrackColor.hashCode()
-        result = 31 * result + inactiveTrackColor.hashCode()
-        result = 31 * result + disabledActiveTrackColor.hashCode()
-        result = 31 * result + disabledInactiveTrackColor.hashCode()
         result = 31 * result + activeTickColor.hashCode()
+        result = 31 * result + inactiveTrackColor.hashCode()
         result = 31 * result + inactiveTickColor.hashCode()
+        result = 31 * result + disabledThumbColor.hashCode()
+        result = 31 * result + disabledActiveTrackColor.hashCode()
         result = 31 * result + disabledActiveTickColor.hashCode()
+        result = 31 * result + disabledInactiveTrackColor.hashCode()
         result = 31 * result + disabledInactiveTickColor.hashCode()
         return result
     }
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Switch.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Switch.kt
index 306b2f2..4e4b645 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Switch.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Switch.kt
@@ -81,11 +81,11 @@
  * @param enabled controls the enabled state of this switch. When `false`, this component will not
  * respond to user input, and it will appear visually disabled and disabled to accessibility
  * services.
+ * @param colors [SwitchColors] that will be used to resolve the colors used for this switch in
+ * different states. See [SwitchDefaults.colors].
  * @param interactionSource the [MutableInteractionSource] representing the stream of [Interaction]s
  * for this switch. You can create and pass in your own `remember`ed instance to observe
  * [Interaction]s and customize the appearance / behavior of this switch in different states.
- * @param colors [SwitchColors] that will be used to resolve the colors used for this switch in
- * different states. See [SwitchDefaults.colors].
  */
 @Composable
 @Suppress("ComposableLambdaParameterNaming", "ComposableLambdaParameterPosition")
@@ -95,8 +95,8 @@
     modifier: Modifier = Modifier,
     thumbContent: (@Composable () -> Unit)? = null,
     enabled: Boolean = true,
-    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
     colors: SwitchColors = SwitchDefaults.colors(),
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
 ) {
     val uncheckedThumbDiameter = if (thumbContent == null) {
         UncheckedThumbDiameter
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/TabRow.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/TabRow.kt
index 8da4791..77881a5 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/TabRow.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/TabRow.kt
@@ -353,7 +353,7 @@
  * Contains default implementations and values used for TabRow.
  */
 object TabRowDefaults {
-    /** Default color of a tab row. */
+    /** Default container color of a tab row. */
     val containerColor: Color @Composable get() =
         PrimaryNavigationTabTokens.ContainerColor.toColor()
 
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/tokens/MotionTokens.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/tokens/MotionTokens.kt
index 08b43ad..8658f45 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/tokens/MotionTokens.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/tokens/MotionTokens.kt
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-// VERSION: v0_92
+// VERSION: v0_103
 // GENERATED CODE - DO NOT MODIFY BY HAND
 
 package androidx.compose.material3.tokens
@@ -21,22 +21,22 @@
 import androidx.compose.animation.core.CubicBezierEasing
 
 internal object MotionTokens {
-    const val Duration100DurationMs = 100.0
-    const val Duration1000DurationMs = 1000.0
-    const val Duration150DurationMs = 150.0
-    const val Duration200DurationMs = 200.0
-    const val Duration250DurationMs = 250.0
-    const val Duration300DurationMs = 300.0
-    const val Duration350DurationMs = 350.0
-    const val Duration400DurationMs = 400.0
-    const val Duration450DurationMs = 450.0
-    const val Duration50DurationMs = 50.0
-    const val Duration500DurationMs = 500.0
-    const val Duration550DurationMs = 550.0
-    const val Duration600DurationMs = 600.0
-    const val Duration700DurationMs = 700.0
-    const val Duration800DurationMs = 800.0
-    const val Duration900DurationMs = 900.0
+    const val DurationExtraLong1 = 700.0
+    const val DurationExtraLong2 = 800.0
+    const val DurationExtraLong3 = 900.0
+    const val DurationExtraLong4 = 1000.0
+    const val DurationLong1 = 450.0
+    const val DurationLong2 = 500.0
+    const val DurationLong3 = 550.0
+    const val DurationLong4 = 600.0
+    const val DurationMedium1 = 250.0
+    const val DurationMedium2 = 300.0
+    const val DurationMedium3 = 350.0
+    const val DurationMedium4 = 400.0
+    const val DurationShort1 = 50.0
+    const val DurationShort2 = 100.0
+    const val DurationShort3 = 150.0
+    const val DurationShort4 = 200.0
     val EasingEmphasizedCubicBezier = CubicBezierEasing(0.2f, 0.0f, 0.0f, 1.0f)
     val EasingEmphasizedAccelerateCubicBezier = CubicBezierEasing(0.3f, 0.0f, 0.8f, 0.15f)
     val EasingEmphasizedDecelerateCubicBezier = CubicBezierEasing(0.05f, 0.7f, 0.1f, 1.0f)
diff --git a/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/ReturnFromAwaitPointerEventScopeDetector.kt b/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/ReturnFromAwaitPointerEventScopeDetector.kt
new file mode 100644
index 0000000..9988830
--- /dev/null
+++ b/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/ReturnFromAwaitPointerEventScopeDetector.kt
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@file:Suppress("UnstableApiUsage")
+
+package androidx.compose.ui.lint
+
+import androidx.compose.lint.Names
+import androidx.compose.lint.isInPackageName
+import com.android.tools.lint.detector.api.Category
+import com.android.tools.lint.detector.api.Detector
+import com.android.tools.lint.detector.api.Implementation
+import com.android.tools.lint.detector.api.Issue
+import com.android.tools.lint.detector.api.JavaContext
+import com.android.tools.lint.detector.api.Scope
+import com.android.tools.lint.detector.api.Severity
+import com.android.tools.lint.detector.api.SourceCodeScanner
+import com.intellij.psi.PsiMethod
+import java.util.EnumSet
+import org.jetbrains.uast.UCallExpression
+import org.jetbrains.uast.ULocalVariable
+import org.jetbrains.uast.UReturnExpression
+import org.jetbrains.uast.skipParenthesizedExprUp
+
+class ReturnFromAwaitPointerEventScopeDetector : Detector(), SourceCodeScanner {
+
+    override fun getApplicableMethodNames(): List<String> =
+        listOf(Names.Ui.Pointer.AwaitPointerEventScope.shortName)
+
+    override fun visitMethodCall(context: JavaContext, node: UCallExpression, method: PsiMethod) {
+        if (!method.isInPackageName(Names.Ui.Pointer.PackageName)) return
+        val methodParent = skipParenthesizedExprUp(node.uastParent)
+        val isAssignedToVariable = methodParent is ULocalVariable
+        val isReturnExpression = methodParent is UReturnExpression
+
+        if (isAssignedToVariable || isReturnExpression) {
+            context.report(
+                ExitAwaitPointerEventScope,
+                node,
+                context.getNameLocation(node),
+                ErrorMessage
+            )
+        }
+    }
+
+    companion object {
+        const val IssueId: String = "ReturnFromAwaitPointerEventScope"
+        const val ErrorMessage = "Returning from awaitPointerEventScope may cause some input " +
+            "events to be dropped"
+        val ExitAwaitPointerEventScope = Issue.create(
+            IssueId,
+            ErrorMessage,
+            "Pointer Input events are queued inside awaitPointerEventScope. " +
+                "By using the return value of awaitPointerEventScope one might unexpectedly lose " +
+                "events. If another awaitPointerEventScope is restarted " +
+                "there is no guarantee that the events will persist between those calls. In this " +
+                "case you should keep all events inside the awaitPointerEventScope block",
+            Category.CORRECTNESS, 3, Severity.WARNING,
+            Implementation(
+                ReturnFromAwaitPointerEventScopeDetector::class.java,
+                EnumSet.of(Scope.JAVA_FILE, Scope.TEST_SOURCES)
+            )
+        )
+    }
+}
diff --git a/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/UiIssueRegistry.kt b/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/UiIssueRegistry.kt
index c68f37c..d475dec 100644
--- a/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/UiIssueRegistry.kt
+++ b/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/UiIssueRegistry.kt
@@ -35,7 +35,8 @@
         ModifierDeclarationDetector.ModifierFactoryExtensionFunction,
         ModifierDeclarationDetector.ModifierFactoryReturnType,
         ModifierDeclarationDetector.ModifierFactoryUnreferencedReceiver,
-        ModifierParameterDetector.ModifierParameter
+        ModifierParameterDetector.ModifierParameter,
+        ReturnFromAwaitPointerEventScopeDetector.ExitAwaitPointerEventScope
     )
     override val vendor = Vendor(
         vendorName = "Jetpack Compose",
diff --git a/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ReturnFromAwaitPointerEventScopeDetectorTest.kt b/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ReturnFromAwaitPointerEventScopeDetectorTest.kt
new file mode 100644
index 0000000..55d4840
--- /dev/null
+++ b/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ReturnFromAwaitPointerEventScopeDetectorTest.kt
@@ -0,0 +1,346 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.ui.lint
+
+import androidx.compose.lint.test.Stubs
+import androidx.compose.lint.test.compiledStub
+import com.android.tools.lint.checks.infrastructure.LintDetectorTest
+import com.android.tools.lint.checks.infrastructure.TestFile
+import com.android.tools.lint.detector.api.Detector
+import com.android.tools.lint.detector.api.Issue
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+@RunWith(JUnit4::class)
+class ReturnFromAwaitPointerEventScopeDetectorTest : LintDetectorTest() {
+    override fun getDetector(): Detector = ReturnFromAwaitPointerEventScopeDetector()
+
+    override fun getIssues(): MutableList<Issue> =
+        mutableListOf(ReturnFromAwaitPointerEventScopeDetector.ExitAwaitPointerEventScope)
+
+    private val ForEachGestureStub: TestFile = compiledStub(
+        filename = "ForEachGesture.kt",
+        filepath = "androidx/compose/foundation/gestures",
+        checksum = 0xf41a4b04,
+        """
+            package androidx.compose.foundation.gestures
+            import androidx.compose.ui.input.pointer.PointerInputScope
+
+            suspend fun PointerInputScope.forEachGesture(block: suspend PointerInputScope.() -> Unit) {
+                block()
+            }
+            """,
+        """
+                META-INF/main.kotlin_module:
+                H4sIAAAAAAAAAH2NSwrCMBCGR0SErCToVrC4UsghtFakG0EvEJqxBmomJBOo
+                tzfS7gQXw//6YABgCgCTfPNRQaDYamcCWdOrhl6eIqoHJWc0W3KqxcgpYJSr
+                Muj2PKQSGRumULNcVBROunmOS26Wd+1/OLEXxb83nX5TYjk7UJ/ho9j8wMkq
+                63xi5ck6xiDXtxQ9OmNdex2qy3evbJdtzQXs4AM20YY08QAAAA==
+                """,
+        """
+                androidx/compose/foundation/gestures/ForEachGestureKt.class:
+                H4sIAAAAAAAAALVVz08bRxT+Zm1ss0BiNpACaRwS3IYfIWtoadM6Qo2ISVZ1
+                DIohVcWhGq8XZ7C9Y+3OWuSGcqjUf6OHnqOe0h4qRG/9o6q+sQ0BTIIUqZY8
+                870337z55s2b2X/+/fMvAF/iW4YV7lcDKar7tiubLRl69q6M/CpXQvp2zQtV
+                FHihvS6DAndfPuna36skGEN6j7e53eB+zd6o7HkueWMMV3bPcBl+mS32rREJ
+                W/itSNktKXzlBfZmt3e0s+zKlpcv1qVqCN/eazft3ch3tSAS0kPLJ+OuDGSk
+                hE8q16RPIOpoz88Vz8vLMzb+v2h5uPhRURcv2cLDE8K2L1R+Nb/Qv6XVy/LQ
+                F+SivCBblEHN3vNUJeCCtsZ9Xyre3WYpajR4peERbeZDNKk0k1iZD2crCZMh
+                Ify2rFN1PJjt19PvuUD0MIYxMoQhXGGY688BJTsgicINbecE6sJNM1yveWpt
+                4/nG9pZTKvxU3i5vFkqPC48ZxmYvXMjCNROjGGMYOpXLJK4zpJxSeetRaa3A
+                MHIm0cOYwOQgPsEUhc2qlyLMnr8YKx9VNQwDlYZ06wzTl10R0pvVkRuetk9N
+                eN+dYRg9pjzzFKdXgJPPaLZj9Fww3SQZWF0Dg/z7QqMcoeoSQ3h4kDEPD0wj
+                bZjGhNGBE11opHvG4cHUKuEpI8fmjZyxfDcdm5pJMStukWWZVqqDWG7ASljx
+                CZZL5OJHvyaMVPLp0c/f/f2WHR5oM506em3ETSM1qZdeZqQN1rHw09vPHDsL
+                +8qjCpD+8ejWq04qR88+bPfriiG+Jqt0OiNlxd36M97a0sXPcLVI+SpFzYoX
+                9DxWUbq88YIHQts952BZ1HzePeAbzyNKbtNz/LYIBQ0/endf6M6dH93kAW96
+                dNpnaGZZRoHrrQsdfbI350VfPCzBQBz6RzQMIEHWElkuYtDHNL4wf+8PXI3h
+                x7cY/w3xNz/8jhtvaCCGZWoTYJtJmvIFYZNCac8YkvSRAKa7AfApbnYWGEcG
+                t2gZjaZxm9gruiKI/VU3ElLUf03/azEyBjua3rUGHnTaHL6hfp28d0jvzA5i
+                DrIOPqMWnzu4i1kHc5jfAQuxgHs7GAwxEGIxxM0QmRD3Q9zumHaIxH8TzBqW
+                1AYAAA==
+                """
+
+    )
+
+    private val stubs = arrayOf(
+        Stubs.Composable,
+        Stubs.Modifier,
+        UiStubs.Density,
+        UiStubs.PointerInputScope,
+        UiStubs.PointerEvent,
+        ForEachGestureStub,
+        UiStubs.Alignment,
+    )
+
+    @Test
+    fun awaitPointerEventScope_standalone_shouldNotWarn() {
+        expectClean(
+            """
+                package test
+                import androidx.compose.runtime.Composable
+                import androidx.compose.ui.Modifier
+                import androidx.compose.ui.input.pointer.pointerInput
+
+                @Composable
+                fun TestComposable() {
+                    Modifier.pointerInput(Unit) {
+                        awaitPointerEventScope {
+
+                        }
+                    }
+                }
+            """
+        )
+    }
+
+    @Test
+    fun awaitPointerEventScope_insideForEach_shouldNotWarn() {
+        expectClean(
+            """
+                package test
+                import androidx.compose.foundation.gestures.forEachGesture
+                import androidx.compose.runtime.Composable
+                import androidx.compose.ui.Modifier
+                import androidx.compose.ui.input.pointer.pointerInput
+
+                @Composable
+                fun TestComposable() {
+                    Modifier.pointerInput(Unit) {
+                        forEachGesture {
+                            awaitPointerEventScope {
+
+                            }
+                        }
+                    }
+                }
+            """
+        )
+    }
+
+    @Test
+    fun awaitPointerEventScope_otherMethodName_shouldNotWarn() {
+        expectClean(
+            """
+                package test
+
+                fun <T> awaitPointerEventScope(block: () -> T): T {
+                    return block()
+                }
+                fun TestComposable() {
+                   val result = awaitPointerEventScope {
+                        "Result"
+                    }
+                    println(result)
+                }
+            """
+        )
+    }
+
+    @Test
+    fun awaitPointerEventScope_assignedToVariable_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+                package test
+
+                import androidx.compose.runtime.Composable
+                import androidx.compose.ui.Modifier
+                import androidx.compose.ui.input.pointer.pointerInput
+
+                @Composable
+                fun TestComposable() {
+                    Modifier.pointerInput(Unit) {
+                        while (true) {
+                            val assigned = awaitPointerEventScope {
+
+                            }
+                        }
+                    }
+                }
+            """
+            ),
+            *stubs,
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:12: $WarningMessage
+                            val assigned = awaitPointerEventScope {
+                                           ~~~~~~~~~~~~~~~~~~~~~~
+0 errors, 1 warnings
+                    """
+                    .trimIndent()
+            )
+    }
+
+    @Test
+    fun awaitPointerEventScope_returnedFromMethod_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+                package test
+
+                import androidx.compose.ui.input.pointer.PointerInputScope
+
+                private suspend fun PointerInputScope.doSomethingInInputScope(): Any {
+                    return awaitPointerEventScope {
+
+                    }
+                }
+            """
+            ),
+            *stubs,
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:7: $WarningMessage
+                    return awaitPointerEventScope {
+                           ~~~~~~~~~~~~~~~~~~~~~~
+0 errors, 1 warnings
+                    """
+                    .trimIndent()
+            )
+    }
+
+    @Test
+    fun awaitPointerEventScope_assignedFromLambdaMethod_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+                package test
+
+                import androidx.compose.ui.input.pointer.PointerInputScope
+
+                private suspend fun PointerInputScope.doSomethingInInputScope(): Boolean {
+                    val result = run {
+                        awaitPointerEventScope {
+                            true
+                        }
+                    }
+
+                    return result
+                }
+
+                private suspend fun PointerInputScope.doSomethingInInputScope(nullable: String?): Boolean {
+                    val result = nullable?.let {
+                        awaitPointerEventScope {
+                            true
+                        }
+                    } ?: false
+
+                    return result
+                }
+            """
+            ),
+            *stubs,
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:8: $WarningMessage
+                        awaitPointerEventScope {
+                        ~~~~~~~~~~~~~~~~~~~~~~
+src/test/test.kt:18: $WarningMessage
+                        awaitPointerEventScope {
+                        ~~~~~~~~~~~~~~~~~~~~~~
+0 errors, 2 warnings
+                    """
+                    .trimIndent()
+            )
+    }
+
+    @Test
+    fun awaitPointerEventScope_returnedFromLambdaMethod_shouldWarn() {
+        lint().files(
+            kotlin(
+                """
+                package test
+
+                import androidx.compose.ui.input.pointer.PointerInputScope
+
+                private suspend fun PointerInputScope.doSomethingInInputScope(): Boolean {
+                    return run {
+                        awaitPointerEventScope {
+                            true
+                        }
+                    }
+                }
+
+                private suspend fun PointerInputScope.doSomethingInInputScope(nullable: String?): Boolean {
+                    return nullable?.let {
+                        awaitPointerEventScope {
+                            true
+                        }
+                    } ?: false
+                }
+            """
+            ),
+            *stubs,
+        )
+            .run()
+            .expect(
+                """
+src/test/test.kt:8: $WarningMessage
+                        awaitPointerEventScope {
+                        ~~~~~~~~~~~~~~~~~~~~~~
+src/test/test.kt:16: $WarningMessage
+                        awaitPointerEventScope {
+                        ~~~~~~~~~~~~~~~~~~~~~~
+0 errors, 2 warnings
+                    """
+                    .trimIndent()
+            )
+    }
+
+    @Test
+    fun awaitPointerEventScope_notAssignedToVariable_shouldNotWarn() {
+        expectClean(
+            """
+                package test
+
+                import androidx.compose.runtime.Composable
+                import androidx.compose.ui.Modifier
+                import androidx.compose.ui.input.pointer.pointerInput
+
+                @Composable
+                fun TestComposable() {
+                    Modifier.pointerInput(Unit) {
+                        while (true) {
+                            awaitPointerEventScope {
+
+                            }
+                        }
+                    }
+                }
+            """
+        )
+    }
+
+    private fun expectClean(source: String) {
+        lint()
+            .files(kotlin(source), *stubs)
+            .run()
+            .expectClean()
+    }
+
+    private val WarningMessage: String =
+        "Warning: ${ReturnFromAwaitPointerEventScopeDetector.ErrorMessage} " +
+            "[${ReturnFromAwaitPointerEventScopeDetector.IssueId}]"
+}
\ No newline at end of file
diff --git a/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/UiStubs.kt b/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/UiStubs.kt
new file mode 100644
index 0000000..4530026
--- /dev/null
+++ b/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/UiStubs.kt
@@ -0,0 +1,242 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.ui.lint
+
+import androidx.compose.lint.test.compiledStub
+import com.android.tools.lint.checks.infrastructure.TestFile
+
+object UiStubs {
+
+    val Density: TestFile = compiledStub(
+        filename = "Density.kt",
+        filepath = "androidx/compose/ui/unit",
+        checksum = 0x8c5922ca,
+        """
+            package androidx.compose.ui.unit
+
+            interface Density
+        """,
+        """
+                META-INF/main.kotlin_module:
+                H4sIAAAAAAAAAH2NSwrCMBCGR0SErCToVrC4UsghtFakG0EvEJqxBmomJBOo
+                tzfS7gQXw//6YABgCgCTfPNRQaDYamcCWdOrhl6eIqoHJWc0W3KqxcgpYJSr
+                Muj2PKQSGRumULNcVBROunmOS26Wd+1/OLEXxb83nX5TYjk7UJ/ho9j8wMkq
+                63xi5ck6xiDXtxQ9OmNdex2qy3evbJdtzQXs4AM20YY08QAAAA==
+                """,
+        """
+                androidx/compose/ui/unit/Density.class:
+                H4sIAAAAAAAAAIVOTUvDQBB9s9Gmxq/UD6g38Qe4benNkyBCoCIoeMlpm6wy
+                Tbor3U2pt/4uD9KzP0rcqHdn4M17M/DefH69fwAY44Rwrky5sFyuZGHnr9Zp
+                2bBsDHt5o41j/xaDCOlMLZWslXmR99OZLnyMiNCbVNbXbOSd9qpUXl0RxHwZ
+                BW9qISZQFVYrbtUgsHJION2su4noi0SkgT33N+uRGFB7HBEuJv/9EzJASP7U
+                ZeWDeLTNotC3XGvC2UNjPM/1Ezue1vraGOuVZ2tcJ2RgC78lcPSDPRyHOQyW
+                26E7OaIMcYZuQOy0kGTYxV4OctjHQQ7hcOiQfgOBbqTCRAEAAA==
+                """
+    )
+
+    val PointerEvent: TestFile = compiledStub(
+        filename = "PointerEvent.kt",
+        filepath = "androidx/compose/ui/input/pointer",
+        checksum = 0xbe2705da,
+        """
+            package androidx.compose.ui.input.pointer
+
+            import androidx.compose.ui.unit.Density
+
+            interface AwaitPointerEventScope : Density
+
+            class PointerId(val value: Long)
+
+            class PointerInputChange(
+                val id: PointerId
+            )
+        """,
+        """
+                META-INF/main.kotlin_module:
+                H4sIAAAAAAAAAH2NSwrCMBCGR0SErCToVrC4UsghtFakG0EvEJqxBmomJBOo
+                tzfS7gQXw//6YABgCgCTfPNRQaDYamcCWdOrhl6eIqoHJWc0W3KqxcgpYJSr
+                Muj2PKQSGRumULNcVBROunmOS26Wd+1/OLEXxb83nX5TYjk7UJ/ho9j8wMkq
+                63xi5ck6xiDXtxQ9OmNdex2qy3evbJdtzQXs4AM20YY08QAAAA==
+                """,
+        """
+                androidx/compose/ui/input/pointer/AwaitPointerEventScope.class:
+                H4sIAAAAAAAAAJ1QTU8CMRB9syiL+AEoGrwZf4AFwsHoiURNSDAaSbxwKrvV
+                FJZ2Q2cRb/wuD4azP8rY1QsHTjbpm77Xzsybfn1/fALo4IRwKU08szpeiMhO
+                U+uUyLTQJs1YpFYbVjPRfZOaH//I7VwZHkQ2VSGIUB3LuRSJNK/iYTRWEYco
+                EM421cyMZnGjjNP8HmKbUOtPLCfaiHvFMpYsrwnBdF7wziiHkEATLy10zpr+
+                FLcI9dWyVA4aQb5LL43Vsh00Kb9rE676/x3Gtz7fmLzu2j+qrGdeTJhQHths
+                Fqk7nSjC6VNmWE/Vs3Z6lKiuMZYla2tc0VvEFghF5CtA/RePcOxjy+v+S1Aa
+                otDDTg9lj9jNYa+HfRwMQQ4VVIcIHGoOhz/oLRV0wgEAAA==
+                """,
+        """
+                androidx/compose/ui/input/pointer/PointerId.class:
+                H4sIAAAAAAAAAJVQTW8SQRh+ZpZdlhVkQa0UP6r20mJ0aeNN06iNJhD8SGu4
+                cBrYSTsFZgk7S3rkt3j3YKIx8WCIR3+U8Z2FePJiMvPM+7zz5Hk/fv3+/gPA
+                E+wyPBQ6nicqvoxGyXSWpDLKVKT0LDPRLFHayHn0fv124iIYQ3ghFiKaCH0W
+                vRteyJEpwmHwnimtzBFDYa+732dw9vb7ZbgoBijAZ3AXYpJJBtYtI8CVEjjK
+                JDbnKmV41PuPJp4y+GfS9Nd+VKfLUOuNEzNROnojjYiFESTi04VDQzILRSo8
+                ptSlsqxNUXzAcLxa1gPe4AEPV8uADg9LAfedxmp5yNvsZaXuhbzJ287Pjx4P
+                Cye1v8wndbPgu6FnrQ4ZlUF10+GrhdTm8djQdMdJTC1We0rLt9l0KOcfxHBC
+                mXovGYlJX8yV5ZtkcJpk85F8rSzZPsm0UVPZV6mi3xdaJ0YYlegUB7S6gh0M
+                dbtJijjFLjzCu8SO4MBOGbS+odTa+YrK51yzQ2g1gI97hFuUIxWuogrkkXWj
+                XSKku/aKcm/AbX1B5dM/bcprwcaG436Od/CA3ud5ky6uDeB0cL2DG4TYsnCz
+                gwa2B2Apmrg1QDFFNcXtFEGOXoowRe0P2i862KkCAAA=
+                """,
+        """
+                androidx/compose/ui/input/pointer/PointerInputChange.class:
+                H4sIAAAAAAAAAJVSXU8TURA9d9tul6XItogUUPwApRRxCyG+YIxKNGlSkYDh
+                hafb3Zty2+1dsnvb8Mhv8RdootH4YIiP/ijj7HYDgi+SbObMmcycmZ25v35/
+                /wFgE2sMm1z5USj9E9cL+8dhLNyBdKU6Hmj3OJRKi8jdHWEzCW4fcdURRTAG
+                p8uH3A2Iu+/aXeHpInIM5jOppH7O0Ki1/l/a31o5YFhshVHH7QrdjrhUscuV
+                CjXXMiR/J9Q7gyDYYjCkb8FiWOiFOpDK7Q77bqqieOA2lY6oVHpxETbDtHck
+                vF5Wu8sj3heUyLBca12dfuuvyH4i0qGZSihhwsY4bjDkagkvwLGRR5lh7Vr/
+                V4KFqTEYuMmQ10cyZnh6DYGL3dMGCh2hmz6DW1u51gwM5Va2tLdCc59rnuyz
+                P8zRa2CJKTKwHoVOZMIa5PnrDNtnpxXbqBq24Zyd2vSlvpWrnp1uGA32aqJi
+                Osac0cj9/GAaTn6vfM4syp7LWwXHTKQ2GLXBZDbQ66FQ+klPM8zvDZSWfdFU
+                QxnLdiBeXhyetrUd+oLKWlKJnUG/LaL3nHIYKq3Q48EBj2TCs+DSVa3zq18S
+                tffDQeSJNzKpmc1qDv7pjnW6WD7ZDirJAQkfETMJi4QGYYGYgWViLUKD0Fmt
+                jH3DZP0rKvXVL5j+lGbWyN5AjrJtJC9qkuwKxW6NaghngNQb9aln50gblVHF
+                bNbGRRIFCvXPmP54rm2mwfFUszRKyDQvT7ya2od4TPiConOUN3+IXBO3m7hD
+                FguJudvEPdw/BIvxAIuHKMaYibEUw4oxFcOMUY0x+wcqer7sSgQAAA==
+                """
+    )
+
+    val PointerInputScope: TestFile = compiledStub(
+        filename = "SuspendingPointerInputFilter.kt",
+        filepath = "androidx/compose/ui/input/pointer",
+        checksum = 0xd7db138c,
+        """
+            package androidx.compose.ui.input.pointer
+            import androidx.compose.ui.unit.Density
+            import androidx.compose.ui.Modifier
+
+            interface PointerInputScope : Density {
+                suspend fun <R> awaitPointerEventScope(
+                    block: suspend AwaitPointerEventScope.() -> R
+                ): R
+            }
+
+            fun Modifier.pointerInput(
+                key1: Any?,
+                block: suspend PointerInputScope.() -> Unit
+            ): Modifier = Modifier
+        """,
+        """
+                META-INF/main.kotlin_module:
+                H4sIAAAAAAAAAH2NSwrCMBCGR0SErCToVrC4UsghtFakG0EvEJqxBmomJBOo
+                tzfS7gQXw//6YABgCgCTfPNRQaDYamcCWdOrhl6eIqoHJWc0W3KqxcgpYJSr
+                Muj2PKQSGRumULNcVBROunmOS26Wd+1/OLEXxb83nX5TYjk7UJ/ho9j8wMkq
+                63xi5ck6xiDXtxQ9OmNdex2qy3evbJdtzQXs4AM20YY08QAAAA==
+                """,
+        """
+                androidx/compose/ui/input/pointer/PointerInputScope.class:
+                H4sIAAAAAAAAAJ1T3U4TQRQ+s7vtLkV0WRULKGDBqDG4teoNJQSiEEqqkpZ4
+                w9V0uzRTtjPNzmyFu42P4oXPYLwwDd75Ir6F8Wx/AkJjjRdz5syZb84538w3
+                P359/QYAL+ABgeeU10PB6ieuJ1ptIX03Yi7j7Ui5bcG48kN3vz+XkmDVE23f
+                BELAbtIOdQPKG+67WtP3lAk6gaVR6SLOlPva55KpUxNSBGboB8rUIO92x+f9
+                vAQOHpWPhQoYd5udlnsUcU8xwaW7M/AKxeG+J0IRKcZ96b4SHJ2IJoDi4/Ll
+                vooEfq5X1q7GN8YVW18tj7+drZFUiqtjGl1fPagUN4pPRrQ1juPg6EimK2UR
+                Ntymr2ohZciFci4U7fN6GwUBrQU+wpb/BhMqQSJqetjIG1/ROlUUY1qro6N2
+                SGJMAuQYQycsWeXRqz8jEHfjXEbLav1h6ed+Muxu3HO6sXWU7cYFLU/2Nm1t
+                TtvVc4bVjW298NA25pYt4hiOlk87GcdKvF09bzppx8iSvJVPnX1Ka9bE7tnn
+                ze9fSDdOlnbm7KNmYMHZpI8CgZf/8HhXpI0McyPPXdQwgkiFQKoWCA/5O8Nr
+                OlcpgbX/lw7+onEqJ/gCsDBEbZ+opDHBhw0cnPbSLFYj2fZ5nfHGRaI7LED3
+                6bEiMFFlDU5VFOLfm69EWKHll3iHSYY62ToXBQrr8u4+DWnLx0R/wDJVEYWe
+                jyUw4+zgzPsr+dL4RmAgh3SiJYOACRbosIQrDSbgPs5p3M3gnMMxpeFiMoH2
+                rAbLPbsIKziXMXoNUjB1CHoJrpfgBlqwEzNdAgduHgKRcAtuH8KkhBkJdySY
+                ErISZiXMSZiXcFfCPQkLEqzfOHmKfRsFAAA=
+                """,
+        """
+                androidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt.class:
+                H4sIAAAAAAAAAK1VW08bVxD+ztrYi0OLs5QWDCW0OOGSkHWcSyMtQq1QIllx
+                aFqnvPB0vD5xDl6fY+0FkTfUn5JfUPUpykOE0rf+lv6GqHOWhZhAjVTF0s7O
+                5Zs5M3Nm1n9/ePsOwD08ZPiRq06oZefA9XV/oCPhJtKVapDE7kBLFYvQbSXR
+                QKiOVN1nx5qGMT+WAbFP4iIYQ3mP73M34Krr/tzeEz5pcwwTgyE8w2CledFh
+                T3VHvpAi9JqfBvGaPR0HUrl7+333RaL8WGoVuY8zru6tjg7I8M/nPnJj/cKA
+                Zxs23KaWrwfCWz8J6+tQJ7FUInK3tCIm4SbuxingNyVjb9O7eT6zzcvLXWrq
+                sOvuibgdcklpc6V0zI9L2NbxdhIEhKqOQhGEtwNBsMJG/FJGmzZKDAtDXUlr
+                UzxwGyoOyV/6URETDNP+S+H3smOe8ZD3BQEZllcu6PJHTcsE6XqrOxP4EpMl
+                fIEyw1g70H7PhsMwP6rmIr5iGN8iA1eUP8Po+66eIr0JfI1vxjGNGQanaiqt
+                np3Whcuane+JV3fI+Xx1DIuXTS7D1RPIUxHzDo856az+fo4WkxlSZGA9w1ik
+                P5CGqxHXoSMPjw6rpaPDkjVjpa8ykUw8fcpWZq48InPFqrE1eup22arkZ1gt
+                V18u5ytLNnPyjlUrOCXHTjm7VnQKToqojb1/XbDs8b/esKNDw5ZL73+38iXL
+                njV51BklStVnVQyXdv9/7chQ1/5jSzxzKxnk0UEsaPa0Ojn4+as0xrVRX6vb
+                PbrY/JbuCIbJJsXfTvptET43E29q0T4PdngojZwpx1uyq3ichMTP/ZpQMn3R
+                UPsykmT+6ePm0Fp9aj3dgTOwUksnoS8oIYo4m/nsnIuHO7CQh/kRDGMokFQj
+                6RfSm2GYWnOuvMHVW84U0T8xe4TpP8y0kCMITF9fTKJO/OIxHBXMpeGmMI9v
+                yW44BwvkcTf1K9IfwrGnTe/7xp7LBGpDSu0U+CClLn6gd5O01yi7xV3kGviu
+                ge+JYqmBKq43cAPLu2ARVrC6iysRxiLMRZiPsBbBiXAzwq0I66l4O0LhX/yB
+                0s2YBgAA
+                """
+    )
+
+    val Alignment: TestFile = compiledStub(
+        filename = "Alignment.kt",
+        filepath = "androidx/compose/ui",
+        checksum = 0xd737b17c,
+        """
+            package androidx.compose.ui
+            class Alignment {
+                companion object {
+                    val TopStart = Alignment()
+                }
+            }
+            """,
+        """
+                META-INF/main.kotlin_module:
+                H4sIAAAAAAAAAH2NSwrCMBCGR0SErCToVrC4UsghtFakG0EvEJqxBmomJBOo
+                tzfS7gQXw//6YABgCgCTfPNRQaDYamcCWdOrhl6eIqoHJWc0W3KqxcgpYJSr
+                Muj2PKQSGRumULNcVBROunmOS26Wd+1/OLEXxb83nX5TYjk7UJ/ho9j8wMkq
+                63xi5ck6xiDXtxQ9OmNdex2qy3evbJdtzQXs4AM20YY08QAAAA==
+                """,
+        """
+                androidx/compose/ui/Alignment$Companion.class:
+                H4sIAAAAAAAAAJVTTW/TQBB96ziJ6waa9AP6AZTSQJNC67biVoRog5AipUVq
+                q1x6QBtnCZs468q7iXrMiR/CL4ATiAOKeuRHIcapaSuQKPgwO+/NvJlZj/39
+                x9dvAJ5ijWGFq2YUyuap54fdk1ALrye9nUC2VFcoU6wQyZUMVRaMId/mfe4F
+                XLW814228E0WKYbMM6mkec6QKpXrOaSRcWEjy2Cbd1IzlGv/2GObYbwlzFF4
+                cmh4ZBiWStdoSbFcC6OW1xamEXGptMeVCg03VE57+6HZ7wUBZd39a5ksbjLM
+                cN8XWhevTFD0T3LII+diAgWGzVKtE5pAKq/d73pSGREpHngvxVveC0yFOpqo
+                55sw2uNRR0Tb5boLK34RU0X/MvimO4oyrP9fNYbCL8GeMLzJDSfO6vZTtEsW
+                G+rEOkSdyhhtkNfcZNgdDqZda9Zyrfxw4FqOdQ4cyzl7n5odDrasDbabdayz
+                Dxkrbx0U8ql5a8Mm5LjDwbztpPOZuNIWoy5wLpezeO1qxi42y5C7CKx3SGxX
+                wqZgmKhJJfZ73YaIjngjIGayFvo8qPNIxjghFw56ysiuqKq+1JKoncslU+mq
+                UiKqBFxrQdA9DHuRL17JWDmXKOt/6LBJu7ERPyny6Kul6z0i5NFJd0V69TOc
+                T+RYWCGbGZE2SmRz5wkYg0tnAePEWCPxeiK2v2Dy42/a9BWtnWjLSfQGkGeU
+                MZUMsUanlQwxHQ/BRuJb52Qijr0Z4ujPwyohdySaQBFzeDxq/hBP6HxB/G3K
+                nT1Gqoq5KubJYiE2d6q4i3vHYBqLuH+MrIarsaSR0XigsawxrpH7CTHvlCUx
+                BAAA
+                """,
+        """
+                androidx/compose/ui/Alignment.class:
+                H4sIAAAAAAAAAIVSXU8TQRQ9s9uWsqxSqlTKh4BUKagsEBMTISZYY9KkYCKE
+                hPA03Y512u0s2ZlteOS3+AtEHkgkMcRHf5TxbikQNIGXe/eeOffcc2f2958f
+                PwG8gscwxVUjCmXj0PPDzkGohRdLbyOQTdURygyAMeRavMu9gKum97HeEj6h
+                NkNmXSpp3jLY5YVdF2lkHKQwwJAyX6RmmK7dqrzGMMp9X2hdagqzEx5sGx6Z
+                kn/AMFteuLM3e9nh4h6cQVi4T+C6H/RNzd8qUKoQyJUM1QBGGFbKtXZoqNVr
+                dTueVEZEigfee/GZx4GphEqbKPZNGG3yqC2itYt9HzjI4yHD4JUYwx3Gr+eu
+                uSjgUeJ7zKFA1zZXC6Om1xKmHnGptMeVCg03xNXeVmi24iCgvUcunW4Kwxvc
+                cMKsTtem52RJICHWJuhQJtUyfTVWGErnR65jjVmOlTs/cqysNXZ+NGOvWsvs
+                DbPfpX99zVg5K+GuMtKBe2V4qW0YJj7FysiOqKqu1LIeiI1ra/TclbAhGIZr
+                UomtuFMX0Q4nDkO+Fvo82OWRTOo+6FaVElEl4FoLana2wzjyxQeZnBX7c3b/
+                m4IVuqMULWShmNwbeSxTlaE8QXk8+Qf+wWzK6V61QJVHmVZDevEU2eOe0GKf
+                nFCfU3QvCBgkKeSKGOohSfNk7wRIfcfwt+Sib/RmkbsaswS7xyycIb/HTjF6
+                guIZrL1TjJ9g+PhG7xDNsvGCqsR6nhwVaLmXPW/zpAS8JnySWFP7sKt4XMU0
+                RcwkYbaKJ5jbB9Mo4ek+UhqOxjONjEbhL7J1D8vfAwAA
+                """
+    )
+}
\ No newline at end of file
diff --git a/compose/ui/ui-text/lint-baseline.xml b/compose/ui/ui-text/lint-baseline.xml
index 84c081a..04f778b 100644
--- a/compose/ui/ui-text/lint-baseline.xml
+++ b/compose/ui/ui-text/lint-baseline.xml
@@ -28,4 +28,454 @@
             file="../../../text/text/src/main/java/androidx/compose/ui/text/android/TempListUtils.kt"/>
     </issue>
 
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="    @OptIn(InternalPlatformTextApi::class, ExperimentalTextApi::class)"
+        errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/AndroidFontListTypeface.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class, ExperimentalTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/AndroidParagraph.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/AndroidParagraph.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/AndroidParagraph.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class, ExperimentalTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/AndroidParagraphHelper.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/AndroidParagraphIntrinsics.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/AndroidParagraphIntrinsics.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/AndroidParagraphIntrinsics.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/style/BaselineShiftSpan.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/BoringLayoutFactory.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/BoringLayoutFactory.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/style/FontFeatureSpan.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/LayoutCompat.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/LayoutCompat.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/LayoutHelper.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/LayoutIntrinsics.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/LayoutIntrinsics.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/style/LetterSpacingSpanEm.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/style/LetterSpacingSpanPx.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/style/LineHeightSpan.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/style/LineHeightStyleSpan.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/extensions/PlaceholderExtensions.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/style/PlaceholderSpan.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/animation/SegmentBreaker.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/animation/SegmentBreaker.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/animation/SegmentType.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/style/ShadowSpan.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/style/SkewXSpan.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class, ExperimentalTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/extensions/SpannableExtensions.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/extensions/SpannableExtensions.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/extensions/SpannableExtensions.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/extensions/SpannableExtensions.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/extensions/SpannableExtensions.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/extensions/SpannableExtensions.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/extensions/SpannableExtensions.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/extensions/SpannableExtensions.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="src/androidMain/kotlin/androidx/compose/ui/text/platform/extensions/SpannableExtensions.android.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/StaticLayoutFactory.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/StaticLayoutFactory.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/style/TextDecorationSpan.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/TextLayout.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/TextLayout.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/TextLayout.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/TextLayout.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/TextLayout.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/TextLayout.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/TextLayout.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@OptIn(InternalPlatformTextApi::class)"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/TextLayout.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/style/TypefaceSpan.kt"/>
+    </issue>
+
+    <issue
+        id="NullAnnotationGroup"
+        message="Could not find associated group for annotation androidx.compose.ui.text.android.InternalPlatformTextApi, which is used in androidx.compose.ui."
+        errorLine1="@InternalPlatformTextApi"
+        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="../../../text/text/src/main/java/androidx/compose/ui/text/android/selection/WordBoundary.kt"/>
+    </issue>
+
 </issues>
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationTest.kt
index 295efb7..a3063eb 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationTest.kt
@@ -479,6 +479,30 @@
     }
 
     @Test
+    fun getBoundingBox_rtl_singleLine() {
+        with(defaultDensity) {
+            val text = "\u05D0\u05D1\u05D2"
+            val fontSize = 50.sp
+            val fontSizeInPx = fontSize.toPx()
+            val paragraph = simpleParagraph(
+                text = text,
+                style = TextStyle(fontSize = fontSize),
+                width = text.length * fontSizeInPx
+            )
+
+            // test positions that are 0, 1, 2 ... which maps to chars 0, 1, 2 ...
+            for (c in 0 until text.length) {
+                val box = paragraph.getBoundingBox(c)
+                val i = text.length - 1 - c // take the opposite side for non-relative calculation
+                assertThat(box.left).isEqualTo(i * fontSizeInPx)
+                assertThat(box.right).isEqualTo((i + 1) * fontSizeInPx)
+                assertThat(box.top).isZero()
+                assertThat(box.bottom).isEqualTo(fontSizeInPx)
+            }
+        }
+    }
+
+    @Test
     fun getBoundingBox_ltr_multiLines() {
         with(defaultDensity) {
             val firstLine = "abc"
@@ -506,6 +530,78 @@
     }
 
     @Test
+    fun getBoundingBox_rtl_multiLines() {
+        with(defaultDensity) {
+            val firstLine = "\u05D0\u05D1\u05D2"
+            val secondLine = "\u05D3\u05D4\u05D5"
+            val text = firstLine + secondLine
+            val fontSize = 50.sp
+            val fontSizeInPx = fontSize.toPx()
+            val paragraph = simpleParagraph(
+                text = text,
+                style = TextStyle(fontSize = fontSize),
+                width = firstLine.length * fontSizeInPx
+            )
+
+            // test positions are 3, 4, 5 and always on the second line
+            // which maps to chars 3, 4, 5
+            for (i in secondLine.indices) {
+                val textPosition = i + firstLine.length
+                val layoutPosition = secondLine.length - 1 - i
+                val box = paragraph.getBoundingBox(textPosition)
+                assertThat(box.left).isEqualTo(layoutPosition * fontSizeInPx)
+                assertThat(box.right).isEqualTo((layoutPosition + 1) * fontSizeInPx)
+                assertThat(box.top).isEqualTo(fontSizeInPx)
+                assertThat(box.bottom).isEqualTo(2f * fontSizeInPx)
+            }
+        }
+    }
+
+    @Test
+    fun getBoundingBox_ltr_multiLines_spaceAtTheEndOfLine() {
+        with(defaultDensity) {
+            val firstLine = "abc "
+            val secondLine = "def"
+            val text = firstLine + secondLine
+            val fontSize = 50.sp
+            val fontSizeInPx = fontSize.toPx()
+            val paragraph = simpleParagraph(
+                text = text,
+                style = TextStyle(fontSize = fontSize),
+                width = firstLine.length * fontSizeInPx
+            )
+
+            val box = paragraph.getBoundingBox(3)
+            assertThat(box.left).isEqualTo(3 * fontSizeInPx)
+            assertThat(box.right).isEqualTo(3 * fontSizeInPx)
+            assertThat(box.top).isEqualTo(0)
+            assertThat(box.bottom).isEqualTo(fontSizeInPx)
+        }
+    }
+
+    @Test
+    fun getBoundingBox_rtl_multiLines_spaceAtTheEndOfLine() {
+        with(defaultDensity) {
+            val firstLine = "\u05D0\u05D1\u05D2 "
+            val secondLine = "\u05D3\u05D4\u05D5"
+            val text = firstLine + secondLine
+            val fontSize = 50.sp
+            val fontSizeInPx = fontSize.toPx()
+            val paragraph = simpleParagraph(
+                text = text,
+                style = TextStyle(fontSize = fontSize),
+                width = firstLine.length * fontSizeInPx
+            )
+
+            val box = paragraph.getBoundingBox(3)
+            assertThat(box.left).isEqualTo(50)
+            assertThat(box.right).isEqualTo(50)
+            assertThat(box.top).isEqualTo(0)
+            assertThat(box.bottom).isEqualTo(fontSizeInPx)
+        }
+    }
+
+    @Test
     fun getBoundingBox_ltr_textPosition_negative() {
         with(defaultDensity) {
             val text = "abc"
diff --git a/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/platform/AndroidParagraph.android.kt b/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/platform/AndroidParagraph.android.kt
index 29121284..869b39e 100644
--- a/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/platform/AndroidParagraph.android.kt
+++ b/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/platform/AndroidParagraph.android.kt
@@ -264,16 +264,9 @@
      * Returns the bounding box as Rect of the character for given character offset. Rect includes
      * the top, bottom, left and right of a character.
      */
-    // TODO:(qqd) Implement RTL case.
     override fun getBoundingBox(offset: Int): Rect {
-        val left = layout.getPrimaryHorizontal(offset)
-        val right = layout.getPrimaryHorizontal(offset + 1)
-
-        val line = layout.getLineForOffset(offset)
-        val top = layout.getLineTop(line)
-        val bottom = layout.getLineBottom(line)
-
-        return Rect(top = top, bottom = bottom, left = left, right = right)
+        val rectF = layout.getBoundingBox(offset)
+        return with(rectF) { Rect(left = left, top = top, right = right, bottom = bottom) }
     }
 
     /**
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/semantics/SemanticsTests.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/semantics/SemanticsTests.kt
index 55e8f7e..e589743 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/semantics/SemanticsTests.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/semantics/SemanticsTests.kt
@@ -1089,6 +1089,41 @@
     }
 
     @Test
+    fun testChildrenSortedByBounds_sameOffset_differentSize() {
+        val child1 = "child1"
+        val child2 = "child2"
+        rule.setContent {
+            Box(
+                Modifier.testTag(TestTag)
+            ) {
+                SimpleTestLayout(
+                    Modifier
+                        .requiredSize(100.dp)
+                        .offset(x = 50.dp, y = 0.dp)
+                        .semantics { testTag = child1 }
+                ) {}
+                SimpleTestLayout(
+                    Modifier.requiredSize(50.dp)
+                    .offset(x = 50.dp, y = 0.dp)
+                    .semantics { testTag = child2 }
+                ) {}
+            }
+        }
+
+        // Size should not be a factor.  z-order or placement order should break the tie instead.
+        val root = rule.onNodeWithTag(TestTag).fetchSemanticsNode("can't find node $TestTag")
+        assertEquals(2, root.replacedChildrenSortedByBounds.size)
+        assertEquals(
+            child2,
+            root.replacedChildrenSortedByBounds[0].config.getOrNull(SemanticsProperties.TestTag)
+        )
+        assertEquals(
+            child1,
+            root.replacedChildrenSortedByBounds[1].config.getOrNull(SemanticsProperties.TestTag)
+        )
+    }
+
+    @Test
     fun testChildrenSortedByBounds_vertical_subcompose() {
         val child1 = "child1"
         val child2 = "child2"
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsSort.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsSort.kt
index 970b8b6..c8de532 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsSort.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsSort.kt
@@ -124,16 +124,6 @@
         if (topDifference != 0f) {
             return if (topDifference < 0) -1 else 1
         }
-        // Break tie by height.
-        val heightDifference = location.height - other.location.height
-        if (heightDifference != 0f) {
-            return if (heightDifference < 0) 1 else -1
-        }
-        // Break tie by width.
-        val widthDifference = location.width - other.location.width
-        if (widthDifference != 0f) {
-            return if (widthDifference < 0) 1 else -1
-        }
 
         // Find a child of each view with different screen bounds. If we get here, node and
         // other.node must be attached.
diff --git a/core/core-i18n/api/current.txt b/core/core-i18n/api/current.txt
index 77f4de9..39d3859 100644
--- a/core/core-i18n/api/current.txt
+++ b/core/core-i18n/api/current.txt
@@ -264,17 +264,16 @@
   }
 
   public final class MessageFormat {
-    ctor public MessageFormat();
-    method public static String formatNamedArgs(android.content.Context context, optional java.util.Locale locale, String msg, java.lang.Object?... nameValuePairs);
-    method public static String formatNamedArgs(android.content.Context context, String msg, java.lang.Object?... nameValuePairs);
-    method public static String formatNamedArgs(android.content.Context context, int id, java.lang.Object?... nameValuePairs);
+    method public static String format(android.content.Context context, optional java.util.Locale locale, String msg, java.util.Map<java.lang.String,?> namedArguments);
+    method public static String format(android.content.Context context, String msg, java.util.Map<java.lang.String,?> namedArguments);
+    method public static String format(android.content.Context context, int id, java.util.Map<java.lang.String,?> namedArguments);
     field public static final androidx.core.i18n.MessageFormat.Companion Companion;
   }
 
   public static final class MessageFormat.Companion {
-    method public String formatNamedArgs(android.content.Context context, optional java.util.Locale locale, String msg, java.lang.Object?... nameValuePairs);
-    method public String formatNamedArgs(android.content.Context context, String msg, java.lang.Object?... nameValuePairs);
-    method public String formatNamedArgs(android.content.Context context, int id, java.lang.Object?... nameValuePairs);
+    method public String format(android.content.Context context, optional java.util.Locale locale, String msg, java.util.Map<java.lang.String,?> namedArguments);
+    method public String format(android.content.Context context, String msg, java.util.Map<java.lang.String,?> namedArguments);
+    method public String format(android.content.Context context, int id, java.util.Map<java.lang.String,?> namedArguments);
   }
 
 }
diff --git a/core/core-i18n/api/public_plus_experimental_current.txt b/core/core-i18n/api/public_plus_experimental_current.txt
index 77f4de9..39d3859 100644
--- a/core/core-i18n/api/public_plus_experimental_current.txt
+++ b/core/core-i18n/api/public_plus_experimental_current.txt
@@ -264,17 +264,16 @@
   }
 
   public final class MessageFormat {
-    ctor public MessageFormat();
-    method public static String formatNamedArgs(android.content.Context context, optional java.util.Locale locale, String msg, java.lang.Object?... nameValuePairs);
-    method public static String formatNamedArgs(android.content.Context context, String msg, java.lang.Object?... nameValuePairs);
-    method public static String formatNamedArgs(android.content.Context context, int id, java.lang.Object?... nameValuePairs);
+    method public static String format(android.content.Context context, optional java.util.Locale locale, String msg, java.util.Map<java.lang.String,?> namedArguments);
+    method public static String format(android.content.Context context, String msg, java.util.Map<java.lang.String,?> namedArguments);
+    method public static String format(android.content.Context context, int id, java.util.Map<java.lang.String,?> namedArguments);
     field public static final androidx.core.i18n.MessageFormat.Companion Companion;
   }
 
   public static final class MessageFormat.Companion {
-    method public String formatNamedArgs(android.content.Context context, optional java.util.Locale locale, String msg, java.lang.Object?... nameValuePairs);
-    method public String formatNamedArgs(android.content.Context context, String msg, java.lang.Object?... nameValuePairs);
-    method public String formatNamedArgs(android.content.Context context, int id, java.lang.Object?... nameValuePairs);
+    method public String format(android.content.Context context, optional java.util.Locale locale, String msg, java.util.Map<java.lang.String,?> namedArguments);
+    method public String format(android.content.Context context, String msg, java.util.Map<java.lang.String,?> namedArguments);
+    method public String format(android.content.Context context, int id, java.util.Map<java.lang.String,?> namedArguments);
   }
 
 }
diff --git a/core/core-i18n/api/restricted_current.txt b/core/core-i18n/api/restricted_current.txt
index 77f4de9..39d3859 100644
--- a/core/core-i18n/api/restricted_current.txt
+++ b/core/core-i18n/api/restricted_current.txt
@@ -264,17 +264,16 @@
   }
 
   public final class MessageFormat {
-    ctor public MessageFormat();
-    method public static String formatNamedArgs(android.content.Context context, optional java.util.Locale locale, String msg, java.lang.Object?... nameValuePairs);
-    method public static String formatNamedArgs(android.content.Context context, String msg, java.lang.Object?... nameValuePairs);
-    method public static String formatNamedArgs(android.content.Context context, int id, java.lang.Object?... nameValuePairs);
+    method public static String format(android.content.Context context, optional java.util.Locale locale, String msg, java.util.Map<java.lang.String,?> namedArguments);
+    method public static String format(android.content.Context context, String msg, java.util.Map<java.lang.String,?> namedArguments);
+    method public static String format(android.content.Context context, int id, java.util.Map<java.lang.String,?> namedArguments);
     field public static final androidx.core.i18n.MessageFormat.Companion Companion;
   }
 
   public static final class MessageFormat.Companion {
-    method public String formatNamedArgs(android.content.Context context, optional java.util.Locale locale, String msg, java.lang.Object?... nameValuePairs);
-    method public String formatNamedArgs(android.content.Context context, String msg, java.lang.Object?... nameValuePairs);
-    method public String formatNamedArgs(android.content.Context context, int id, java.lang.Object?... nameValuePairs);
+    method public String format(android.content.Context context, optional java.util.Locale locale, String msg, java.util.Map<java.lang.String,?> namedArguments);
+    method public String format(android.content.Context context, String msg, java.util.Map<java.lang.String,?> namedArguments);
+    method public String format(android.content.Context context, int id, java.util.Map<java.lang.String,?> namedArguments);
   }
 
 }
diff --git a/core/core-i18n/build.gradle b/core/core-i18n/build.gradle
index c1639ea..43cd6c1 100644
--- a/core/core-i18n/build.gradle
+++ b/core/core-i18n/build.gradle
@@ -26,6 +26,7 @@
     api(libs.kotlinStdlib)
     // Add dependencies here
     api("androidx.annotation:annotation:1.2.0")
+    androidTestImplementation(libs.guavaAndroid)
     androidTestImplementation(libs.junit)
     androidTestImplementation(libs.kotlinTest)
     androidTestImplementation(libs.testExtJunit)
diff --git a/core/core-i18n/src/androidTest/java/androidx/core/i18n/MessageFormatBenchmarkTest.java b/core/core-i18n/src/androidTest/java/androidx/core/i18n/MessageFormatBenchmarkTest.java
index 1596873..54919f9 100644
--- a/core/core-i18n/src/androidTest/java/androidx/core/i18n/MessageFormatBenchmarkTest.java
+++ b/core/core-i18n/src/androidTest/java/androidx/core/i18n/MessageFormatBenchmarkTest.java
@@ -26,7 +26,9 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.util.HashMap;
 import java.util.Locale;
+import java.util.Map;
 
 @RunWith(AndroidJUnit4.class)
 public class MessageFormatBenchmarkTest {
@@ -36,6 +38,9 @@
     @Test @MediumTest
     public void testTimePlurals() throws Exception {
         final Locale sr = new Locale("sr");
+        final Map<String, Object> arguments = new HashMap<>();
+        arguments.put("name", "Peter");
+
         for (int i = 0; i < REPEAT_COUNT; ++i) {
             String msg = "{num,plural,offset:1" +
                 "  =1    {only {name}}" +
@@ -44,20 +49,24 @@
                 "  few   {{name} and #-few others}" +
                 "  other {{name} and #... others}" +
                 "}";
-            MessageFormat.formatNamedArgs(appContext, sr, msg, "num", i % 9, "name", "Peter");
+            arguments.put("num", i % 9);
+            MessageFormat.format(appContext, sr, msg, arguments);
         }
     }
 
     @Test @SmallTest
     public void testTimeGenders() throws Exception {
         final String [] genders = { "female", "male", "no_match" };
+        final Map<String, Object> arguments = new HashMap<>();
+
         for (int i = 0; i < REPEAT_COUNT; ++i) {
             String msg = "{gender,select," +
                 "  female {her book}" +
                 "  male   {his book}" +
                 "  other  {their book}" +
                 "}";
-            MessageFormat.formatNamedArgs(appContext, Locale.US, msg, "gender", genders[i % 3]);
+            arguments.put("gender", genders[i % 3]);
+            MessageFormat.format(appContext, Locale.US, msg, arguments);
         }
     }
 }
diff --git a/core/core-i18n/src/androidTest/java/androidx/core/i18n/MessageFormatDateTimeTest.java b/core/core-i18n/src/androidTest/java/androidx/core/i18n/MessageFormatDateTimeTest.java
index 00ecfc0..7a3e8bb 100644
--- a/core/core-i18n/src/androidTest/java/androidx/core/i18n/MessageFormatDateTimeTest.java
+++ b/core/core-i18n/src/androidTest/java/androidx/core/i18n/MessageFormatDateTimeTest.java
@@ -22,6 +22,8 @@
 import androidx.test.filters.SmallTest;
 import androidx.test.platform.app.InstrumentationRegistry;
 
+import com.google.common.collect.ImmutableMap;
+
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -45,44 +47,53 @@
 
     @Test @SmallTest
     public void testSimpleStyles() { // date formatting using JDK styles
-        String expected = "Your card expires on Tuesday, September 27, 2022.";
         String message = "Your card expires on {exp, date, FULL}.";
+        String expected = "Your card expires on Tuesday, September 27, 2022.";
 
         Assert.assertEquals(expected,
-                MessageFormat.formatNamedArgs(mAppContext, message, "exp", mTestDate));
+                MessageFormat.format(mAppContext, message,
+                        ImmutableMap.of("exp", mTestDate)));
         Assert.assertEquals(expected,
-                MessageFormat.formatNamedArgs(mAppContext, message, "exp", mTestMillis));
+                MessageFormat.format(mAppContext, message,
+                        ImmutableMap.of("exp", mTestMillis)));
         Assert.assertEquals(expected,
-                MessageFormat.formatNamedArgs(mAppContext, message, "exp", mTestCalendar));
+                MessageFormat.format(mAppContext, message,
+                        ImmutableMap.of("exp", mTestCalendar)));
     }
 
     @Test @SmallTest
     public void testSimpleSkeleton() { // date formatting using date-time skeletons
-        String expected = "Your card expires on Tue, Sep 27, 2022.";
         String message = "Your card expires on {exp, date, ::yMMMdE}.";
+        String expected = "Your card expires on Tue, Sep 27, 2022.";
 
         Assert.assertEquals(expected,
-                MessageFormat.formatNamedArgs(mAppContext, message, "exp", mTestDate));
+                MessageFormat.format(mAppContext, message,
+                        ImmutableMap.of("exp", mTestDate)));
         Assert.assertEquals(expected,
-                MessageFormat.formatNamedArgs(mAppContext, message, "exp", mTestMillis));
+                MessageFormat.format(mAppContext, message,
+                        ImmutableMap.of("exp", mTestMillis)));
         Assert.assertEquals(expected,
-                MessageFormat.formatNamedArgs(mAppContext, message, "exp", mTestCalendar));
+                MessageFormat.format(mAppContext, message,
+                        ImmutableMap.of("exp", mTestCalendar)));
     }
 
     @Test @SmallTest
     public void testSimplePattern() { // date formatting using date-time patterns. Bad i18n.
-        String expected = "Your card expires on Tuesday, 27 of September, 2022.";
         String message = "Your card expires on {exp, date,EEEE, d 'of' MMMM, y}.";
+        String expected = "Your card expires on Tuesday, 27 of September, 2022.";
 
         Assert.assertEquals(expected,
-                MessageFormat.formatNamedArgs(mAppContext, message, "exp", mTestDate));
+                MessageFormat.format(mAppContext, message,
+                        ImmutableMap.of("exp", mTestDate)));
         Assert.assertEquals(expected,
-                MessageFormat.formatNamedArgs(mAppContext, message, "exp", mTestMillis));
+                MessageFormat.format(mAppContext, message,
+                        ImmutableMap.of("exp", mTestMillis)));
 
         // This does not work, see testAndroidCannotFormatCalendar() below.
         try {
             Assert.assertEquals(expected,
-                    MessageFormat.formatNamedArgs(mAppContext, message, "exp", mTestCalendar));
+                    MessageFormat.format(mAppContext, message,
+                            ImmutableMap.of("exp", mTestCalendar)));
         } catch (IllegalArgumentException e) {
         }
     }
diff --git a/core/core-i18n/src/androidTest/java/androidx/core/i18n/SimpleMessageFormatTest.java b/core/core-i18n/src/androidTest/java/androidx/core/i18n/SimpleMessageFormatTest.java
index 7f8e753..558c399 100644
--- a/core/core-i18n/src/androidTest/java/androidx/core/i18n/SimpleMessageFormatTest.java
+++ b/core/core-i18n/src/androidTest/java/androidx/core/i18n/SimpleMessageFormatTest.java
@@ -21,11 +21,14 @@
 import androidx.test.filters.SmallTest;
 import androidx.test.platform.app.InstrumentationRegistry;
 
+import com.google.common.collect.ImmutableMap;
+
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import java.util.Locale;
+import java.util.Map;
 
 @RunWith(AndroidJUnit4.class)
 public class SimpleMessageFormatTest {
@@ -33,23 +36,27 @@
 
     @Test @SmallTest
     public void testBasic() {
-        Assert.assertEquals("one simple argument, no locale", "Going to Germany and back",
-                MessageFormat.formatNamedArgs(
-                        appContext, "Going to {place} and back", "place", "Germany"));
-        Assert.assertEquals("one simple argument", "Going to Germany and back",
-                MessageFormat.formatNamedArgs(
-                        appContext, Locale.US, "Going to {place} and back", "place", "Germany"));
+        final String message = "Going to {place} and back";
+        final String expected = "Going to Germany and back";
+        final Map<String, Object> arguments = ImmutableMap.of("place", "Germany");
+        Assert.assertEquals("one simple argument, no locale", expected,
+                MessageFormat.format(appContext, message, arguments));
+        Assert.assertEquals("one simple argument", expected,
+                MessageFormat.format(appContext, Locale.US, message, arguments));
     }
 
     @Test @SmallTest
     public void testSelect() {
-        String msg = "{gender,select,female{her book}male{his book}other{their book}}";
+        final String msg = "{gender,select,female{her book}male{his book}other{their book}}";
         Assert.assertEquals("select female", "her book",
-                MessageFormat.formatNamedArgs(appContext, Locale.US, msg, "gender", "female"));
+                MessageFormat.format(appContext, Locale.US, msg,
+                        ImmutableMap.of("gender", "female")));
         Assert.assertEquals("select male", "his book",
-                MessageFormat.formatNamedArgs(appContext, Locale.US, msg, "gender", "male"));
+                MessageFormat.format(appContext, Locale.US, msg,
+                        ImmutableMap.of("gender", "male")));
         Assert.assertEquals("select neutral", "their book",
-                MessageFormat.formatNamedArgs(appContext, Locale.US, msg, "gender", "unknown"));
+                MessageFormat.format(appContext, Locale.US, msg,
+                        ImmutableMap.of("gender", "unknown")));
     }
 
     @Test @SmallTest
@@ -65,15 +72,20 @@
                 "  other {{name} and #... others}" +
                 "}";
         Assert.assertEquals("plural 1", "only Peter",
-                MessageFormat.formatNamedArgs(appContext, sr, msg, "num", 1, "name", "Peter"));
+                MessageFormat.format(appContext, sr, msg,
+                        ImmutableMap.of("num", 1, "name", "Peter")));
         Assert.assertEquals("plural 2", "Paul and one other",
-                MessageFormat.formatNamedArgs(appContext, sr, msg, "num", 2, "name", "Paul"));
+                MessageFormat.format(appContext, sr, msg,
+                        ImmutableMap.of("num", 2, "name", "Paul")));
         Assert.assertEquals("plural 22", "Mary and 21-one others",
-                MessageFormat.formatNamedArgs(appContext, sr, msg, "num", 22, "name", "Mary"));
+                MessageFormat.format(appContext, sr, msg,
+                        ImmutableMap.of("num", 22, "name", "Mary")));
         Assert.assertEquals("plural 33", "John and 32-few others",
-                MessageFormat.formatNamedArgs(appContext, sr, msg, "num", 33, "name", "John"));
+                MessageFormat.format(appContext, sr, msg,
+                        ImmutableMap.of("num", 33, "name", "John")));
         Assert.assertEquals("plural 6", "Yoko and 5... others",
-                MessageFormat.formatNamedArgs(appContext, sr, msg, "num", 6, "name", "Yoko"));
+                MessageFormat.format(appContext, sr, msg,
+                        ImmutableMap.of("num", 6, "name", "Yoko")));
     }
 
     @Test @SmallTest
@@ -85,11 +97,14 @@
                 "  other  {{num,plural, =1 {their book} other {their # books}}}" +
                 "}";
         Assert.assertEquals("female 1", "her book",
-                MessageFormat.formatNamedArgs(appContext, ja, msg, "gender", "female", "num", 1));
+                MessageFormat.format(appContext, ja, msg,
+                        ImmutableMap.of("gender", "female", "num", 1)));
         Assert.assertEquals("male 2", "his 2 books",
-                MessageFormat.formatNamedArgs(appContext, ja, msg, "gender", "male", "num", 2));
+                MessageFormat.format(appContext, ja, msg,
+                        ImmutableMap.of("gender", "male", "num", 2)));
         Assert.assertEquals("unknown 3000", "their 3,000 books",
-                MessageFormat.formatNamedArgs(appContext, ja, msg, "gender", "?", "num", 3000));
+                MessageFormat.format(appContext, ja, msg,
+                        ImmutableMap.of("gender", "?", "num", 3000)));
     }
 
     @Test @SmallTest
@@ -105,19 +120,19 @@
                 "  other {#th place}" +
                 "}";
         Assert.assertEquals("1", "Gold medal",
-                MessageFormat.formatNamedArgs(appContext, en, msg, "num", 1));
+                MessageFormat.format(appContext, en, msg, ImmutableMap.of("num", 1)));
         Assert.assertEquals("2", "Silver medal",
-                MessageFormat.formatNamedArgs(appContext, en, msg, "num", 2));
+                MessageFormat.format(appContext, en, msg, ImmutableMap.of("num", 2)));
         Assert.assertEquals("3", "Bronze medal",
-                MessageFormat.formatNamedArgs(appContext, en, msg, "num", 3));
+                MessageFormat.format(appContext, en, msg, ImmutableMap.of("num", 3)));
         Assert.assertEquals("91", "91st place",
-                MessageFormat.formatNamedArgs(appContext, en, msg, "num", 91));
+                MessageFormat.format(appContext, en, msg, ImmutableMap.of("num", 91)));
         Assert.assertEquals("22", "22nd place",
-                MessageFormat.formatNamedArgs(appContext, en, msg, "num", 22));
+                MessageFormat.format(appContext, en, msg, ImmutableMap.of("num", 22)));
         Assert.assertEquals("33", "33rd place",
-                MessageFormat.formatNamedArgs(appContext, en, msg, "num", 33));
+                MessageFormat.format(appContext, en, msg, ImmutableMap.of("num", 33)));
         Assert.assertEquals("11", "11th place",
-                MessageFormat.formatNamedArgs(appContext, en, msg, "num", 11));
+                MessageFormat.format(appContext, en, msg, ImmutableMap.of("num", 11)));
     }
 
     @Test @SmallTest
@@ -130,12 +145,12 @@
                 "  other {#th floor}" +
                 "}";
         Assert.assertEquals("91", "91st floor",
-                MessageFormat.formatNamedArgs(appContext, msg, "num", 91));
+                MessageFormat.format(appContext, msg, ImmutableMap.of("num", 91)));
         Assert.assertEquals("22", "22nd floor",
-                MessageFormat.formatNamedArgs(appContext, msg, "num", 22));
+                MessageFormat.format(appContext, msg, ImmutableMap.of("num", 22)));
         Assert.assertEquals("33", "33rd floor",
-                MessageFormat.formatNamedArgs(appContext, msg, "num", 33));
+                MessageFormat.format(appContext, msg, ImmutableMap.of("num", 33)));
         Assert.assertEquals("11", "11th floor",
-                MessageFormat.formatNamedArgs(appContext, msg, "num", 11));
+                MessageFormat.format(appContext, msg, ImmutableMap.of("num", 11)));
     }
 }
diff --git a/core/core-i18n/src/main/java/androidx/core/i18n/MessageFormat.kt b/core/core-i18n/src/main/java/androidx/core/i18n/MessageFormat.kt
index cb33e84..28b1569 100644
--- a/core/core-i18n/src/main/java/androidx/core/i18n/MessageFormat.kt
+++ b/core/core-i18n/src/main/java/androidx/core/i18n/MessageFormat.kt
@@ -19,7 +19,7 @@
 import androidx.core.i18n.messageformat_icu.simple.MessageFormat
 import java.util.Locale
 
-class MessageFormat {
+class MessageFormat private constructor() {
     companion object {
         /**
          * Formats a message pattern string with a variable number of name/value pair arguments.
@@ -29,16 +29,18 @@
          * @param context Android context object. Used to retrieve user preferences.
          * @param locale Locale for number formatting and plural selection etc.
          * @param msg an ICU-MessageFormat-syntax string
-         * @param nameValuePairs (argument name, argument value) pairs
+         * @param namedArguments map of argument name to argument value
          */
         @JvmStatic @JvmOverloads
-        fun formatNamedArgs(
+        fun format(
             context: Context,
             locale: Locale = Locale.getDefault(),
             msg: String,
-            vararg nameValuePairs: Any?
+            namedArguments: Map<String, Any>
         ): String {
-            return MessageFormat.formatNamedArgs(context, locale, msg, *nameValuePairs)
+            val result: StringBuffer = StringBuffer()
+            return MessageFormat(context, msg, locale)
+                .format(namedArguments, result, null).toString()
         }
 
         /**
@@ -49,14 +51,14 @@
          *
          * @param context Android context object
          * @param id Android string resource ID representing ICU-MessageFormat-syntax string
-         * @param nameValuePairs (argument name, argument value) pairs
+         * @param namedArguments map of argument name to argument value
          */
         @JvmStatic
-        fun formatNamedArgs(context: Context, id: Int, vararg nameValuePairs: Any?): String {
-            return formatNamedArgs(
+        fun format(context: Context, id: Int, namedArguments: Map<String, Any>): String {
+            return format(
                 context,
                 Locale.getDefault(),
-                context.resources.getString(id), *nameValuePairs
+                context.resources.getString(id), namedArguments
             )
         }
     }
diff --git a/core/core-i18n/src/main/java/androidx/core/i18n/messageformat_icu/simple/MessageFormat.java b/core/core-i18n/src/main/java/androidx/core/i18n/messageformat_icu/simple/MessageFormat.java
index ed3de9a..1a3fd472 100644
--- a/core/core-i18n/src/main/java/androidx/core/i18n/messageformat_icu/simple/MessageFormat.java
+++ b/core/core-i18n/src/main/java/androidx/core/i18n/messageformat_icu/simple/MessageFormat.java
@@ -12,6 +12,18 @@
 
 import android.content.Context;
 
+import androidx.annotation.RestrictTo;
+import androidx.core.i18n.DateTimeFormatter;
+import androidx.core.i18n.DateTimeFormatterJdkStyleOptions;
+import androidx.core.i18n.DateTimeFormatterSkeletonOptions;
+import androidx.core.i18n.messageformat_icu.impl.PatternProps;
+import androidx.core.i18n.messageformat_icu.simple.PluralRules.PluralType;
+import androidx.core.i18n.messageformat_icu.text.MessagePattern;
+import androidx.core.i18n.messageformat_icu.text.MessagePattern.ArgType;
+import androidx.core.i18n.messageformat_icu.text.MessagePattern.Part;
+import androidx.core.i18n.messageformat_icu.text.SelectFormat;
+import androidx.core.i18n.messageformat_icu.util.ICUUncheckedIOException;
+
 import java.io.IOException;
 import java.io.InvalidObjectException;
 import java.text.AttributedCharacterIterator;
@@ -37,18 +49,6 @@
 import java.util.Map;
 import java.util.Set;
 
-import androidx.annotation.RestrictTo;
-import androidx.core.i18n.DateTimeFormatter;
-import androidx.core.i18n.DateTimeFormatterJdkStyleOptions;
-import androidx.core.i18n.DateTimeFormatterSkeletonOptions;
-import androidx.core.i18n.messageformat_icu.impl.PatternProps;
-import androidx.core.i18n.messageformat_icu.simple.PluralRules.PluralType;
-import androidx.core.i18n.messageformat_icu.text.MessagePattern;
-import androidx.core.i18n.messageformat_icu.text.MessagePattern.ArgType;
-import androidx.core.i18n.messageformat_icu.text.MessagePattern.Part;
-import androidx.core.i18n.messageformat_icu.text.SelectFormat;
-import androidx.core.i18n.messageformat_icu.util.ICUUncheckedIOException;
-
 /**
  * {icu_annot::icuenhanced java.text.MessageFormat}.{icu_annot::icu _usage_}
  *
@@ -372,23 +372,6 @@
     static final long serialVersionUID = 7136212545847378652L;
 
     /**
-     * Formats a message pattern string with a variable number of name/value pair arguments.
-     * Creates an ICU MessageFormat for the locale and pattern,
-     * and formats with the arguments.
-     *
-     * @param locale Locale for number formatting and plural selection etc.
-     * @param msg an ICU-MessageFormat-syntax string
-     * @param nameValuePairs (argument name, argument value) pairs
-     */
-    public static final String formatNamedArgs(Context context, Locale locale,
-                                               String msg, Object... nameValuePairs) {
-        StringBuilder result = new StringBuilder(msg.length());
-        new MessageFormat(context, msg, locale).format(0, null, null, null, nameValuePairs,
-                new AppendableWrapper(result), null);
-        return result.toString();
-    }
-
-    /**
      * Constructs a MessageFormat for the default <code>FORMAT</code> locale and the
      * specified pattern.
      * Sets the locale and calls applyPattern(pattern).
diff --git a/core/core-ktx/api/1.9.0-beta01.txt b/core/core-ktx/api/1.9.0-beta01.txt
new file mode 100644
index 0000000..168a9c1
--- /dev/null
+++ b/core/core-ktx/api/1.9.0-beta01.txt
@@ -0,0 +1,630 @@
+// Signature format: 4.0
+package androidx.core.animation {
+
+  public final class AnimatorKt {
+    method public static inline android.animation.Animator.AnimatorListener addListener(android.animation.Animator, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onEnd, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onStart, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onCancel, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onRepeat);
+    method @RequiresApi(19) public static android.animation.Animator.AnimatorPauseListener addPauseListener(android.animation.Animator, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onResume, optional 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 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 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, optional android.util.AttributeSet? set, int[] attrs, optional @AttrRes int defStyleAttr, optional @StyleRes int defStyleRes, 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, optional boolean commit, 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, optional boolean exclusive, 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, optional android.graphics.Bitmap.Config config);
+    method @RequiresApi(26) public static inline android.graphics.Bitmap createBitmap(int width, int height, optional android.graphics.Bitmap.Config config, optional boolean hasAlpha, optional android.graphics.ColorSpace colorSpace);
+    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, optional boolean filter);
+    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, optional android.graphics.Matrix matrix, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+    method public static inline void withRotation(android.graphics.Canvas, optional float degrees, optional float pivotX, optional float pivotY, 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, optional float x, optional float y, optional float pivotX, optional float pivotY, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+    method public static inline void withSkew(android.graphics.Canvas, optional float x, optional float y, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+    method public static inline void withTranslation(android.graphics.Canvas, optional float x, optional float y, 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, optional float px, optional float py);
+    method public static android.graphics.Matrix scaleMatrix(optional float sx, optional float sy);
+    method public static inline operator android.graphics.Matrix times(android.graphics.Matrix, android.graphics.Matrix m);
+    method public static android.graphics.Matrix translationMatrix(optional float tx, optional float ty);
+    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, optional float error);
+    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, optional @Px int width, optional @Px int height, optional android.graphics.Bitmap.Config? config);
+    method public static android.graphics.Bitmap? toBitmapOrNull(android.graphics.drawable.Drawable, optional @Px int width, optional @Px int height, optional android.graphics.Bitmap.Config? config);
+    method public static void updateBounds(android.graphics.drawable.Drawable, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int 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);
+    method public static android.os.Bundle bundleOf();
+  }
+
+  public final class HandlerKt {
+    method public static inline Runnable postAtTime(android.os.Handler, long uptimeMillis, optional Object? token, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+    method public static inline Runnable postDelayed(android.os.Handler, long delayInMillis, optional Object? token, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+  }
+
+  @RequiresApi(31) public final class OutcomeReceiverKt {
+    method @RequiresApi(31) public static <R, E extends java.lang.Throwable> android.os.OutcomeReceiver<R,E> asOutcomeReceiver(kotlin.coroutines.Continuation<? super R>);
+  }
+
+  public final class PersistableBundleKt {
+    method @RequiresApi(21) public static android.os.PersistableBundle persistableBundleOf(kotlin.Pair<java.lang.String,?>... pairs);
+    method @RequiresApi(21) public static android.os.PersistableBundle persistableBundleOf();
+    method @RequiresApi(21) public static android.os.PersistableBundle toPersistableBundle(java.util.Map<java.lang.String,?>);
+  }
+
+  public final class TraceKt {
+    method @Deprecated 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, optional int flags, optional android.text.Html.ImageGetter? imageGetter, optional android.text.Html.TagHandler? tagHandler);
+    method public static inline String toHtml(android.text.Spanned, optional int option);
+  }
+
+  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, optional int start, optional int end);
+    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, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onEnd, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onStart, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onCancel, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onResume, optional 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 AndroidXConsumerKt {
+    method public static <T> androidx.core.util.Consumer<T> asAndroidXConsumer(kotlin.coroutines.Continuation<? super T>);
+  }
+
+  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, optional java.nio.charset.Charset charset);
+    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, optional java.nio.charset.Charset charset);
+  }
+
+  @RequiresApi(24) public final class ConsumerKt {
+    method @RequiresApi(24) public static <T> java.util.function.Consumer<T> asConsumer(kotlin.coroutines.Continuation<? super T>);
+  }
+
+  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, optional kotlin.jvm.functions.Function2<? super K,? super V,java.lang.Integer> sizeOf, optional kotlin.jvm.functions.Function1<? super K,? extends V> create, optional 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(androidx.core.util.Pair<F,S>);
+    method public static inline operator <F, S> F! component1(android.util.Pair<F,S>);
+    method public static inline operator <F, S> S! component2(androidx.core.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> androidx.core.util.Pair<F,S> toAndroidXPair(kotlin.Pair<? extends F,? extends S>);
+    method public static inline <F, S> kotlin.Pair<F,S> toKotlinPair(androidx.core.util.Pair<F,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 RunnableKt {
+    method public static Runnable asRunnable(kotlin.coroutines.Continuation<? super kotlin.Unit>);
+  }
+
+  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 public static inline operator float component1(androidx.core.util.SizeFCompat);
+    method @RequiresApi(21) public static inline operator int component2(android.util.Size);
+    method @RequiresApi(21) public static inline operator float component2(android.util.SizeF);
+    method public static inline operator float component2(androidx.core.util.SizeFCompat);
+  }
+
+  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);
+    method public static inline void removeItemAt(android.view.Menu, int index);
+  }
+
+  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 kotlin.sequences.Sequence<android.view.View> getDescendants(android.view.ViewGroup);
+    method public static inline kotlin.ranges.IntRange getIndices(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, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
+    method @RequiresApi(17) public static inline void updateMarginsRelative(android.view.ViewGroup.MarginLayoutParams, optional @Px int start, optional @Px int top, optional @Px int end, optional @Px int bottom);
+  }
+
+  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, optional android.graphics.Bitmap.Config config);
+    method public static kotlin.sequences.Sequence<android.view.View> getAllViews(android.view.View);
+    method public static kotlin.sequences.Sequence<android.view.ViewParent> getAncestors(android.view.View);
+    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 Runnable postOnAnimationDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+    method public static inline void setGone(android.view.View, boolean);
+    method public static inline void setInvisible(android.view.View, boolean);
+    method public static inline void setPadding(android.view.View, @Px int size);
+    method public static inline void setVisible(android.view.View, boolean);
+    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 updateLayoutParams(android.view.View, kotlin.jvm.functions.Function1<? super T,? extends kotlin.Unit> block);
+    method public static inline void updatePadding(android.view.View, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
+    method @RequiresApi(17) public static inline void updatePaddingRelative(android.view.View, optional @Px int start, optional @Px int top, optional @Px int end, optional @Px int bottom);
+  }
+
+}
+
+package androidx.core.widget {
+
+  public final class TextViewKt {
+    method public static inline android.text.TextWatcher addTextChangedListener(android.widget.TextView, optional kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> beforeTextChanged, optional kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> onTextChanged, optional 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.9.0-beta01.txt b/core/core-ktx/api/public_plus_experimental_1.9.0-beta01.txt
new file mode 100644
index 0000000..168a9c1
--- /dev/null
+++ b/core/core-ktx/api/public_plus_experimental_1.9.0-beta01.txt
@@ -0,0 +1,630 @@
+// Signature format: 4.0
+package androidx.core.animation {
+
+  public final class AnimatorKt {
+    method public static inline android.animation.Animator.AnimatorListener addListener(android.animation.Animator, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onEnd, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onStart, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onCancel, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onRepeat);
+    method @RequiresApi(19) public static android.animation.Animator.AnimatorPauseListener addPauseListener(android.animation.Animator, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onResume, optional 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 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 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, optional android.util.AttributeSet? set, int[] attrs, optional @AttrRes int defStyleAttr, optional @StyleRes int defStyleRes, 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, optional boolean commit, 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, optional boolean exclusive, 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, optional android.graphics.Bitmap.Config config);
+    method @RequiresApi(26) public static inline android.graphics.Bitmap createBitmap(int width, int height, optional android.graphics.Bitmap.Config config, optional boolean hasAlpha, optional android.graphics.ColorSpace colorSpace);
+    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, optional boolean filter);
+    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, optional android.graphics.Matrix matrix, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+    method public static inline void withRotation(android.graphics.Canvas, optional float degrees, optional float pivotX, optional float pivotY, 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, optional float x, optional float y, optional float pivotX, optional float pivotY, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+    method public static inline void withSkew(android.graphics.Canvas, optional float x, optional float y, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+    method public static inline void withTranslation(android.graphics.Canvas, optional float x, optional float y, 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, optional float px, optional float py);
+    method public static android.graphics.Matrix scaleMatrix(optional float sx, optional float sy);
+    method public static inline operator android.graphics.Matrix times(android.graphics.Matrix, android.graphics.Matrix m);
+    method public static android.graphics.Matrix translationMatrix(optional float tx, optional float ty);
+    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, optional float error);
+    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, optional @Px int width, optional @Px int height, optional android.graphics.Bitmap.Config? config);
+    method public static android.graphics.Bitmap? toBitmapOrNull(android.graphics.drawable.Drawable, optional @Px int width, optional @Px int height, optional android.graphics.Bitmap.Config? config);
+    method public static void updateBounds(android.graphics.drawable.Drawable, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int 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);
+    method public static android.os.Bundle bundleOf();
+  }
+
+  public final class HandlerKt {
+    method public static inline Runnable postAtTime(android.os.Handler, long uptimeMillis, optional Object? token, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+    method public static inline Runnable postDelayed(android.os.Handler, long delayInMillis, optional Object? token, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+  }
+
+  @RequiresApi(31) public final class OutcomeReceiverKt {
+    method @RequiresApi(31) public static <R, E extends java.lang.Throwable> android.os.OutcomeReceiver<R,E> asOutcomeReceiver(kotlin.coroutines.Continuation<? super R>);
+  }
+
+  public final class PersistableBundleKt {
+    method @RequiresApi(21) public static android.os.PersistableBundle persistableBundleOf(kotlin.Pair<java.lang.String,?>... pairs);
+    method @RequiresApi(21) public static android.os.PersistableBundle persistableBundleOf();
+    method @RequiresApi(21) public static android.os.PersistableBundle toPersistableBundle(java.util.Map<java.lang.String,?>);
+  }
+
+  public final class TraceKt {
+    method @Deprecated 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, optional int flags, optional android.text.Html.ImageGetter? imageGetter, optional android.text.Html.TagHandler? tagHandler);
+    method public static inline String toHtml(android.text.Spanned, optional int option);
+  }
+
+  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, optional int start, optional int end);
+    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, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onEnd, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onStart, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onCancel, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onResume, optional 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 AndroidXConsumerKt {
+    method public static <T> androidx.core.util.Consumer<T> asAndroidXConsumer(kotlin.coroutines.Continuation<? super T>);
+  }
+
+  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, optional java.nio.charset.Charset charset);
+    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, optional java.nio.charset.Charset charset);
+  }
+
+  @RequiresApi(24) public final class ConsumerKt {
+    method @RequiresApi(24) public static <T> java.util.function.Consumer<T> asConsumer(kotlin.coroutines.Continuation<? super T>);
+  }
+
+  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, optional kotlin.jvm.functions.Function2<? super K,? super V,java.lang.Integer> sizeOf, optional kotlin.jvm.functions.Function1<? super K,? extends V> create, optional 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(androidx.core.util.Pair<F,S>);
+    method public static inline operator <F, S> F! component1(android.util.Pair<F,S>);
+    method public static inline operator <F, S> S! component2(androidx.core.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> androidx.core.util.Pair<F,S> toAndroidXPair(kotlin.Pair<? extends F,? extends S>);
+    method public static inline <F, S> kotlin.Pair<F,S> toKotlinPair(androidx.core.util.Pair<F,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 RunnableKt {
+    method public static Runnable asRunnable(kotlin.coroutines.Continuation<? super kotlin.Unit>);
+  }
+
+  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 public static inline operator float component1(androidx.core.util.SizeFCompat);
+    method @RequiresApi(21) public static inline operator int component2(android.util.Size);
+    method @RequiresApi(21) public static inline operator float component2(android.util.SizeF);
+    method public static inline operator float component2(androidx.core.util.SizeFCompat);
+  }
+
+  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);
+    method public static inline void removeItemAt(android.view.Menu, int index);
+  }
+
+  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 kotlin.sequences.Sequence<android.view.View> getDescendants(android.view.ViewGroup);
+    method public static inline kotlin.ranges.IntRange getIndices(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, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
+    method @RequiresApi(17) public static inline void updateMarginsRelative(android.view.ViewGroup.MarginLayoutParams, optional @Px int start, optional @Px int top, optional @Px int end, optional @Px int bottom);
+  }
+
+  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, optional android.graphics.Bitmap.Config config);
+    method public static kotlin.sequences.Sequence<android.view.View> getAllViews(android.view.View);
+    method public static kotlin.sequences.Sequence<android.view.ViewParent> getAncestors(android.view.View);
+    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 Runnable postOnAnimationDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+    method public static inline void setGone(android.view.View, boolean);
+    method public static inline void setInvisible(android.view.View, boolean);
+    method public static inline void setPadding(android.view.View, @Px int size);
+    method public static inline void setVisible(android.view.View, boolean);
+    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 updateLayoutParams(android.view.View, kotlin.jvm.functions.Function1<? super T,? extends kotlin.Unit> block);
+    method public static inline void updatePadding(android.view.View, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
+    method @RequiresApi(17) public static inline void updatePaddingRelative(android.view.View, optional @Px int start, optional @Px int top, optional @Px int end, optional @Px int bottom);
+  }
+
+}
+
+package androidx.core.widget {
+
+  public final class TextViewKt {
+    method public static inline android.text.TextWatcher addTextChangedListener(android.widget.TextView, optional kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> beforeTextChanged, optional kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> onTextChanged, optional 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.9.0-beta01.txt b/core/core-ktx/api/res-1.9.0-beta01.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/core/core-ktx/api/res-1.9.0-beta01.txt
diff --git a/core/core-ktx/api/restricted_1.9.0-beta01.txt b/core/core-ktx/api/restricted_1.9.0-beta01.txt
new file mode 100644
index 0000000..168a9c1
--- /dev/null
+++ b/core/core-ktx/api/restricted_1.9.0-beta01.txt
@@ -0,0 +1,630 @@
+// Signature format: 4.0
+package androidx.core.animation {
+
+  public final class AnimatorKt {
+    method public static inline android.animation.Animator.AnimatorListener addListener(android.animation.Animator, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onEnd, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onStart, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onCancel, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onRepeat);
+    method @RequiresApi(19) public static android.animation.Animator.AnimatorPauseListener addPauseListener(android.animation.Animator, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onResume, optional 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 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 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, optional android.util.AttributeSet? set, int[] attrs, optional @AttrRes int defStyleAttr, optional @StyleRes int defStyleRes, 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, optional boolean commit, 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, optional boolean exclusive, 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, optional android.graphics.Bitmap.Config config);
+    method @RequiresApi(26) public static inline android.graphics.Bitmap createBitmap(int width, int height, optional android.graphics.Bitmap.Config config, optional boolean hasAlpha, optional android.graphics.ColorSpace colorSpace);
+    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, optional boolean filter);
+    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, optional android.graphics.Matrix matrix, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+    method public static inline void withRotation(android.graphics.Canvas, optional float degrees, optional float pivotX, optional float pivotY, 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, optional float x, optional float y, optional float pivotX, optional float pivotY, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+    method public static inline void withSkew(android.graphics.Canvas, optional float x, optional float y, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+    method public static inline void withTranslation(android.graphics.Canvas, optional float x, optional float y, 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, optional float px, optional float py);
+    method public static android.graphics.Matrix scaleMatrix(optional float sx, optional float sy);
+    method public static inline operator android.graphics.Matrix times(android.graphics.Matrix, android.graphics.Matrix m);
+    method public static android.graphics.Matrix translationMatrix(optional float tx, optional float ty);
+    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, optional float error);
+    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, optional @Px int width, optional @Px int height, optional android.graphics.Bitmap.Config? config);
+    method public static android.graphics.Bitmap? toBitmapOrNull(android.graphics.drawable.Drawable, optional @Px int width, optional @Px int height, optional android.graphics.Bitmap.Config? config);
+    method public static void updateBounds(android.graphics.drawable.Drawable, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int 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);
+    method public static android.os.Bundle bundleOf();
+  }
+
+  public final class HandlerKt {
+    method public static inline Runnable postAtTime(android.os.Handler, long uptimeMillis, optional Object? token, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+    method public static inline Runnable postDelayed(android.os.Handler, long delayInMillis, optional Object? token, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+  }
+
+  @RequiresApi(31) public final class OutcomeReceiverKt {
+    method @RequiresApi(31) public static <R, E extends java.lang.Throwable> android.os.OutcomeReceiver<R,E> asOutcomeReceiver(kotlin.coroutines.Continuation<? super R>);
+  }
+
+  public final class PersistableBundleKt {
+    method @RequiresApi(21) public static android.os.PersistableBundle persistableBundleOf(kotlin.Pair<java.lang.String,?>... pairs);
+    method @RequiresApi(21) public static android.os.PersistableBundle persistableBundleOf();
+    method @RequiresApi(21) public static android.os.PersistableBundle toPersistableBundle(java.util.Map<java.lang.String,?>);
+  }
+
+  public final class TraceKt {
+    method @Deprecated 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, optional int flags, optional android.text.Html.ImageGetter? imageGetter, optional android.text.Html.TagHandler? tagHandler);
+    method public static inline String toHtml(android.text.Spanned, optional int option);
+  }
+
+  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, optional int start, optional int end);
+    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, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onEnd, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onStart, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onCancel, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onResume, optional 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 AndroidXConsumerKt {
+    method public static <T> androidx.core.util.Consumer<T> asAndroidXConsumer(kotlin.coroutines.Continuation<? super T>);
+  }
+
+  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, optional java.nio.charset.Charset charset);
+    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, optional java.nio.charset.Charset charset);
+  }
+
+  @RequiresApi(24) public final class ConsumerKt {
+    method @RequiresApi(24) public static <T> java.util.function.Consumer<T> asConsumer(kotlin.coroutines.Continuation<? super T>);
+  }
+
+  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, optional kotlin.jvm.functions.Function2<? super K,? super V,java.lang.Integer> sizeOf, optional kotlin.jvm.functions.Function1<? super K,? extends V> create, optional 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(androidx.core.util.Pair<F,S>);
+    method public static inline operator <F, S> F! component1(android.util.Pair<F,S>);
+    method public static inline operator <F, S> S! component2(androidx.core.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> androidx.core.util.Pair<F,S> toAndroidXPair(kotlin.Pair<? extends F,? extends S>);
+    method public static inline <F, S> kotlin.Pair<F,S> toKotlinPair(androidx.core.util.Pair<F,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 RunnableKt {
+    method public static Runnable asRunnable(kotlin.coroutines.Continuation<? super kotlin.Unit>);
+  }
+
+  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 public static inline operator float component1(androidx.core.util.SizeFCompat);
+    method @RequiresApi(21) public static inline operator int component2(android.util.Size);
+    method @RequiresApi(21) public static inline operator float component2(android.util.SizeF);
+    method public static inline operator float component2(androidx.core.util.SizeFCompat);
+  }
+
+  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);
+    method public static inline void removeItemAt(android.view.Menu, int index);
+  }
+
+  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 kotlin.sequences.Sequence<android.view.View> getDescendants(android.view.ViewGroup);
+    method public static inline kotlin.ranges.IntRange getIndices(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, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
+    method @RequiresApi(17) public static inline void updateMarginsRelative(android.view.ViewGroup.MarginLayoutParams, optional @Px int start, optional @Px int top, optional @Px int end, optional @Px int bottom);
+  }
+
+  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, optional android.graphics.Bitmap.Config config);
+    method public static kotlin.sequences.Sequence<android.view.View> getAllViews(android.view.View);
+    method public static kotlin.sequences.Sequence<android.view.ViewParent> getAncestors(android.view.View);
+    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 Runnable postOnAnimationDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+    method public static inline void setGone(android.view.View, boolean);
+    method public static inline void setInvisible(android.view.View, boolean);
+    method public static inline void setPadding(android.view.View, @Px int size);
+    method public static inline void setVisible(android.view.View, boolean);
+    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 updateLayoutParams(android.view.View, kotlin.jvm.functions.Function1<? super T,? extends kotlin.Unit> block);
+    method public static inline void updatePadding(android.view.View, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
+    method @RequiresApi(17) public static inline void updatePaddingRelative(android.view.View, optional @Px int start, optional @Px int top, optional @Px int end, optional @Px int bottom);
+  }
+
+}
+
+package androidx.core.widget {
+
+  public final class TextViewKt {
+    method public static inline android.text.TextWatcher addTextChangedListener(android.widget.TextView, optional kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> beforeTextChanged, optional kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> onTextChanged, optional 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/api/1.9.0-beta01.txt b/core/core/api/1.9.0-beta01.txt
new file mode 100644
index 0000000..4919591
--- /dev/null
+++ b/core/core/api/1.9.0-beta01.txt
@@ -0,0 +1,3868 @@
+// Signature format: 4.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 boolean isLaunchedFromBubble(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 setLocusContext(android.app.Activity, androidx.core.content.LocusIdCompat?, android.os.Bundle?);
+    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 checkOrNoteProxyOp(android.content.Context, int, String, String);
+    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
+  }
+
+  @Deprecated public abstract class JobIntentService extends android.app.Service {
+    ctor @Deprecated public JobIntentService();
+    method @Deprecated public static void enqueueWork(android.content.Context, Class<?>, int, android.content.Intent);
+    method @Deprecated public static void enqueueWork(android.content.Context, android.content.ComponentName, int, android.content.Intent);
+    method @Deprecated public boolean isStopped();
+    method @Deprecated public android.os.IBinder! onBind(android.content.Intent);
+    method @Deprecated protected abstract void onHandleWork(android.content.Intent);
+    method @Deprecated public boolean onStopCurrentWork();
+    method @Deprecated public void setInterruptIfStopped(boolean);
+  }
+
+  public final class LocaleManagerCompat {
+    method @AnyThread public static androidx.core.os.LocaleListCompat getSystemLocales(android.content.Context);
+  }
+
+  public final class MultiWindowModeChangedInfo {
+    ctor public MultiWindowModeChangedInfo(boolean);
+    ctor @RequiresApi(26) public MultiWindowModeChangedInfo(boolean, android.content.res.Configuration);
+    method @RequiresApi(26) public android.content.res.Configuration getNewConfig();
+    method public boolean isInMultiWindowMode();
+  }
+
+  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 NotificationChannelCompat {
+    method public boolean canBubble();
+    method public boolean canBypassDnd();
+    method public boolean canShowBadge();
+    method public android.media.AudioAttributes? getAudioAttributes();
+    method public String? getConversationId();
+    method public String? getDescription();
+    method public String? getGroup();
+    method public String getId();
+    method public int getImportance();
+    method public int getLightColor();
+    method public int getLockscreenVisibility();
+    method public CharSequence? getName();
+    method public String? getParentChannelId();
+    method public android.net.Uri? getSound();
+    method public long[]? getVibrationPattern();
+    method public boolean isImportantConversation();
+    method public boolean shouldShowLights();
+    method public boolean shouldVibrate();
+    method public androidx.core.app.NotificationChannelCompat.Builder toBuilder();
+    field public static final String DEFAULT_CHANNEL_ID = "miscellaneous";
+  }
+
+  public static class NotificationChannelCompat.Builder {
+    ctor public NotificationChannelCompat.Builder(String, int);
+    method public androidx.core.app.NotificationChannelCompat build();
+    method public androidx.core.app.NotificationChannelCompat.Builder setConversationId(String, String);
+    method public androidx.core.app.NotificationChannelCompat.Builder setDescription(String?);
+    method public androidx.core.app.NotificationChannelCompat.Builder setGroup(String?);
+    method public androidx.core.app.NotificationChannelCompat.Builder setImportance(int);
+    method public androidx.core.app.NotificationChannelCompat.Builder setLightColor(int);
+    method public androidx.core.app.NotificationChannelCompat.Builder setLightsEnabled(boolean);
+    method public androidx.core.app.NotificationChannelCompat.Builder setName(CharSequence?);
+    method public androidx.core.app.NotificationChannelCompat.Builder setShowBadge(boolean);
+    method public androidx.core.app.NotificationChannelCompat.Builder setSound(android.net.Uri?, android.media.AudioAttributes?);
+    method public androidx.core.app.NotificationChannelCompat.Builder setVibrationEnabled(boolean);
+    method public androidx.core.app.NotificationChannelCompat.Builder setVibrationPattern(long[]?);
+  }
+
+  public class NotificationChannelGroupCompat {
+    method public java.util.List<androidx.core.app.NotificationChannelCompat!> getChannels();
+    method public String? getDescription();
+    method public String getId();
+    method public CharSequence? getName();
+    method public boolean isBlocked();
+    method public androidx.core.app.NotificationChannelGroupCompat.Builder toBuilder();
+  }
+
+  public static class NotificationChannelGroupCompat.Builder {
+    ctor public NotificationChannelGroupCompat.Builder(String);
+    method public androidx.core.app.NotificationChannelGroupCompat build();
+    method public androidx.core.app.NotificationChannelGroupCompat.Builder setDescription(String?);
+    method public androidx.core.app.NotificationChannelGroupCompat.Builder setName(CharSequence?);
+  }
+
+  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 boolean getAutoCancel(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 public static int getColor(android.app.Notification);
+    method @RequiresApi(19) public static CharSequence? getContentInfo(android.app.Notification);
+    method @RequiresApi(19) public static CharSequence? getContentText(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 androidx.core.content.LocusIdCompat? getLocusId(android.app.Notification);
+    method public static boolean getOngoing(android.app.Notification);
+    method public static boolean getOnlyAlertOnce(android.app.Notification);
+    method public static java.util.List<androidx.core.app.Person!> getPeople(android.app.Notification);
+    method public static android.app.Notification? getPublicVersion(android.app.Notification);
+    method public static CharSequence? getSettingsText(android.app.Notification);
+    method public static String? getShortcutId(android.app.Notification);
+    method @RequiresApi(19) public static boolean getShowWhen(android.app.Notification);
+    method public static String? getSortKey(android.app.Notification);
+    method @RequiresApi(19) public static CharSequence? getSubText(android.app.Notification);
+    method public static long getTimeoutAfter(android.app.Notification);
+    method @RequiresApi(19) public static boolean getUsesChronometer(android.app.Notification);
+    method public static int getVisibility(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_LOCATION_SHARING = "location_sharing";
+    field public static final String CATEGORY_MESSAGE = "msg";
+    field public static final String CATEGORY_MISSED_CALL = "missed_call";
+    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_STOPWATCH = "stopwatch";
+    field public static final String CATEGORY_SYSTEM = "sys";
+    field public static final String CATEGORY_TRANSPORT = "transport";
+    field public static final String CATEGORY_WORKOUT = "workout";
+    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_CHANNEL_GROUP_ID = "android.intent.extra.CHANNEL_GROUP_ID";
+    field public static final String EXTRA_CHANNEL_ID = "android.intent.extra.CHANNEL_ID";
+    field public static final String EXTRA_CHRONOMETER_COUNT_DOWN = "android.chronometerCountDown";
+    field public static final String EXTRA_COLORIZED = "android.colorized";
+    field public static final String EXTRA_COMPACT_ACTIONS = "android.compactActions";
+    field public static final String EXTRA_COMPAT_TEMPLATE = "androidx.core.app.extra.COMPAT_TEMPLATE";
+    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_HISTORIC_MESSAGES = "android.messages.historic";
+    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_NOTIFICATION_ID = "android.intent.extra.NOTIFICATION_ID";
+    field public static final String EXTRA_NOTIFICATION_TAG = "android.intent.extra.NOTIFICATION_TAG";
+    field @Deprecated public static final String EXTRA_PEOPLE = "android.people";
+    field public static final String EXTRA_PEOPLE_LIST = "android.people.list";
+    field public static final String EXTRA_PICTURE = "android.picture";
+    field public static final String EXTRA_PICTURE_CONTENT_DESCRIPTION = "android.pictureContentDescription";
+    field public static final String EXTRA_PICTURE_ICON = "android.pictureIcon";
+    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_BIG_PICTURE_WHEN_COLLAPSED = "android.showBigPictureWhenCollapsed";
+    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 FOREGROUND_SERVICE_DEFAULT = 0; // 0x0
+    field public static final int FOREGROUND_SERVICE_DEFERRED = 2; // 0x2
+    field public static final int FOREGROUND_SERVICE_IMMEDIATE = 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 String INTENT_CATEGORY_NOTIFICATION_PREFERENCES = "android.intent.category.NOTIFICATION_PREFERENCES";
+    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 isAuthenticationRequired();
+    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 setAuthenticationRequired(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 @RequiresApi(31) public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.drawable.Icon?);
+    method public androidx.core.app.NotificationCompat.BigPictureStyle setBigContentTitle(CharSequence?);
+    method @RequiresApi(31) public androidx.core.app.NotificationCompat.BigPictureStyle setContentDescription(CharSequence?);
+    method public androidx.core.app.NotificationCompat.BigPictureStyle setSummaryText(CharSequence?);
+    method @RequiresApi(31) public androidx.core.app.NotificationCompat.BigPictureStyle showBigPictureWhenCollapsed(boolean);
+  }
+
+  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 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 String? getShortcutId();
+    method public boolean isNotificationSuppressed();
+    method public static android.app.Notification.BubbleMetadata? toPlatform(androidx.core.app.NotificationCompat.BubbleMetadata?);
+  }
+
+  public static final class NotificationCompat.BubbleMetadata.Builder {
+    ctor @Deprecated public NotificationCompat.BubbleMetadata.Builder();
+    ctor @RequiresApi(30) public NotificationCompat.BubbleMetadata.Builder(String);
+    ctor public NotificationCompat.BubbleMetadata.Builder(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat);
+    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 @RequiresApi(19) public NotificationCompat.Builder(android.content.Context, android.app.Notification);
+    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 @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 clearActions();
+    method public androidx.core.app.NotificationCompat.Builder clearInvisibleActions();
+    method public androidx.core.app.NotificationCompat.Builder clearPeople();
+    method public android.widget.RemoteViews? createBigContentView();
+    method public android.widget.RemoteViews? createContentView();
+    method public android.widget.RemoteViews? createHeadsUpContentView();
+    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 setForegroundServiceBehavior(int);
+    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 setLocusId(androidx.core.content.LocusIdCompat?);
+    method @Deprecated 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 setSettingsText(CharSequence?);
+    method public androidx.core.app.NotificationCompat.Builder setShortcutId(String?);
+    method public androidx.core.app.NotificationCompat.Builder setShortcutInfo(androidx.core.content.pm.ShortcutInfoCompat?);
+    method public androidx.core.app.NotificationCompat.Builder setShowWhen(boolean);
+    method public androidx.core.app.NotificationCompat.Builder setSilent(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?);
+    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 @Deprecated 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 public androidx.core.app.NotificationCompat.MessagingStyle addHistoricMessage(androidx.core.app.NotificationCompat.MessagingStyle.Message?);
+    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!> getHistoricMessages();
+    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 createNotificationChannel(androidx.core.app.NotificationChannelCompat);
+    method public void createNotificationChannelGroup(android.app.NotificationChannelGroup);
+    method public void createNotificationChannelGroup(androidx.core.app.NotificationChannelGroupCompat);
+    method public void createNotificationChannelGroups(java.util.List<android.app.NotificationChannelGroup!>);
+    method public void createNotificationChannelGroupsCompat(java.util.List<androidx.core.app.NotificationChannelGroupCompat!>);
+    method public void createNotificationChannels(java.util.List<android.app.NotificationChannel!>);
+    method public void createNotificationChannelsCompat(java.util.List<androidx.core.app.NotificationChannelCompat!>);
+    method public void deleteNotificationChannel(String);
+    method public void deleteNotificationChannelGroup(String);
+    method public void deleteUnlistedNotificationChannels(java.util.Collection<java.lang.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.NotificationChannel? getNotificationChannel(String, String);
+    method public androidx.core.app.NotificationChannelCompat? getNotificationChannelCompat(String);
+    method public androidx.core.app.NotificationChannelCompat? getNotificationChannelCompat(String, String);
+    method public android.app.NotificationChannelGroup? getNotificationChannelGroup(String);
+    method public androidx.core.app.NotificationChannelGroupCompat? getNotificationChannelGroupCompat(String);
+    method public java.util.List<android.app.NotificationChannelGroup!> getNotificationChannelGroups();
+    method public java.util.List<androidx.core.app.NotificationChannelGroupCompat!> getNotificationChannelGroupsCompat();
+    method public java.util.List<android.app.NotificationChannel!> getNotificationChannels();
+    method public java.util.List<androidx.core.app.NotificationChannelCompat!> getNotificationChannelsCompat();
+    method @RequiresPermission(android.Manifest.permission.POST_NOTIFICATIONS) public void notify(int, android.app.Notification);
+    method @RequiresPermission(android.Manifest.permission.POST_NOTIFICATIONS) 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 interface OnMultiWindowModeChangedProvider {
+    method public void addOnMultiWindowModeChangedListener(androidx.core.util.Consumer<androidx.core.app.MultiWindowModeChangedInfo!>);
+    method public void removeOnMultiWindowModeChangedListener(androidx.core.util.Consumer<androidx.core.app.MultiWindowModeChangedInfo!>);
+  }
+
+  public interface OnNewIntentProvider {
+    method public void addOnNewIntentListener(androidx.core.util.Consumer<android.content.Intent!>);
+    method public void removeOnNewIntentListener(androidx.core.util.Consumer<android.content.Intent!>);
+  }
+
+  public interface OnPictureInPictureModeChangedProvider {
+    method public void addOnPictureInPictureModeChangedListener(androidx.core.util.Consumer<androidx.core.app.PictureInPictureModeChangedInfo!>);
+    method public void removeOnPictureInPictureModeChangedListener(androidx.core.util.Consumer<androidx.core.app.PictureInPictureModeChangedInfo!>);
+  }
+
+  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 PictureInPictureModeChangedInfo {
+    ctor public PictureInPictureModeChangedInfo(boolean);
+    ctor @RequiresApi(26) public PictureInPictureModeChangedInfo(boolean, android.content.res.Configuration);
+    method @RequiresApi(26) public android.content.res.Configuration getNewConfig();
+    method public boolean isInPictureInPictureMode();
+  }
+
+  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 @Deprecated public static void configureMenuItem(android.view.MenuItem, androidx.core.app.ShareCompat.IntentBuilder);
+    method @Deprecated 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 {
+    ctor public ShareCompat.IntentBuilder(android.content.Context);
+    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 @Deprecated 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 {
+    ctor public ShareCompat.IntentReader(android.app.Activity);
+    ctor public ShareCompat.IntentReader(android.content.Context, android.content.Intent);
+    method @Deprecated 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 String? getAttributionTag(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 android.content.Intent? registerReceiver(android.content.Context, android.content.BroadcastReceiver?, android.content.IntentFilter, int);
+    method public static android.content.Intent? registerReceiver(android.content.Context, android.content.BroadcastReceiver?, android.content.IntentFilter, String?, android.os.Handler?, int);
+    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);
+    field public static final int RECEIVER_EXPORTED = 2; // 0x2
+    field public static final int RECEIVER_NOT_EXPORTED = 4; // 0x4
+    field public static final int RECEIVER_VISIBLE_TO_INSTANT_APPS = 1; // 0x1
+  }
+
+  public class FileProvider extends android.content.ContentProvider {
+    ctor public FileProvider();
+    ctor protected FileProvider(@XmlRes int);
+    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 static android.net.Uri getUriForFile(android.content.Context, String, java.io.File, String);
+    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 createManageUnusedAppRestrictionsIntent(android.content.Context, String);
+    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 class IntentSanitizer {
+    method public android.content.Intent sanitize(android.content.Intent, androidx.core.util.Consumer<java.lang.String!>);
+    method public android.content.Intent sanitizeByFiltering(android.content.Intent);
+    method public android.content.Intent sanitizeByThrowing(android.content.Intent);
+  }
+
+  public static final class IntentSanitizer.Builder {
+    ctor public IntentSanitizer.Builder();
+    method public androidx.core.content.IntentSanitizer.Builder allowAction(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowAction(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowAnyComponent();
+    method public androidx.core.content.IntentSanitizer.Builder allowCategory(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowCategory(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipData(androidx.core.util.Predicate<android.content.ClipData!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataText();
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataUri(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataUriWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponent(android.content.ComponentName);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponent(androidx.core.util.Predicate<android.content.ComponentName!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponentWithPackage(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowData(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowDataWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<?>);
+    method public <T> androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<T!>, androidx.core.util.Predicate<T!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, androidx.core.util.Predicate<java.lang.Object!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraOutput(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraOutput(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraStream(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraStreamUriWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowFlags(int);
+    method public androidx.core.content.IntentSanitizer.Builder allowHistoryStackFlags();
+    method public androidx.core.content.IntentSanitizer.Builder allowIdentifier();
+    method public androidx.core.content.IntentSanitizer.Builder allowPackage(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowPackage(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowReceiverFlags();
+    method public androidx.core.content.IntentSanitizer.Builder allowSelector();
+    method public androidx.core.content.IntentSanitizer.Builder allowSourceBounds();
+    method public androidx.core.content.IntentSanitizer.Builder allowType(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowType(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer build();
+  }
+
+  public final class LocusIdCompat {
+    ctor public LocusIdCompat(String);
+    method public String getId();
+    method @RequiresApi(29) public android.content.LocusId toLocusId();
+    method @RequiresApi(29) public static androidx.core.content.LocusIdCompat toLocusIdCompat(android.content.LocusId);
+  }
+
+  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 interface OnConfigurationChangedProvider {
+    method public void addOnConfigurationChangedListener(androidx.core.util.Consumer<android.content.res.Configuration!>);
+    method public void removeOnConfigurationChangedListener(androidx.core.util.Consumer<android.content.res.Configuration!>);
+  }
+
+  public interface OnTrimMemoryProvider {
+    method public void addOnTrimMemoryListener(androidx.core.util.Consumer<java.lang.Integer!>);
+    method public void removeOnTrimMemoryListener(androidx.core.util.Consumer<java.lang.Integer!>);
+  }
+
+  public final class PackageManagerCompat {
+    method public static com.google.common.util.concurrent.ListenableFuture<java.lang.Integer!> getUnusedAppRestrictionsStatus(android.content.Context);
+    field public static final String ACTION_PERMISSION_REVOCATION_SETTINGS = "android.intent.action.AUTO_REVOKE_PERMISSIONS";
+  }
+
+  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();
+  }
+
+  public class UnusedAppRestrictionsBackportCallback {
+    method public void onResult(boolean, boolean) throws android.os.RemoteException;
+  }
+
+  public abstract class UnusedAppRestrictionsBackportService extends android.app.Service {
+    ctor public UnusedAppRestrictionsBackportService();
+    method protected abstract void isPermissionRevocationEnabled(androidx.core.content.UnusedAppRestrictionsBackportCallback);
+    method public android.os.IBinder? onBind(android.content.Intent?);
+    field public static final String ACTION_UNUSED_APP_RESTRICTIONS_BACKPORT_CONNECTION = "android.support.unusedapprestrictions.action.CustomUnusedAppRestrictionsBackportService";
+  }
+
+  public final class UnusedAppRestrictionsConstants {
+    field public static final int API_30 = 4; // 0x4
+    field public static final int API_30_BACKPORT = 3; // 0x3
+    field public static final int API_31 = 5; // 0x5
+    field public static final int DISABLED = 2; // 0x2
+    field public static final int ERROR = 0; // 0x0
+    field public static final int FEATURE_NOT_AVAILABLE = 1; // 0x1
+  }
+
+  public class UriMatcherCompat {
+    method public static androidx.core.util.Predicate<android.net.Uri!> asPredicate(android.content.UriMatcher);
+  }
+
+}
+
+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);
+    method public static java.util.List<android.content.pm.Signature!> getSignatures(android.content.pm.PackageManager, String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public static boolean hasSignatures(android.content.pm.PackageManager, String, @Size(min=1) java.util.Map<byte[]!,java.lang.Integer!>, boolean) throws android.content.pm.PackageManager.NameNotFoundException;
+  }
+
+  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 int getDisabledReason();
+    method public int getExcludedFromSurfaces();
+    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 isExcludedFromSurfaces(int);
+    method public boolean isImmutable();
+    method public boolean isPinned();
+    method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
+    field public static final int SURFACE_LAUNCHER = 1; // 0x1
+  }
+
+  public static class ShortcutInfoCompat.Builder {
+    ctor public ShortcutInfoCompat.Builder(android.content.Context, String);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder addCapabilityBinding(String);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder addCapabilityBinding(String, String, java.util.List<java.lang.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 setExcludedFromSurfaces(int);
+    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![]);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIsConversation();
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLocusId(androidx.core.content.LocusIdCompat?);
+    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);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setSliceUri(android.net.Uri);
+  }
+
+  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
+  }
+
+}
+
+package androidx.core.content.res {
+
+  public final class ConfigurationHelper {
+    method public static int getDensityDpi(android.content.res.Resources);
+  }
+
+  public final class ResourcesCompat {
+    method public static void clearCachesForTheme(android.content.res.Resources.Theme);
+    method public static android.graphics.Typeface? getCachedFont(android.content.Context, @FontRes int) throws android.content.res.Resources.NotFoundException;
+    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 android.graphics.Bitmap createScaledBitmap(android.graphics.Bitmap, int, int, android.graphics.Rect?, boolean);
+    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=95.047) double, @FloatRange(from=0.0f, to=0x64) double, @FloatRange(from=0.0f, to=108.883) double);
+    method public static void XYZToLAB(@FloatRange(from=0.0f, to=95.047) double, @FloatRange(from=0.0f, to=0x64) double, @FloatRange(from=0.0f, to=108.883) 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 add(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+    method public static androidx.core.graphics.Insets max(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+    method public static androidx.core.graphics.Insets min(androidx.core.graphics.Insets, androidx.core.graphics.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 public static androidx.core.graphics.Insets subtract(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+    method @RequiresApi(api=29) public static androidx.core.graphics.Insets toCompatInsets(android.graphics.Insets);
+    method @RequiresApi(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);
+    method public static android.graphics.Typeface create(android.content.Context, android.graphics.Typeface?, @IntRange(from=1, to=1000) int, boolean);
+  }
+
+}
+
+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 @DrawableRes 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 abstract class GnssStatusCompat {
+    method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public abstract float getBasebandCn0DbHz(@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 hasBasebandCn0DbHz(@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 LocationCompat {
+    method public static float getBearingAccuracyDegrees(android.location.Location);
+    method public static long getElapsedRealtimeMillis(android.location.Location);
+    method public static long getElapsedRealtimeNanos(android.location.Location);
+    method @FloatRange(from=0.0) public static float getMslAltitudeAccuracyMeters(android.location.Location);
+    method public static double getMslAltitudeMeters(android.location.Location);
+    method public static float getSpeedAccuracyMetersPerSecond(android.location.Location);
+    method public static float getVerticalAccuracyMeters(android.location.Location);
+    method public static boolean hasBearingAccuracy(android.location.Location);
+    method public static boolean hasMslAltitude(android.location.Location);
+    method public static boolean hasMslAltitudeAccuracy(android.location.Location);
+    method public static boolean hasSpeedAccuracy(android.location.Location);
+    method public static boolean hasVerticalAccuracy(android.location.Location);
+    method public static boolean isMock(android.location.Location);
+    method public static void removeMslAltitude(android.location.Location);
+    method public static void removeMslAltitudeAccuracy(android.location.Location);
+    method public static void setBearingAccuracyDegrees(android.location.Location, float);
+    method public static void setMock(android.location.Location, boolean);
+    method public static void setMslAltitudeAccuracyMeters(android.location.Location, @FloatRange(from=0.0) float);
+    method public static void setMslAltitudeMeters(android.location.Location, double);
+    method public static void setSpeedAccuracyMetersPerSecond(android.location.Location, float);
+    method public static void setVerticalAccuracyMeters(android.location.Location, float);
+    field public static final String EXTRA_BEARING_ACCURACY = "bearingAccuracy";
+    field public static final String EXTRA_IS_MOCK = "mockLocation";
+    field public static final String EXTRA_MSL_ALTITUDE = "androidx.core.location.extra.MSL_ALTITUDE";
+    field public static final String EXTRA_MSL_ALTITUDE_ACCURACY = "androidx.core.location.extra.MSL_ALTITUDE_ACCURACY";
+    field public static final String EXTRA_SPEED_ACCURACY = "speedAccuracy";
+    field public static final String EXTRA_VERTICAL_ACCURACY = "verticalAccuracy";
+  }
+
+  public interface LocationListenerCompat extends android.location.LocationListener {
+    method public default void onStatusChanged(String, int, android.os.Bundle?);
+  }
+
+  public final class LocationManagerCompat {
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public static void getCurrentLocation(android.location.LocationManager, String, androidx.core.os.CancellationSignal?, java.util.concurrent.Executor, androidx.core.util.Consumer<android.location.Location!>);
+    method public static String? getGnssHardwareModelName(android.location.LocationManager);
+    method public static int getGnssYearOfHardware(android.location.LocationManager);
+    method public static boolean hasProvider(android.location.LocationManager, String);
+    method public static boolean isLocationEnabled(android.location.LocationManager);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssMeasurementsCallback(android.location.LocationManager, android.location.GnssMeasurementsEvent.Callback, android.os.Handler);
+    method @RequiresApi(android.os.Build.VERSION_CODES.R) @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssMeasurementsCallback(android.location.LocationManager, java.util.concurrent.Executor, android.location.GnssMeasurementsEvent.Callback);
+    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 @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public static void removeUpdates(android.location.LocationManager, androidx.core.location.LocationListenerCompat);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public static void requestLocationUpdates(android.location.LocationManager, String, androidx.core.location.LocationRequestCompat, java.util.concurrent.Executor, androidx.core.location.LocationListenerCompat);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public static void requestLocationUpdates(android.location.LocationManager, String, androidx.core.location.LocationRequestCompat, androidx.core.location.LocationListenerCompat, android.os.Looper);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) public static void unregisterGnssMeasurementsCallback(android.location.LocationManager, android.location.GnssMeasurementsEvent.Callback);
+    method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
+  }
+
+  public final class LocationRequestCompat {
+    method @IntRange(from=1) public long getDurationMillis();
+    method @IntRange(from=0) public long getIntervalMillis();
+    method @IntRange(from=0) public long getMaxUpdateDelayMillis();
+    method @IntRange(from=1, to=java.lang.Integer.MAX_VALUE) public int getMaxUpdates();
+    method @FloatRange(from=0, to=java.lang.Float.MAX_VALUE) public float getMinUpdateDistanceMeters();
+    method @IntRange(from=0) public long getMinUpdateIntervalMillis();
+    method public int getQuality();
+    method @RequiresApi(31) public android.location.LocationRequest toLocationRequest();
+    method @RequiresApi(19) public android.location.LocationRequest? toLocationRequest(String);
+    field public static final long PASSIVE_INTERVAL = 9223372036854775807L; // 0x7fffffffffffffffL
+    field public static final int QUALITY_BALANCED_POWER_ACCURACY = 102; // 0x66
+    field public static final int QUALITY_HIGH_ACCURACY = 100; // 0x64
+    field public static final int QUALITY_LOW_POWER = 104; // 0x68
+  }
+
+  public static final class LocationRequestCompat.Builder {
+    ctor public LocationRequestCompat.Builder(long);
+    ctor public LocationRequestCompat.Builder(androidx.core.location.LocationRequestCompat);
+    method public androidx.core.location.LocationRequestCompat build();
+    method public androidx.core.location.LocationRequestCompat.Builder clearMinUpdateIntervalMillis();
+    method public androidx.core.location.LocationRequestCompat.Builder setDurationMillis(@IntRange(from=1) long);
+    method public androidx.core.location.LocationRequestCompat.Builder setIntervalMillis(@IntRange(from=0) long);
+    method public androidx.core.location.LocationRequestCompat.Builder setMaxUpdateDelayMillis(@IntRange(from=0) long);
+    method public androidx.core.location.LocationRequestCompat.Builder setMaxUpdates(@IntRange(from=1, to=java.lang.Integer.MAX_VALUE) int);
+    method public androidx.core.location.LocationRequestCompat.Builder setMinUpdateDistanceMeters(@FloatRange(from=0, to=java.lang.Float.MAX_VALUE) float);
+    method public androidx.core.location.LocationRequestCompat.Builder setMinUpdateIntervalMillis(@IntRange(from=0) long);
+    method public androidx.core.location.LocationRequestCompat.Builder setQuality(int);
+  }
+
+}
+
+package androidx.core.math {
+
+  public class MathUtils {
+    method public static int addExact(int, int);
+    method public static long addExact(long, long);
+    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);
+    method public static int decrementExact(int);
+    method public static long decrementExact(long);
+    method public static int incrementExact(int);
+    method public static long incrementExact(long);
+    method public static int multiplyExact(int, int);
+    method public static long multiplyExact(long, long);
+    method public static int negateExact(int);
+    method public static long negateExact(long);
+    method public static int subtractExact(int, int);
+    method public static long subtractExact(long, long);
+    method public static int toIntExact(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 MailTo {
+    method public String? getBcc();
+    method public String? getBody();
+    method public String? getCc();
+    method public java.util.Map<java.lang.String!,java.lang.String!>? getHeaders();
+    method public String? getSubject();
+    method public String? getTo();
+    method public static boolean isMailTo(String?);
+    method public static boolean isMailTo(android.net.Uri?);
+    method public static androidx.core.net.MailTo parse(String) throws androidx.core.net.ParseException;
+    method public static androidx.core.net.MailTo parse(android.net.Uri) throws androidx.core.net.ParseException;
+    field public static final String MAILTO_SCHEME = "mailto:";
+  }
+
+  public class ParseException extends java.lang.RuntimeException {
+    field public final String response;
+  }
+
+  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 @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.N) public static boolean isAtLeastN();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.N_MR1) public static boolean isAtLeastNMR1();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.O) public static boolean isAtLeastO();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.O_MR1) public static boolean isAtLeastOMR1();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.P) public static boolean isAtLeastP();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.Q) public static boolean isAtLeastQ();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.R) public static boolean isAtLeastR();
+    method @Deprecated @ChecksSdkIntAtLeast(api=31, codename="S") public static boolean isAtLeastS();
+  }
+
+  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 ExecutorCompat {
+    method public static java.util.concurrent.Executor create(android.os.Handler);
+  }
+
+  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 @RequiresApi(16) public static boolean hasCallbacks(android.os.Handler, Runnable);
+    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 @RequiresApi(21) public static boolean matchesLanguageAndScript(java.util.Locale, java.util.Locale);
+    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 <T> T![]? readArray(android.os.Parcel, ClassLoader?, Class<T!>);
+    method public static <T> java.util.ArrayList<T!>? readArrayList(android.os.Parcel, ClassLoader?, Class<? extends T>);
+    method public static boolean readBoolean(android.os.Parcel);
+    method public static <K, V> java.util.HashMap<K!,V!>? readHashMap(android.os.Parcel, ClassLoader?, Class<? extends K>, Class<? extends V>);
+    method public static <T> void readList(android.os.Parcel, java.util.List<? super T>, ClassLoader?, Class<T!>);
+    method public static <K, V> void readMap(android.os.Parcel, java.util.Map<? super K,? super V>, ClassLoader?, Class<K!>, Class<V!>);
+    method public static <T extends android.os.Parcelable> T? readParcelable(android.os.Parcel, ClassLoader?, Class<T!>);
+    method public static <T> T![]? readParcelableArray(android.os.Parcel, ClassLoader?, Class<T!>);
+    method @RequiresApi(30) public static <T> android.os.Parcelable.Creator<T!>? readParcelableCreator(android.os.Parcel, ClassLoader?, Class<T!>);
+    method @RequiresApi(api=android.os.Build.VERSION_CODES.Q) public static <T> java.util.List<T!> readParcelableList(android.os.Parcel, java.util.List<T!>, ClassLoader?, Class<T!>);
+    method public static <T extends java.io.Serializable> T? readSerializable(android.os.Parcel, ClassLoader?, Class<T!>);
+    method public static <T> android.util.SparseArray<T!>? readSparseArray(android.os.Parcel, ClassLoader?, Class<? extends T>);
+    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 ProcessCompat {
+    method public static boolean isApplicationUid(int);
+  }
+
+  @Deprecated public final class TraceCompat {
+    method @Deprecated public static void beginAsyncSection(String, int);
+    method @Deprecated public static void beginSection(String);
+    method @Deprecated public static void endAsyncSection(String, int);
+    method @Deprecated public static void endSection();
+    method @Deprecated public static boolean isEnabled();
+    method @Deprecated public static void setCounter(String, int);
+  }
+
+  @RequiresApi(17) public class UserHandleCompat {
+    method public static android.os.UserHandle getUserHandleForUid(int);
+  }
+
+  public class UserManagerCompat {
+    method public static boolean isUserUnlocked(android.content.Context);
+  }
+
+}
+
+package androidx.core.provider {
+
+  public final class DocumentsContractCompat {
+    method public static android.net.Uri? buildChildDocumentsUri(String, String?);
+    method public static android.net.Uri? buildChildDocumentsUriUsingTree(android.net.Uri, String);
+    method public static android.net.Uri? buildDocumentUri(String, String);
+    method public static android.net.Uri? buildDocumentUriUsingTree(android.net.Uri, String);
+    method public static android.net.Uri? buildTreeDocumentUri(String, String);
+    method public static android.net.Uri? createDocument(android.content.ContentResolver, android.net.Uri, String, String) throws java.io.FileNotFoundException;
+    method public static String? getDocumentId(android.net.Uri);
+    method public static String? getTreeDocumentId(android.net.Uri);
+    method public static boolean isDocumentUri(android.content.Context, android.net.Uri?);
+    method public static boolean isTreeUri(android.net.Uri);
+    method public static boolean removeDocument(android.content.ContentResolver, android.net.Uri, android.net.Uri) throws java.io.FileNotFoundException;
+    method public static android.net.Uri? renameDocument(android.content.ContentResolver, android.net.Uri, String) throws java.io.FileNotFoundException;
+  }
+
+  public static final class DocumentsContractCompat.DocumentCompat {
+    field public static final int FLAG_VIRTUAL_DOCUMENT = 512; // 0x200
+  }
+
+  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 {
+
+  @RequiresApi(22) public class SubscriptionManagerCompat {
+    method public static int getSlotIndex(int);
+  }
+
+  public class TelephonyManagerCompat {
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public static String? getImei(android.telephony.TelephonyManager);
+    method public static int getSubscriptionId(android.telephony.TelephonyManager);
+  }
+
+}
+
+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?);
+    method public static <T> T requireNonNull(T?);
+    method public static <T> T requireNonNull(T?, String);
+    method public static String? toString(Object?, String?);
+  }
+
+  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 default androidx.core.util.Predicate<T!>! and(androidx.core.util.Predicate<? super T>!);
+    method public static <T> androidx.core.util.Predicate<T!>! isEqual(Object!);
+    method public default androidx.core.util.Predicate<T!>! negate();
+    method public static <T> androidx.core.util.Predicate<T!>! not(androidx.core.util.Predicate<? super T>!);
+    method public default androidx.core.util.Predicate<T!>! or(androidx.core.util.Predicate<? super T>!);
+    method public boolean test(T!);
+  }
+
+  public final class SizeFCompat {
+    ctor public SizeFCompat(float, float);
+    method public float getHeight();
+    method public float getWidth();
+    method @RequiresApi(21) public android.util.SizeF toSizeF();
+    method @RequiresApi(21) public static androidx.core.util.SizeFCompat toSizeFCompat(android.util.SizeF);
+  }
+
+  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 ContentInfoCompat {
+    method public android.content.ClipData getClip();
+    method public android.os.Bundle? getExtras();
+    method public int getFlags();
+    method public android.net.Uri? getLinkUri();
+    method public int getSource();
+    method public android.util.Pair<androidx.core.view.ContentInfoCompat!,androidx.core.view.ContentInfoCompat!> partition(androidx.core.util.Predicate<android.content.ClipData.Item!>);
+    method @RequiresApi(31) public static android.util.Pair<android.view.ContentInfo!,android.view.ContentInfo!> partition(android.view.ContentInfo, java.util.function.Predicate<android.content.ClipData.Item!>);
+    method @RequiresApi(31) public android.view.ContentInfo toContentInfo();
+    method @RequiresApi(31) public static androidx.core.view.ContentInfoCompat toContentInfoCompat(android.view.ContentInfo);
+    field public static final int FLAG_CONVERT_TO_PLAIN_TEXT = 1; // 0x1
+    field public static final int SOURCE_APP = 0; // 0x0
+    field public static final int SOURCE_AUTOFILL = 4; // 0x4
+    field public static final int SOURCE_CLIPBOARD = 1; // 0x1
+    field public static final int SOURCE_DRAG_AND_DROP = 3; // 0x3
+    field public static final int SOURCE_INPUT_METHOD = 2; // 0x2
+    field public static final int SOURCE_PROCESS_TEXT = 5; // 0x5
+  }
+
+  public static final class ContentInfoCompat.Builder {
+    ctor public ContentInfoCompat.Builder(androidx.core.view.ContentInfoCompat);
+    ctor public ContentInfoCompat.Builder(android.content.ClipData, int);
+    method public androidx.core.view.ContentInfoCompat build();
+    method public androidx.core.view.ContentInfoCompat.Builder setClip(android.content.ClipData);
+    method public androidx.core.view.ContentInfoCompat.Builder setExtras(android.os.Bundle?);
+    method public androidx.core.view.ContentInfoCompat.Builder setFlags(int);
+    method public androidx.core.view.ContentInfoCompat.Builder setLinkUri(android.net.Uri?);
+    method public androidx.core.view.ContentInfoCompat.Builder setSource(int);
+  }
+
+  public final class DisplayCompat {
+    method public static androidx.core.view.DisplayCompat.ModeCompat getMode(android.content.Context, android.view.Display);
+    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 @Deprecated 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!>?);
+    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 {
+    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 interface MenuHost {
+    method public void addMenuProvider(androidx.core.view.MenuProvider);
+    method public void addMenuProvider(androidx.core.view.MenuProvider, androidx.lifecycle.LifecycleOwner);
+    method public void addMenuProvider(androidx.core.view.MenuProvider, androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.State);
+    method public void invalidateMenu();
+    method public void removeMenuProvider(androidx.core.view.MenuProvider);
+  }
+
+  public class MenuHostHelper {
+    ctor public MenuHostHelper(Runnable);
+    method public void addMenuProvider(androidx.core.view.MenuProvider);
+    method public void addMenuProvider(androidx.core.view.MenuProvider, androidx.lifecycle.LifecycleOwner);
+    method public void addMenuProvider(androidx.core.view.MenuProvider, androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.State);
+    method public void onCreateMenu(android.view.Menu, android.view.MenuInflater);
+    method public void onMenuClosed(android.view.Menu);
+    method public boolean onMenuItemSelected(android.view.MenuItem);
+    method public void onPrepareMenu(android.view.Menu);
+    method public void removeMenuProvider(androidx.core.view.MenuProvider);
+  }
+
+  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 interface MenuProvider {
+    method public void onCreateMenu(android.view.Menu, android.view.MenuInflater);
+    method public default void onMenuClosed(android.view.Menu);
+    method public boolean onMenuItemSelected(android.view.MenuItem);
+    method public default void onPrepareMenu(android.view.Menu);
+  }
+
+  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 interface OnReceiveContentListener {
+    method public androidx.core.view.ContentInfoCompat? onReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
+  }
+
+  public interface OnReceiveContentViewBehavior {
+    method public androidx.core.view.ContentInfoCompat? onReceiveContent(androidx.core.view.ContentInfoCompat);
+  }
+
+  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 @Deprecated 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 public static String![]? getOnReceiveContentMimeTypes(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 @UiThread public static 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!);
+    method @Deprecated public static float getTranslationY(android.view.View!);
+    method public static float getTranslationZ(android.view.View);
+    method @Deprecated public static androidx.core.view.WindowInsetsControllerCompat? getWindowInsetsController(android.view.View);
+    method @Deprecated 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 androidx.core.view.ContentInfoCompat? performReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
+    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 @UiThread 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 public static void setOnReceiveContentListener(android.view.View, String![]?, androidx.core.view.OnReceiveContentListener?);
+    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 @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?);
+    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 public static void setWindowInsetsAnimationCallback(android.view.View, androidx.core.view.WindowInsetsAnimationCompat.Callback?);
+    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 androidx.core.view.WindowInsetsControllerCompat getInsetsController(android.view.Window, android.view.View);
+    method public static <T extends android.view.View> T requireViewById(android.view.Window, @IdRes int);
+    method public static void setDecorFitsSystemWindows(android.view.Window, boolean);
+    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 final class WindowInsetsAnimationCompat {
+    ctor public WindowInsetsAnimationCompat(int, android.view.animation.Interpolator?, long);
+    method @FloatRange(from=0.0f, to=1.0f) public float getAlpha();
+    method public long getDurationMillis();
+    method @FloatRange(from=0.0f, to=1.0f) public float getFraction();
+    method public float getInterpolatedFraction();
+    method public android.view.animation.Interpolator? getInterpolator();
+    method public int getTypeMask();
+    method public void setAlpha(@FloatRange(from=0.0f, to=1.0f) float);
+    method public void setFraction(@FloatRange(from=0.0f, to=1.0f) float);
+  }
+
+  public static final class WindowInsetsAnimationCompat.BoundsCompat {
+    ctor public WindowInsetsAnimationCompat.BoundsCompat(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+    method public androidx.core.graphics.Insets getLowerBound();
+    method public androidx.core.graphics.Insets getUpperBound();
+    method public androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat inset(androidx.core.graphics.Insets);
+    method @RequiresApi(30) public android.view.WindowInsetsAnimation.Bounds toBounds();
+    method @RequiresApi(30) public static androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat toBoundsCompat(android.view.WindowInsetsAnimation.Bounds);
+  }
+
+  public abstract static class WindowInsetsAnimationCompat.Callback {
+    ctor public WindowInsetsAnimationCompat.Callback(int);
+    method public final int getDispatchMode();
+    method public void onEnd(androidx.core.view.WindowInsetsAnimationCompat);
+    method public void onPrepare(androidx.core.view.WindowInsetsAnimationCompat);
+    method public abstract androidx.core.view.WindowInsetsCompat onProgress(androidx.core.view.WindowInsetsCompat, java.util.List<androidx.core.view.WindowInsetsAnimationCompat!>);
+    method public androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat onStart(androidx.core.view.WindowInsetsAnimationCompat, androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat);
+    field public static final int DISPATCH_MODE_CONTINUE_ON_SUBTREE = 1; // 0x1
+    field public static final int DISPATCH_MODE_STOP = 0; // 0x0
+  }
+
+  public interface WindowInsetsAnimationControlListenerCompat {
+    method public void onCancelled(androidx.core.view.WindowInsetsAnimationControllerCompat?);
+    method public void onFinished(androidx.core.view.WindowInsetsAnimationControllerCompat);
+    method public void onReady(androidx.core.view.WindowInsetsAnimationControllerCompat, int);
+  }
+
+  public final class WindowInsetsAnimationControllerCompat {
+    method public void finish(boolean);
+    method public float getCurrentAlpha();
+    method @FloatRange(from=0.0f, to=1.0f) public float getCurrentFraction();
+    method public androidx.core.graphics.Insets getCurrentInsets();
+    method public androidx.core.graphics.Insets getHiddenStateInsets();
+    method public androidx.core.graphics.Insets getShownStateInsets();
+    method public int getTypes();
+    method public boolean isCancelled();
+    method public boolean isFinished();
+    method public boolean isReady();
+    method public void setInsetsAndAlpha(androidx.core.graphics.Insets?, @FloatRange(from=0.0f, to=1.0f) float, @FloatRange(from=0.0f, to=1.0f) float);
+  }
+
+  public class WindowInsetsCompat {
+    ctor public WindowInsetsCompat(androidx.core.view.WindowInsetsCompat?);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat consumeDisplayCutout();
+    method @Deprecated public androidx.core.view.WindowInsetsCompat consumeStableInsets();
+    method @Deprecated public androidx.core.view.WindowInsetsCompat consumeSystemWindowInsets();
+    method public androidx.core.view.DisplayCutoutCompat? getDisplayCutout();
+    method public androidx.core.graphics.Insets getInsets(int);
+    method public androidx.core.graphics.Insets getInsetsIgnoringVisibility(int);
+    method @Deprecated public androidx.core.graphics.Insets getMandatorySystemGestureInsets();
+    method @Deprecated public int getStableInsetBottom();
+    method @Deprecated public int getStableInsetLeft();
+    method @Deprecated public int getStableInsetRight();
+    method @Deprecated public int getStableInsetTop();
+    method @Deprecated public androidx.core.graphics.Insets getStableInsets();
+    method @Deprecated public androidx.core.graphics.Insets getSystemGestureInsets();
+    method @Deprecated public int getSystemWindowInsetBottom();
+    method @Deprecated public int getSystemWindowInsetLeft();
+    method @Deprecated public int getSystemWindowInsetRight();
+    method @Deprecated public int getSystemWindowInsetTop();
+    method @Deprecated public androidx.core.graphics.Insets getSystemWindowInsets();
+    method @Deprecated public androidx.core.graphics.Insets getTappableElementInsets();
+    method public boolean hasInsets();
+    method @Deprecated public boolean hasStableInsets();
+    method @Deprecated 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 public boolean isVisible(int);
+    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);
+    method @RequiresApi(20) public static androidx.core.view.WindowInsetsCompat toWindowInsetsCompat(android.view.WindowInsets, android.view.View?);
+    field 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 setInsets(int, androidx.core.graphics.Insets);
+    method public androidx.core.view.WindowInsetsCompat.Builder setInsetsIgnoringVisibility(int, androidx.core.graphics.Insets);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setMandatorySystemGestureInsets(androidx.core.graphics.Insets);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setStableInsets(androidx.core.graphics.Insets);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setSystemGestureInsets(androidx.core.graphics.Insets);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setSystemWindowInsets(androidx.core.graphics.Insets);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setTappableElementInsets(androidx.core.graphics.Insets);
+    method public androidx.core.view.WindowInsetsCompat.Builder setVisible(int, boolean);
+  }
+
+  public static final class WindowInsetsCompat.Type {
+    method public static int captionBar();
+    method public static int displayCutout();
+    method public static int ime();
+    method public static int mandatorySystemGestures();
+    method public static int navigationBars();
+    method public static int statusBars();
+    method public static int systemBars();
+    method public static int systemGestures();
+    method public static int tappableElement();
+  }
+
+  public final class WindowInsetsControllerCompat {
+    ctor public WindowInsetsControllerCompat(android.view.Window, android.view.View);
+    method public void addOnControllableInsetsChangedListener(androidx.core.view.WindowInsetsControllerCompat.OnControllableInsetsChangedListener);
+    method public void controlWindowInsetsAnimation(int, long, android.view.animation.Interpolator?, android.os.CancellationSignal?, androidx.core.view.WindowInsetsAnimationControlListenerCompat);
+    method public int getSystemBarsBehavior();
+    method public void hide(int);
+    method public boolean isAppearanceLightNavigationBars();
+    method public boolean isAppearanceLightStatusBars();
+    method public void removeOnControllableInsetsChangedListener(androidx.core.view.WindowInsetsControllerCompat.OnControllableInsetsChangedListener);
+    method public void setAppearanceLightNavigationBars(boolean);
+    method public void setAppearanceLightStatusBars(boolean);
+    method public void setSystemBarsBehavior(int);
+    method public void show(int);
+    method @Deprecated @RequiresApi(30) public static androidx.core.view.WindowInsetsControllerCompat toWindowInsetsControllerCompat(android.view.WindowInsetsController);
+    field public static final int BEHAVIOR_SHOW_BARS_BY_SWIPE = 1; // 0x1
+    field public static final int BEHAVIOR_SHOW_BARS_BY_TOUCH = 0; // 0x0
+    field public static final int BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE = 2; // 0x2
+  }
+
+  public static interface WindowInsetsControllerCompat.OnControllableInsetsChangedListener {
+    method public void onControllableInsetsChanged(androidx.core.view.WindowInsetsControllerCompat, int);
+  }
+
+}
+
+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_DRAG_CANCELLED = 512; // 0x200
+    field public static final int CONTENT_CHANGE_TYPE_DRAG_DROPPED = 256; // 0x100
+    field public static final int CONTENT_CHANGE_TYPE_DRAG_STARTED = 128; // 0x80
+    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
+    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 @Deprecated public int getActions();
+    method public java.util.List<java.lang.String!> getAvailableExtraData();
+    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.view.accessibility.AccessibilityNodeInfo.ExtraRenderingInfo? getExtraRenderingInfo();
+    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? getStateDescription();
+    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? getUniqueId();
+    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 isTextSelectable();
+    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 public void setAvailableExtraData(java.util.List<java.lang.String!>);
+    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 setStateDescription(CharSequence?);
+    method public void setText(CharSequence!);
+    method public void setTextEntryKey(boolean);
+    method public void setTextSelectable(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 setUniqueId(String?);
+    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_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";
+    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 String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH = "android.core.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH";
+    field public static final int EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_MAX_LENGTH = 20000; // 0x4e20
+    field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX = "android.core.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX";
+    field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_KEY = "android.core.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_KEY";
+    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_DRAG_CANCEL;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_DRAG_DROP;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_DRAG_START;
+    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;
+    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_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;
+    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_TEXT_SUGGESTIONS;
+    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 void addExtraDataToAccessibilityNodeInfo(int, androidx.core.view.accessibility.AccessibilityNodeInfoCompat, String, android.os.Bundle?);
+    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 getDisplayId();
+    method public int getId();
+    method public int getLayer();
+    method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat? getParent();
+    method public void getRegionInScreen(android.graphics.Region);
+    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 boolean isInPictureInPictureMode();
+    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();
+    method public android.view.accessibility.AccessibilityWindowInfo? unwrap();
+    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 CharSequence? getInitialSelectedText(android.view.inputmethod.EditorInfo, int);
+    method public static CharSequence? getInitialTextAfterCursor(android.view.inputmethod.EditorInfo, int, int);
+    method public static CharSequence? getInitialTextBeforeCursor(android.view.inputmethod.EditorInfo, int, int);
+    method public static void setContentMimeTypes(android.view.inputmethod.EditorInfo, String![]?);
+    method public static void setInitialSurroundingSubText(android.view.inputmethod.EditorInfo, CharSequence, int);
+    method public static void setInitialSurroundingText(android.view.inputmethod.EditorInfo, CharSequence);
+    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 @Deprecated public static android.view.inputmethod.InputConnection createWrapper(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, androidx.core.view.inputmethod.InputConnectionCompat.OnCommitContentListener);
+    method public static android.view.inputmethod.InputConnection createWrapper(android.view.View, android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
+    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 CheckedTextViewCompat {
+    method public static android.graphics.drawable.Drawable? getCheckMarkDrawable(android.widget.CheckedTextView);
+    method public static android.content.res.ColorStateList? getCheckMarkTintList(android.widget.CheckedTextView);
+    method public static android.graphics.PorterDuff.Mode? getCheckMarkTintMode(android.widget.CheckedTextView);
+    method public static void setCheckMarkTintList(android.widget.CheckedTextView, android.content.res.ColorStateList?);
+    method public static void setCheckMarkTintMode(android.widget.CheckedTextView, android.graphics.PorterDuff.Mode?);
+  }
+
+  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 public static android.widget.EdgeEffect create(android.content.Context, android.util.AttributeSet?);
+    method @Deprecated public boolean draw(android.graphics.Canvas!);
+    method @Deprecated public void finish();
+    method public static float getDistance(android.widget.EdgeEffect);
+    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 public static float onPullDistance(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/current.txt b/core/core/api/current.txt
index 9a52abd4..4919591 100644
--- a/core/core/api/current.txt
+++ b/core/core/api/current.txt
@@ -1050,6 +1050,48 @@
     field public static final String EXTRA_TIME = "android.intent.extra.TIME";
   }
 
+  public class IntentSanitizer {
+    method public android.content.Intent sanitize(android.content.Intent, androidx.core.util.Consumer<java.lang.String!>);
+    method public android.content.Intent sanitizeByFiltering(android.content.Intent);
+    method public android.content.Intent sanitizeByThrowing(android.content.Intent);
+  }
+
+  public static final class IntentSanitizer.Builder {
+    ctor public IntentSanitizer.Builder();
+    method public androidx.core.content.IntentSanitizer.Builder allowAction(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowAction(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowAnyComponent();
+    method public androidx.core.content.IntentSanitizer.Builder allowCategory(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowCategory(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipData(androidx.core.util.Predicate<android.content.ClipData!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataText();
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataUri(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataUriWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponent(android.content.ComponentName);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponent(androidx.core.util.Predicate<android.content.ComponentName!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponentWithPackage(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowData(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowDataWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<?>);
+    method public <T> androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<T!>, androidx.core.util.Predicate<T!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, androidx.core.util.Predicate<java.lang.Object!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraOutput(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraOutput(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraStream(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraStreamUriWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowFlags(int);
+    method public androidx.core.content.IntentSanitizer.Builder allowHistoryStackFlags();
+    method public androidx.core.content.IntentSanitizer.Builder allowIdentifier();
+    method public androidx.core.content.IntentSanitizer.Builder allowPackage(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowPackage(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowReceiverFlags();
+    method public androidx.core.content.IntentSanitizer.Builder allowSelector();
+    method public androidx.core.content.IntentSanitizer.Builder allowSourceBounds();
+    method public androidx.core.content.IntentSanitizer.Builder allowType(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowType(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer build();
+  }
+
   public final class LocusIdCompat {
     ctor public LocusIdCompat(String);
     method public String getId();
@@ -1117,6 +1159,10 @@
     field public static final int FEATURE_NOT_AVAILABLE = 1; // 0x1
   }
 
+  public class UriMatcherCompat {
+    method public static androidx.core.util.Predicate<android.net.Uri!> asPredicate(android.content.UriMatcher);
+  }
+
 }
 
 package androidx.core.content.pm {
@@ -2109,6 +2155,11 @@
   }
 
   public interface Predicate<T> {
+    method public default androidx.core.util.Predicate<T!>! and(androidx.core.util.Predicate<? super T>!);
+    method public static <T> androidx.core.util.Predicate<T!>! isEqual(Object!);
+    method public default androidx.core.util.Predicate<T!>! negate();
+    method public static <T> androidx.core.util.Predicate<T!>! not(androidx.core.util.Predicate<? super T>!);
+    method public default androidx.core.util.Predicate<T!>! or(androidx.core.util.Predicate<? super T>!);
     method public boolean test(T!);
   }
 
@@ -3184,6 +3235,7 @@
     method public boolean isSelected();
     method public boolean isShowingHintText();
     method public boolean isTextEntryKey();
+    method public boolean isTextSelectable();
     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);
@@ -3246,6 +3298,7 @@
     method public void setStateDescription(CharSequence?);
     method public void setText(CharSequence!);
     method public void setTextEntryKey(boolean);
+    method public void setTextSelectable(boolean);
     method public void setTextSelection(int, int);
     method public void setTooltipText(CharSequence?);
     method public void setTouchDelegateInfo(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.TouchDelegateInfoCompat);
@@ -3350,6 +3403,7 @@
     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_TEXT_SUGGESTIONS;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SHOW_TOOLTIP;
   }
 
diff --git a/core/core/api/public_plus_experimental_1.9.0-beta01.txt b/core/core/api/public_plus_experimental_1.9.0-beta01.txt
new file mode 100644
index 0000000..e539396
--- /dev/null
+++ b/core/core/api/public_plus_experimental_1.9.0-beta01.txt
@@ -0,0 +1,3874 @@
+// Signature format: 4.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 boolean isLaunchedFromBubble(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 setLocusContext(android.app.Activity, androidx.core.content.LocusIdCompat?, android.os.Bundle?);
+    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 checkOrNoteProxyOp(android.content.Context, int, String, String);
+    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
+  }
+
+  @Deprecated public abstract class JobIntentService extends android.app.Service {
+    ctor @Deprecated public JobIntentService();
+    method @Deprecated public static void enqueueWork(android.content.Context, Class<?>, int, android.content.Intent);
+    method @Deprecated public static void enqueueWork(android.content.Context, android.content.ComponentName, int, android.content.Intent);
+    method @Deprecated public boolean isStopped();
+    method @Deprecated public android.os.IBinder! onBind(android.content.Intent);
+    method @Deprecated protected abstract void onHandleWork(android.content.Intent);
+    method @Deprecated public boolean onStopCurrentWork();
+    method @Deprecated public void setInterruptIfStopped(boolean);
+  }
+
+  public final class LocaleManagerCompat {
+    method @AnyThread public static androidx.core.os.LocaleListCompat getSystemLocales(android.content.Context);
+  }
+
+  public final class MultiWindowModeChangedInfo {
+    ctor public MultiWindowModeChangedInfo(boolean);
+    ctor @RequiresApi(26) public MultiWindowModeChangedInfo(boolean, android.content.res.Configuration);
+    method @RequiresApi(26) public android.content.res.Configuration getNewConfig();
+    method public boolean isInMultiWindowMode();
+  }
+
+  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 NotificationChannelCompat {
+    method public boolean canBubble();
+    method public boolean canBypassDnd();
+    method public boolean canShowBadge();
+    method public android.media.AudioAttributes? getAudioAttributes();
+    method public String? getConversationId();
+    method public String? getDescription();
+    method public String? getGroup();
+    method public String getId();
+    method public int getImportance();
+    method public int getLightColor();
+    method public int getLockscreenVisibility();
+    method public CharSequence? getName();
+    method public String? getParentChannelId();
+    method public android.net.Uri? getSound();
+    method public long[]? getVibrationPattern();
+    method public boolean isImportantConversation();
+    method public boolean shouldShowLights();
+    method public boolean shouldVibrate();
+    method public androidx.core.app.NotificationChannelCompat.Builder toBuilder();
+    field public static final String DEFAULT_CHANNEL_ID = "miscellaneous";
+  }
+
+  public static class NotificationChannelCompat.Builder {
+    ctor public NotificationChannelCompat.Builder(String, int);
+    method public androidx.core.app.NotificationChannelCompat build();
+    method public androidx.core.app.NotificationChannelCompat.Builder setConversationId(String, String);
+    method public androidx.core.app.NotificationChannelCompat.Builder setDescription(String?);
+    method public androidx.core.app.NotificationChannelCompat.Builder setGroup(String?);
+    method public androidx.core.app.NotificationChannelCompat.Builder setImportance(int);
+    method public androidx.core.app.NotificationChannelCompat.Builder setLightColor(int);
+    method public androidx.core.app.NotificationChannelCompat.Builder setLightsEnabled(boolean);
+    method public androidx.core.app.NotificationChannelCompat.Builder setName(CharSequence?);
+    method public androidx.core.app.NotificationChannelCompat.Builder setShowBadge(boolean);
+    method public androidx.core.app.NotificationChannelCompat.Builder setSound(android.net.Uri?, android.media.AudioAttributes?);
+    method public androidx.core.app.NotificationChannelCompat.Builder setVibrationEnabled(boolean);
+    method public androidx.core.app.NotificationChannelCompat.Builder setVibrationPattern(long[]?);
+  }
+
+  public class NotificationChannelGroupCompat {
+    method public java.util.List<androidx.core.app.NotificationChannelCompat!> getChannels();
+    method public String? getDescription();
+    method public String getId();
+    method public CharSequence? getName();
+    method public boolean isBlocked();
+    method public androidx.core.app.NotificationChannelGroupCompat.Builder toBuilder();
+  }
+
+  public static class NotificationChannelGroupCompat.Builder {
+    ctor public NotificationChannelGroupCompat.Builder(String);
+    method public androidx.core.app.NotificationChannelGroupCompat build();
+    method public androidx.core.app.NotificationChannelGroupCompat.Builder setDescription(String?);
+    method public androidx.core.app.NotificationChannelGroupCompat.Builder setName(CharSequence?);
+  }
+
+  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 boolean getAutoCancel(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 public static int getColor(android.app.Notification);
+    method @RequiresApi(19) public static CharSequence? getContentInfo(android.app.Notification);
+    method @RequiresApi(19) public static CharSequence? getContentText(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 androidx.core.content.LocusIdCompat? getLocusId(android.app.Notification);
+    method public static boolean getOngoing(android.app.Notification);
+    method public static boolean getOnlyAlertOnce(android.app.Notification);
+    method public static java.util.List<androidx.core.app.Person!> getPeople(android.app.Notification);
+    method public static android.app.Notification? getPublicVersion(android.app.Notification);
+    method public static CharSequence? getSettingsText(android.app.Notification);
+    method public static String? getShortcutId(android.app.Notification);
+    method @RequiresApi(19) public static boolean getShowWhen(android.app.Notification);
+    method public static String? getSortKey(android.app.Notification);
+    method @RequiresApi(19) public static CharSequence? getSubText(android.app.Notification);
+    method public static long getTimeoutAfter(android.app.Notification);
+    method @RequiresApi(19) public static boolean getUsesChronometer(android.app.Notification);
+    method public static int getVisibility(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_LOCATION_SHARING = "location_sharing";
+    field public static final String CATEGORY_MESSAGE = "msg";
+    field public static final String CATEGORY_MISSED_CALL = "missed_call";
+    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_STOPWATCH = "stopwatch";
+    field public static final String CATEGORY_SYSTEM = "sys";
+    field public static final String CATEGORY_TRANSPORT = "transport";
+    field public static final String CATEGORY_WORKOUT = "workout";
+    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_CHANNEL_GROUP_ID = "android.intent.extra.CHANNEL_GROUP_ID";
+    field public static final String EXTRA_CHANNEL_ID = "android.intent.extra.CHANNEL_ID";
+    field public static final String EXTRA_CHRONOMETER_COUNT_DOWN = "android.chronometerCountDown";
+    field public static final String EXTRA_COLORIZED = "android.colorized";
+    field public static final String EXTRA_COMPACT_ACTIONS = "android.compactActions";
+    field public static final String EXTRA_COMPAT_TEMPLATE = "androidx.core.app.extra.COMPAT_TEMPLATE";
+    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_HISTORIC_MESSAGES = "android.messages.historic";
+    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_NOTIFICATION_ID = "android.intent.extra.NOTIFICATION_ID";
+    field public static final String EXTRA_NOTIFICATION_TAG = "android.intent.extra.NOTIFICATION_TAG";
+    field @Deprecated public static final String EXTRA_PEOPLE = "android.people";
+    field public static final String EXTRA_PEOPLE_LIST = "android.people.list";
+    field public static final String EXTRA_PICTURE = "android.picture";
+    field public static final String EXTRA_PICTURE_CONTENT_DESCRIPTION = "android.pictureContentDescription";
+    field public static final String EXTRA_PICTURE_ICON = "android.pictureIcon";
+    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_BIG_PICTURE_WHEN_COLLAPSED = "android.showBigPictureWhenCollapsed";
+    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 FOREGROUND_SERVICE_DEFAULT = 0; // 0x0
+    field public static final int FOREGROUND_SERVICE_DEFERRED = 2; // 0x2
+    field public static final int FOREGROUND_SERVICE_IMMEDIATE = 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 String INTENT_CATEGORY_NOTIFICATION_PREFERENCES = "android.intent.category.NOTIFICATION_PREFERENCES";
+    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 isAuthenticationRequired();
+    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 setAuthenticationRequired(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 @RequiresApi(31) public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.drawable.Icon?);
+    method public androidx.core.app.NotificationCompat.BigPictureStyle setBigContentTitle(CharSequence?);
+    method @RequiresApi(31) public androidx.core.app.NotificationCompat.BigPictureStyle setContentDescription(CharSequence?);
+    method public androidx.core.app.NotificationCompat.BigPictureStyle setSummaryText(CharSequence?);
+    method @RequiresApi(31) public androidx.core.app.NotificationCompat.BigPictureStyle showBigPictureWhenCollapsed(boolean);
+  }
+
+  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 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 String? getShortcutId();
+    method public boolean isNotificationSuppressed();
+    method public static android.app.Notification.BubbleMetadata? toPlatform(androidx.core.app.NotificationCompat.BubbleMetadata?);
+  }
+
+  public static final class NotificationCompat.BubbleMetadata.Builder {
+    ctor @Deprecated public NotificationCompat.BubbleMetadata.Builder();
+    ctor @RequiresApi(30) public NotificationCompat.BubbleMetadata.Builder(String);
+    ctor public NotificationCompat.BubbleMetadata.Builder(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat);
+    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 @RequiresApi(19) public NotificationCompat.Builder(android.content.Context, android.app.Notification);
+    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 @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 clearActions();
+    method public androidx.core.app.NotificationCompat.Builder clearInvisibleActions();
+    method public androidx.core.app.NotificationCompat.Builder clearPeople();
+    method public android.widget.RemoteViews? createBigContentView();
+    method public android.widget.RemoteViews? createContentView();
+    method public android.widget.RemoteViews? createHeadsUpContentView();
+    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 setForegroundServiceBehavior(int);
+    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 setLocusId(androidx.core.content.LocusIdCompat?);
+    method @Deprecated 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 setSettingsText(CharSequence?);
+    method public androidx.core.app.NotificationCompat.Builder setShortcutId(String?);
+    method public androidx.core.app.NotificationCompat.Builder setShortcutInfo(androidx.core.content.pm.ShortcutInfoCompat?);
+    method public androidx.core.app.NotificationCompat.Builder setShowWhen(boolean);
+    method public androidx.core.app.NotificationCompat.Builder setSilent(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?);
+    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 @Deprecated 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 public androidx.core.app.NotificationCompat.MessagingStyle addHistoricMessage(androidx.core.app.NotificationCompat.MessagingStyle.Message?);
+    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!> getHistoricMessages();
+    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 createNotificationChannel(androidx.core.app.NotificationChannelCompat);
+    method public void createNotificationChannelGroup(android.app.NotificationChannelGroup);
+    method public void createNotificationChannelGroup(androidx.core.app.NotificationChannelGroupCompat);
+    method public void createNotificationChannelGroups(java.util.List<android.app.NotificationChannelGroup!>);
+    method public void createNotificationChannelGroupsCompat(java.util.List<androidx.core.app.NotificationChannelGroupCompat!>);
+    method public void createNotificationChannels(java.util.List<android.app.NotificationChannel!>);
+    method public void createNotificationChannelsCompat(java.util.List<androidx.core.app.NotificationChannelCompat!>);
+    method public void deleteNotificationChannel(String);
+    method public void deleteNotificationChannelGroup(String);
+    method public void deleteUnlistedNotificationChannels(java.util.Collection<java.lang.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.NotificationChannel? getNotificationChannel(String, String);
+    method public androidx.core.app.NotificationChannelCompat? getNotificationChannelCompat(String);
+    method public androidx.core.app.NotificationChannelCompat? getNotificationChannelCompat(String, String);
+    method public android.app.NotificationChannelGroup? getNotificationChannelGroup(String);
+    method public androidx.core.app.NotificationChannelGroupCompat? getNotificationChannelGroupCompat(String);
+    method public java.util.List<android.app.NotificationChannelGroup!> getNotificationChannelGroups();
+    method public java.util.List<androidx.core.app.NotificationChannelGroupCompat!> getNotificationChannelGroupsCompat();
+    method public java.util.List<android.app.NotificationChannel!> getNotificationChannels();
+    method public java.util.List<androidx.core.app.NotificationChannelCompat!> getNotificationChannelsCompat();
+    method @RequiresPermission(android.Manifest.permission.POST_NOTIFICATIONS) public void notify(int, android.app.Notification);
+    method @RequiresPermission(android.Manifest.permission.POST_NOTIFICATIONS) 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 interface OnMultiWindowModeChangedProvider {
+    method public void addOnMultiWindowModeChangedListener(androidx.core.util.Consumer<androidx.core.app.MultiWindowModeChangedInfo!>);
+    method public void removeOnMultiWindowModeChangedListener(androidx.core.util.Consumer<androidx.core.app.MultiWindowModeChangedInfo!>);
+  }
+
+  public interface OnNewIntentProvider {
+    method public void addOnNewIntentListener(androidx.core.util.Consumer<android.content.Intent!>);
+    method public void removeOnNewIntentListener(androidx.core.util.Consumer<android.content.Intent!>);
+  }
+
+  public interface OnPictureInPictureModeChangedProvider {
+    method public void addOnPictureInPictureModeChangedListener(androidx.core.util.Consumer<androidx.core.app.PictureInPictureModeChangedInfo!>);
+    method public void removeOnPictureInPictureModeChangedListener(androidx.core.util.Consumer<androidx.core.app.PictureInPictureModeChangedInfo!>);
+  }
+
+  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 PictureInPictureModeChangedInfo {
+    ctor public PictureInPictureModeChangedInfo(boolean);
+    ctor @RequiresApi(26) public PictureInPictureModeChangedInfo(boolean, android.content.res.Configuration);
+    method @RequiresApi(26) public android.content.res.Configuration getNewConfig();
+    method public boolean isInPictureInPictureMode();
+  }
+
+  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 @Deprecated public static void configureMenuItem(android.view.MenuItem, androidx.core.app.ShareCompat.IntentBuilder);
+    method @Deprecated 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 {
+    ctor public ShareCompat.IntentBuilder(android.content.Context);
+    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 @Deprecated 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 {
+    ctor public ShareCompat.IntentReader(android.app.Activity);
+    ctor public ShareCompat.IntentReader(android.content.Context, android.content.Intent);
+    method @Deprecated 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 String? getAttributionTag(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 android.content.Intent? registerReceiver(android.content.Context, android.content.BroadcastReceiver?, android.content.IntentFilter, int);
+    method public static android.content.Intent? registerReceiver(android.content.Context, android.content.BroadcastReceiver?, android.content.IntentFilter, String?, android.os.Handler?, int);
+    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);
+    field public static final int RECEIVER_EXPORTED = 2; // 0x2
+    field public static final int RECEIVER_NOT_EXPORTED = 4; // 0x4
+    field public static final int RECEIVER_VISIBLE_TO_INSTANT_APPS = 1; // 0x1
+  }
+
+  public class FileProvider extends android.content.ContentProvider {
+    ctor public FileProvider();
+    ctor protected FileProvider(@XmlRes int);
+    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 static android.net.Uri getUriForFile(android.content.Context, String, java.io.File, String);
+    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 createManageUnusedAppRestrictionsIntent(android.content.Context, String);
+    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 class IntentSanitizer {
+    method public android.content.Intent sanitize(android.content.Intent, androidx.core.util.Consumer<java.lang.String!>);
+    method public android.content.Intent sanitizeByFiltering(android.content.Intent);
+    method public android.content.Intent sanitizeByThrowing(android.content.Intent);
+  }
+
+  public static final class IntentSanitizer.Builder {
+    ctor public IntentSanitizer.Builder();
+    method public androidx.core.content.IntentSanitizer.Builder allowAction(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowAction(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowAnyComponent();
+    method public androidx.core.content.IntentSanitizer.Builder allowCategory(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowCategory(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipData(androidx.core.util.Predicate<android.content.ClipData!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataText();
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataUri(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataUriWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponent(android.content.ComponentName);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponent(androidx.core.util.Predicate<android.content.ComponentName!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponentWithPackage(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowData(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowDataWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<?>);
+    method public <T> androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<T!>, androidx.core.util.Predicate<T!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, androidx.core.util.Predicate<java.lang.Object!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraOutput(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraOutput(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraStream(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraStreamUriWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowFlags(int);
+    method public androidx.core.content.IntentSanitizer.Builder allowHistoryStackFlags();
+    method public androidx.core.content.IntentSanitizer.Builder allowIdentifier();
+    method public androidx.core.content.IntentSanitizer.Builder allowPackage(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowPackage(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowReceiverFlags();
+    method public androidx.core.content.IntentSanitizer.Builder allowSelector();
+    method public androidx.core.content.IntentSanitizer.Builder allowSourceBounds();
+    method public androidx.core.content.IntentSanitizer.Builder allowType(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowType(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer build();
+  }
+
+  public final class LocusIdCompat {
+    ctor public LocusIdCompat(String);
+    method public String getId();
+    method @RequiresApi(29) public android.content.LocusId toLocusId();
+    method @RequiresApi(29) public static androidx.core.content.LocusIdCompat toLocusIdCompat(android.content.LocusId);
+  }
+
+  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 interface OnConfigurationChangedProvider {
+    method public void addOnConfigurationChangedListener(androidx.core.util.Consumer<android.content.res.Configuration!>);
+    method public void removeOnConfigurationChangedListener(androidx.core.util.Consumer<android.content.res.Configuration!>);
+  }
+
+  public interface OnTrimMemoryProvider {
+    method public void addOnTrimMemoryListener(androidx.core.util.Consumer<java.lang.Integer!>);
+    method public void removeOnTrimMemoryListener(androidx.core.util.Consumer<java.lang.Integer!>);
+  }
+
+  public final class PackageManagerCompat {
+    method public static com.google.common.util.concurrent.ListenableFuture<java.lang.Integer!> getUnusedAppRestrictionsStatus(android.content.Context);
+    field public static final String ACTION_PERMISSION_REVOCATION_SETTINGS = "android.intent.action.AUTO_REVOKE_PERMISSIONS";
+  }
+
+  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();
+  }
+
+  public class UnusedAppRestrictionsBackportCallback {
+    method public void onResult(boolean, boolean) throws android.os.RemoteException;
+  }
+
+  public abstract class UnusedAppRestrictionsBackportService extends android.app.Service {
+    ctor public UnusedAppRestrictionsBackportService();
+    method protected abstract void isPermissionRevocationEnabled(androidx.core.content.UnusedAppRestrictionsBackportCallback);
+    method public android.os.IBinder? onBind(android.content.Intent?);
+    field public static final String ACTION_UNUSED_APP_RESTRICTIONS_BACKPORT_CONNECTION = "android.support.unusedapprestrictions.action.CustomUnusedAppRestrictionsBackportService";
+  }
+
+  public final class UnusedAppRestrictionsConstants {
+    field public static final int API_30 = 4; // 0x4
+    field public static final int API_30_BACKPORT = 3; // 0x3
+    field public static final int API_31 = 5; // 0x5
+    field public static final int DISABLED = 2; // 0x2
+    field public static final int ERROR = 0; // 0x0
+    field public static final int FEATURE_NOT_AVAILABLE = 1; // 0x1
+  }
+
+  public class UriMatcherCompat {
+    method public static androidx.core.util.Predicate<android.net.Uri!> asPredicate(android.content.UriMatcher);
+  }
+
+}
+
+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);
+    method public static java.util.List<android.content.pm.Signature!> getSignatures(android.content.pm.PackageManager, String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public static boolean hasSignatures(android.content.pm.PackageManager, String, @Size(min=1) java.util.Map<byte[]!,java.lang.Integer!>, boolean) throws android.content.pm.PackageManager.NameNotFoundException;
+  }
+
+  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 int getDisabledReason();
+    method public int getExcludedFromSurfaces();
+    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 isExcludedFromSurfaces(int);
+    method public boolean isImmutable();
+    method public boolean isPinned();
+    method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
+    field public static final int SURFACE_LAUNCHER = 1; // 0x1
+  }
+
+  public static class ShortcutInfoCompat.Builder {
+    ctor public ShortcutInfoCompat.Builder(android.content.Context, String);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder addCapabilityBinding(String);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder addCapabilityBinding(String, String, java.util.List<java.lang.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 setExcludedFromSurfaces(int);
+    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![]);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIsConversation();
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLocusId(androidx.core.content.LocusIdCompat?);
+    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);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setSliceUri(android.net.Uri);
+  }
+
+  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
+  }
+
+}
+
+package androidx.core.content.res {
+
+  public final class ConfigurationHelper {
+    method public static int getDensityDpi(android.content.res.Resources);
+  }
+
+  public final class ResourcesCompat {
+    method public static void clearCachesForTheme(android.content.res.Resources.Theme);
+    method public static android.graphics.Typeface? getCachedFont(android.content.Context, @FontRes int) throws android.content.res.Resources.NotFoundException;
+    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 android.graphics.Bitmap createScaledBitmap(android.graphics.Bitmap, int, int, android.graphics.Rect?, boolean);
+    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=95.047) double, @FloatRange(from=0.0f, to=0x64) double, @FloatRange(from=0.0f, to=108.883) double);
+    method public static void XYZToLAB(@FloatRange(from=0.0f, to=95.047) double, @FloatRange(from=0.0f, to=0x64) double, @FloatRange(from=0.0f, to=108.883) 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 add(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+    method public static androidx.core.graphics.Insets max(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+    method public static androidx.core.graphics.Insets min(androidx.core.graphics.Insets, androidx.core.graphics.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 public static androidx.core.graphics.Insets subtract(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+    method @RequiresApi(api=29) public static androidx.core.graphics.Insets toCompatInsets(android.graphics.Insets);
+    method @RequiresApi(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);
+    method public static android.graphics.Typeface create(android.content.Context, android.graphics.Typeface?, @IntRange(from=1, to=1000) int, boolean);
+  }
+
+}
+
+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 @DrawableRes 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 abstract class GnssStatusCompat {
+    method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public abstract float getBasebandCn0DbHz(@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 hasBasebandCn0DbHz(@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 LocationCompat {
+    method public static float getBearingAccuracyDegrees(android.location.Location);
+    method public static long getElapsedRealtimeMillis(android.location.Location);
+    method public static long getElapsedRealtimeNanos(android.location.Location);
+    method @FloatRange(from=0.0) public static float getMslAltitudeAccuracyMeters(android.location.Location);
+    method public static double getMslAltitudeMeters(android.location.Location);
+    method public static float getSpeedAccuracyMetersPerSecond(android.location.Location);
+    method public static float getVerticalAccuracyMeters(android.location.Location);
+    method public static boolean hasBearingAccuracy(android.location.Location);
+    method public static boolean hasMslAltitude(android.location.Location);
+    method public static boolean hasMslAltitudeAccuracy(android.location.Location);
+    method public static boolean hasSpeedAccuracy(android.location.Location);
+    method public static boolean hasVerticalAccuracy(android.location.Location);
+    method public static boolean isMock(android.location.Location);
+    method public static void removeMslAltitude(android.location.Location);
+    method public static void removeMslAltitudeAccuracy(android.location.Location);
+    method public static void setBearingAccuracyDegrees(android.location.Location, float);
+    method public static void setMock(android.location.Location, boolean);
+    method public static void setMslAltitudeAccuracyMeters(android.location.Location, @FloatRange(from=0.0) float);
+    method public static void setMslAltitudeMeters(android.location.Location, double);
+    method public static void setSpeedAccuracyMetersPerSecond(android.location.Location, float);
+    method public static void setVerticalAccuracyMeters(android.location.Location, float);
+    field public static final String EXTRA_BEARING_ACCURACY = "bearingAccuracy";
+    field public static final String EXTRA_IS_MOCK = "mockLocation";
+    field public static final String EXTRA_MSL_ALTITUDE = "androidx.core.location.extra.MSL_ALTITUDE";
+    field public static final String EXTRA_MSL_ALTITUDE_ACCURACY = "androidx.core.location.extra.MSL_ALTITUDE_ACCURACY";
+    field public static final String EXTRA_SPEED_ACCURACY = "speedAccuracy";
+    field public static final String EXTRA_VERTICAL_ACCURACY = "verticalAccuracy";
+  }
+
+  public interface LocationListenerCompat extends android.location.LocationListener {
+    method public default void onStatusChanged(String, int, android.os.Bundle?);
+  }
+
+  public final class LocationManagerCompat {
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public static void getCurrentLocation(android.location.LocationManager, String, androidx.core.os.CancellationSignal?, java.util.concurrent.Executor, androidx.core.util.Consumer<android.location.Location!>);
+    method public static String? getGnssHardwareModelName(android.location.LocationManager);
+    method public static int getGnssYearOfHardware(android.location.LocationManager);
+    method public static boolean hasProvider(android.location.LocationManager, String);
+    method public static boolean isLocationEnabled(android.location.LocationManager);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssMeasurementsCallback(android.location.LocationManager, android.location.GnssMeasurementsEvent.Callback, android.os.Handler);
+    method @RequiresApi(android.os.Build.VERSION_CODES.R) @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssMeasurementsCallback(android.location.LocationManager, java.util.concurrent.Executor, android.location.GnssMeasurementsEvent.Callback);
+    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 @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public static void removeUpdates(android.location.LocationManager, androidx.core.location.LocationListenerCompat);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public static void requestLocationUpdates(android.location.LocationManager, String, androidx.core.location.LocationRequestCompat, java.util.concurrent.Executor, androidx.core.location.LocationListenerCompat);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public static void requestLocationUpdates(android.location.LocationManager, String, androidx.core.location.LocationRequestCompat, androidx.core.location.LocationListenerCompat, android.os.Looper);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) public static void unregisterGnssMeasurementsCallback(android.location.LocationManager, android.location.GnssMeasurementsEvent.Callback);
+    method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
+  }
+
+  public final class LocationRequestCompat {
+    method @IntRange(from=1) public long getDurationMillis();
+    method @IntRange(from=0) public long getIntervalMillis();
+    method @IntRange(from=0) public long getMaxUpdateDelayMillis();
+    method @IntRange(from=1, to=java.lang.Integer.MAX_VALUE) public int getMaxUpdates();
+    method @FloatRange(from=0, to=java.lang.Float.MAX_VALUE) public float getMinUpdateDistanceMeters();
+    method @IntRange(from=0) public long getMinUpdateIntervalMillis();
+    method public int getQuality();
+    method @RequiresApi(31) public android.location.LocationRequest toLocationRequest();
+    method @RequiresApi(19) public android.location.LocationRequest? toLocationRequest(String);
+    field public static final long PASSIVE_INTERVAL = 9223372036854775807L; // 0x7fffffffffffffffL
+    field public static final int QUALITY_BALANCED_POWER_ACCURACY = 102; // 0x66
+    field public static final int QUALITY_HIGH_ACCURACY = 100; // 0x64
+    field public static final int QUALITY_LOW_POWER = 104; // 0x68
+  }
+
+  public static final class LocationRequestCompat.Builder {
+    ctor public LocationRequestCompat.Builder(long);
+    ctor public LocationRequestCompat.Builder(androidx.core.location.LocationRequestCompat);
+    method public androidx.core.location.LocationRequestCompat build();
+    method public androidx.core.location.LocationRequestCompat.Builder clearMinUpdateIntervalMillis();
+    method public androidx.core.location.LocationRequestCompat.Builder setDurationMillis(@IntRange(from=1) long);
+    method public androidx.core.location.LocationRequestCompat.Builder setIntervalMillis(@IntRange(from=0) long);
+    method public androidx.core.location.LocationRequestCompat.Builder setMaxUpdateDelayMillis(@IntRange(from=0) long);
+    method public androidx.core.location.LocationRequestCompat.Builder setMaxUpdates(@IntRange(from=1, to=java.lang.Integer.MAX_VALUE) int);
+    method public androidx.core.location.LocationRequestCompat.Builder setMinUpdateDistanceMeters(@FloatRange(from=0, to=java.lang.Float.MAX_VALUE) float);
+    method public androidx.core.location.LocationRequestCompat.Builder setMinUpdateIntervalMillis(@IntRange(from=0) long);
+    method public androidx.core.location.LocationRequestCompat.Builder setQuality(int);
+  }
+
+}
+
+package androidx.core.math {
+
+  public class MathUtils {
+    method public static int addExact(int, int);
+    method public static long addExact(long, long);
+    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);
+    method public static int decrementExact(int);
+    method public static long decrementExact(long);
+    method public static int incrementExact(int);
+    method public static long incrementExact(long);
+    method public static int multiplyExact(int, int);
+    method public static long multiplyExact(long, long);
+    method public static int negateExact(int);
+    method public static long negateExact(long);
+    method public static int subtractExact(int, int);
+    method public static long subtractExact(long, long);
+    method public static int toIntExact(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 MailTo {
+    method public String? getBcc();
+    method public String? getBody();
+    method public String? getCc();
+    method public java.util.Map<java.lang.String!,java.lang.String!>? getHeaders();
+    method public String? getSubject();
+    method public String? getTo();
+    method public static boolean isMailTo(String?);
+    method public static boolean isMailTo(android.net.Uri?);
+    method public static androidx.core.net.MailTo parse(String) throws androidx.core.net.ParseException;
+    method public static androidx.core.net.MailTo parse(android.net.Uri) throws androidx.core.net.ParseException;
+    field public static final String MAILTO_SCHEME = "mailto:";
+  }
+
+  public class ParseException extends java.lang.RuntimeException {
+    field public final String response;
+  }
+
+  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 @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.N) public static boolean isAtLeastN();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.N_MR1) public static boolean isAtLeastNMR1();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.O) public static boolean isAtLeastO();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.O_MR1) public static boolean isAtLeastOMR1();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.P) public static boolean isAtLeastP();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.Q) public static boolean isAtLeastQ();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.R) public static boolean isAtLeastR();
+    method @Deprecated @ChecksSdkIntAtLeast(api=31, codename="S") public static boolean isAtLeastS();
+    method @Deprecated @ChecksSdkIntAtLeast(api=32, codename="Sv2") @androidx.core.os.BuildCompat.PrereleaseSdkCheck public static boolean isAtLeastSv2();
+    method @ChecksSdkIntAtLeast(api=33, codename="Tiramisu") @androidx.core.os.BuildCompat.PrereleaseSdkCheck public static boolean isAtLeastT();
+    method @ChecksSdkIntAtLeast(codename="UpsideDownCake") @androidx.core.os.BuildCompat.PrereleaseSdkCheck public static boolean isAtLeastU();
+  }
+
+  @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public static @interface BuildCompat.PrereleaseSdkCheck {
+  }
+
+  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 ExecutorCompat {
+    method public static java.util.concurrent.Executor create(android.os.Handler);
+  }
+
+  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 @RequiresApi(16) public static boolean hasCallbacks(android.os.Handler, Runnable);
+    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 @RequiresApi(21) public static boolean matchesLanguageAndScript(java.util.Locale, java.util.Locale);
+    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 <T> T![]? readArray(android.os.Parcel, ClassLoader?, Class<T!>);
+    method public static <T> java.util.ArrayList<T!>? readArrayList(android.os.Parcel, ClassLoader?, Class<? extends T>);
+    method public static boolean readBoolean(android.os.Parcel);
+    method public static <K, V> java.util.HashMap<K!,V!>? readHashMap(android.os.Parcel, ClassLoader?, Class<? extends K>, Class<? extends V>);
+    method public static <T> void readList(android.os.Parcel, java.util.List<? super T>, ClassLoader?, Class<T!>);
+    method public static <K, V> void readMap(android.os.Parcel, java.util.Map<? super K,? super V>, ClassLoader?, Class<K!>, Class<V!>);
+    method public static <T extends android.os.Parcelable> T? readParcelable(android.os.Parcel, ClassLoader?, Class<T!>);
+    method public static <T> T![]? readParcelableArray(android.os.Parcel, ClassLoader?, Class<T!>);
+    method @RequiresApi(30) public static <T> android.os.Parcelable.Creator<T!>? readParcelableCreator(android.os.Parcel, ClassLoader?, Class<T!>);
+    method @RequiresApi(api=android.os.Build.VERSION_CODES.Q) public static <T> java.util.List<T!> readParcelableList(android.os.Parcel, java.util.List<T!>, ClassLoader?, Class<T!>);
+    method public static <T extends java.io.Serializable> T? readSerializable(android.os.Parcel, ClassLoader?, Class<T!>);
+    method public static <T> android.util.SparseArray<T!>? readSparseArray(android.os.Parcel, ClassLoader?, Class<? extends T>);
+    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 ProcessCompat {
+    method public static boolean isApplicationUid(int);
+  }
+
+  @Deprecated public final class TraceCompat {
+    method @Deprecated public static void beginAsyncSection(String, int);
+    method @Deprecated public static void beginSection(String);
+    method @Deprecated public static void endAsyncSection(String, int);
+    method @Deprecated public static void endSection();
+    method @Deprecated public static boolean isEnabled();
+    method @Deprecated public static void setCounter(String, int);
+  }
+
+  @RequiresApi(17) public class UserHandleCompat {
+    method public static android.os.UserHandle getUserHandleForUid(int);
+  }
+
+  public class UserManagerCompat {
+    method public static boolean isUserUnlocked(android.content.Context);
+  }
+
+}
+
+package androidx.core.provider {
+
+  public final class DocumentsContractCompat {
+    method public static android.net.Uri? buildChildDocumentsUri(String, String?);
+    method public static android.net.Uri? buildChildDocumentsUriUsingTree(android.net.Uri, String);
+    method public static android.net.Uri? buildDocumentUri(String, String);
+    method public static android.net.Uri? buildDocumentUriUsingTree(android.net.Uri, String);
+    method public static android.net.Uri? buildTreeDocumentUri(String, String);
+    method public static android.net.Uri? createDocument(android.content.ContentResolver, android.net.Uri, String, String) throws java.io.FileNotFoundException;
+    method public static String? getDocumentId(android.net.Uri);
+    method public static String? getTreeDocumentId(android.net.Uri);
+    method public static boolean isDocumentUri(android.content.Context, android.net.Uri?);
+    method public static boolean isTreeUri(android.net.Uri);
+    method public static boolean removeDocument(android.content.ContentResolver, android.net.Uri, android.net.Uri) throws java.io.FileNotFoundException;
+    method public static android.net.Uri? renameDocument(android.content.ContentResolver, android.net.Uri, String) throws java.io.FileNotFoundException;
+  }
+
+  public static final class DocumentsContractCompat.DocumentCompat {
+    field public static final int FLAG_VIRTUAL_DOCUMENT = 512; // 0x200
+  }
+
+  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 {
+
+  @RequiresApi(22) public class SubscriptionManagerCompat {
+    method public static int getSlotIndex(int);
+  }
+
+  public class TelephonyManagerCompat {
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public static String? getImei(android.telephony.TelephonyManager);
+    method public static int getSubscriptionId(android.telephony.TelephonyManager);
+  }
+
+}
+
+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?);
+    method public static <T> T requireNonNull(T?);
+    method public static <T> T requireNonNull(T?, String);
+    method public static String? toString(Object?, String?);
+  }
+
+  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 default androidx.core.util.Predicate<T!>! and(androidx.core.util.Predicate<? super T>!);
+    method public static <T> androidx.core.util.Predicate<T!>! isEqual(Object!);
+    method public default androidx.core.util.Predicate<T!>! negate();
+    method public static <T> androidx.core.util.Predicate<T!>! not(androidx.core.util.Predicate<? super T>!);
+    method public default androidx.core.util.Predicate<T!>! or(androidx.core.util.Predicate<? super T>!);
+    method public boolean test(T!);
+  }
+
+  public final class SizeFCompat {
+    ctor public SizeFCompat(float, float);
+    method public float getHeight();
+    method public float getWidth();
+    method @RequiresApi(21) public android.util.SizeF toSizeF();
+    method @RequiresApi(21) public static androidx.core.util.SizeFCompat toSizeFCompat(android.util.SizeF);
+  }
+
+  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 ContentInfoCompat {
+    method public android.content.ClipData getClip();
+    method public android.os.Bundle? getExtras();
+    method public int getFlags();
+    method public android.net.Uri? getLinkUri();
+    method public int getSource();
+    method public android.util.Pair<androidx.core.view.ContentInfoCompat!,androidx.core.view.ContentInfoCompat!> partition(androidx.core.util.Predicate<android.content.ClipData.Item!>);
+    method @RequiresApi(31) public static android.util.Pair<android.view.ContentInfo!,android.view.ContentInfo!> partition(android.view.ContentInfo, java.util.function.Predicate<android.content.ClipData.Item!>);
+    method @RequiresApi(31) public android.view.ContentInfo toContentInfo();
+    method @RequiresApi(31) public static androidx.core.view.ContentInfoCompat toContentInfoCompat(android.view.ContentInfo);
+    field public static final int FLAG_CONVERT_TO_PLAIN_TEXT = 1; // 0x1
+    field public static final int SOURCE_APP = 0; // 0x0
+    field public static final int SOURCE_AUTOFILL = 4; // 0x4
+    field public static final int SOURCE_CLIPBOARD = 1; // 0x1
+    field public static final int SOURCE_DRAG_AND_DROP = 3; // 0x3
+    field public static final int SOURCE_INPUT_METHOD = 2; // 0x2
+    field public static final int SOURCE_PROCESS_TEXT = 5; // 0x5
+  }
+
+  public static final class ContentInfoCompat.Builder {
+    ctor public ContentInfoCompat.Builder(androidx.core.view.ContentInfoCompat);
+    ctor public ContentInfoCompat.Builder(android.content.ClipData, int);
+    method public androidx.core.view.ContentInfoCompat build();
+    method public androidx.core.view.ContentInfoCompat.Builder setClip(android.content.ClipData);
+    method public androidx.core.view.ContentInfoCompat.Builder setExtras(android.os.Bundle?);
+    method public androidx.core.view.ContentInfoCompat.Builder setFlags(int);
+    method public androidx.core.view.ContentInfoCompat.Builder setLinkUri(android.net.Uri?);
+    method public androidx.core.view.ContentInfoCompat.Builder setSource(int);
+  }
+
+  public final class DisplayCompat {
+    method public static androidx.core.view.DisplayCompat.ModeCompat getMode(android.content.Context, android.view.Display);
+    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 @Deprecated 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!>?);
+    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 {
+    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 interface MenuHost {
+    method public void addMenuProvider(androidx.core.view.MenuProvider);
+    method public void addMenuProvider(androidx.core.view.MenuProvider, androidx.lifecycle.LifecycleOwner);
+    method public void addMenuProvider(androidx.core.view.MenuProvider, androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.State);
+    method public void invalidateMenu();
+    method public void removeMenuProvider(androidx.core.view.MenuProvider);
+  }
+
+  public class MenuHostHelper {
+    ctor public MenuHostHelper(Runnable);
+    method public void addMenuProvider(androidx.core.view.MenuProvider);
+    method public void addMenuProvider(androidx.core.view.MenuProvider, androidx.lifecycle.LifecycleOwner);
+    method public void addMenuProvider(androidx.core.view.MenuProvider, androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.State);
+    method public void onCreateMenu(android.view.Menu, android.view.MenuInflater);
+    method public void onMenuClosed(android.view.Menu);
+    method public boolean onMenuItemSelected(android.view.MenuItem);
+    method public void onPrepareMenu(android.view.Menu);
+    method public void removeMenuProvider(androidx.core.view.MenuProvider);
+  }
+
+  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 interface MenuProvider {
+    method public void onCreateMenu(android.view.Menu, android.view.MenuInflater);
+    method public default void onMenuClosed(android.view.Menu);
+    method public boolean onMenuItemSelected(android.view.MenuItem);
+    method public default void onPrepareMenu(android.view.Menu);
+  }
+
+  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 interface OnReceiveContentListener {
+    method public androidx.core.view.ContentInfoCompat? onReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
+  }
+
+  public interface OnReceiveContentViewBehavior {
+    method public androidx.core.view.ContentInfoCompat? onReceiveContent(androidx.core.view.ContentInfoCompat);
+  }
+
+  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 @Deprecated 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 public static String![]? getOnReceiveContentMimeTypes(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 @UiThread public static 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!);
+    method @Deprecated public static float getTranslationY(android.view.View!);
+    method public static float getTranslationZ(android.view.View);
+    method @Deprecated public static androidx.core.view.WindowInsetsControllerCompat? getWindowInsetsController(android.view.View);
+    method @Deprecated 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 androidx.core.view.ContentInfoCompat? performReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
+    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 @UiThread 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 public static void setOnReceiveContentListener(android.view.View, String![]?, androidx.core.view.OnReceiveContentListener?);
+    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 @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?);
+    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 public static void setWindowInsetsAnimationCallback(android.view.View, androidx.core.view.WindowInsetsAnimationCompat.Callback?);
+    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 androidx.core.view.WindowInsetsControllerCompat getInsetsController(android.view.Window, android.view.View);
+    method public static <T extends android.view.View> T requireViewById(android.view.Window, @IdRes int);
+    method public static void setDecorFitsSystemWindows(android.view.Window, boolean);
+    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 final class WindowInsetsAnimationCompat {
+    ctor public WindowInsetsAnimationCompat(int, android.view.animation.Interpolator?, long);
+    method @FloatRange(from=0.0f, to=1.0f) public float getAlpha();
+    method public long getDurationMillis();
+    method @FloatRange(from=0.0f, to=1.0f) public float getFraction();
+    method public float getInterpolatedFraction();
+    method public android.view.animation.Interpolator? getInterpolator();
+    method public int getTypeMask();
+    method public void setAlpha(@FloatRange(from=0.0f, to=1.0f) float);
+    method public void setFraction(@FloatRange(from=0.0f, to=1.0f) float);
+  }
+
+  public static final class WindowInsetsAnimationCompat.BoundsCompat {
+    ctor public WindowInsetsAnimationCompat.BoundsCompat(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+    method public androidx.core.graphics.Insets getLowerBound();
+    method public androidx.core.graphics.Insets getUpperBound();
+    method public androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat inset(androidx.core.graphics.Insets);
+    method @RequiresApi(30) public android.view.WindowInsetsAnimation.Bounds toBounds();
+    method @RequiresApi(30) public static androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat toBoundsCompat(android.view.WindowInsetsAnimation.Bounds);
+  }
+
+  public abstract static class WindowInsetsAnimationCompat.Callback {
+    ctor public WindowInsetsAnimationCompat.Callback(int);
+    method public final int getDispatchMode();
+    method public void onEnd(androidx.core.view.WindowInsetsAnimationCompat);
+    method public void onPrepare(androidx.core.view.WindowInsetsAnimationCompat);
+    method public abstract androidx.core.view.WindowInsetsCompat onProgress(androidx.core.view.WindowInsetsCompat, java.util.List<androidx.core.view.WindowInsetsAnimationCompat!>);
+    method public androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat onStart(androidx.core.view.WindowInsetsAnimationCompat, androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat);
+    field public static final int DISPATCH_MODE_CONTINUE_ON_SUBTREE = 1; // 0x1
+    field public static final int DISPATCH_MODE_STOP = 0; // 0x0
+  }
+
+  public interface WindowInsetsAnimationControlListenerCompat {
+    method public void onCancelled(androidx.core.view.WindowInsetsAnimationControllerCompat?);
+    method public void onFinished(androidx.core.view.WindowInsetsAnimationControllerCompat);
+    method public void onReady(androidx.core.view.WindowInsetsAnimationControllerCompat, int);
+  }
+
+  public final class WindowInsetsAnimationControllerCompat {
+    method public void finish(boolean);
+    method public float getCurrentAlpha();
+    method @FloatRange(from=0.0f, to=1.0f) public float getCurrentFraction();
+    method public androidx.core.graphics.Insets getCurrentInsets();
+    method public androidx.core.graphics.Insets getHiddenStateInsets();
+    method public androidx.core.graphics.Insets getShownStateInsets();
+    method public int getTypes();
+    method public boolean isCancelled();
+    method public boolean isFinished();
+    method public boolean isReady();
+    method public void setInsetsAndAlpha(androidx.core.graphics.Insets?, @FloatRange(from=0.0f, to=1.0f) float, @FloatRange(from=0.0f, to=1.0f) float);
+  }
+
+  public class WindowInsetsCompat {
+    ctor public WindowInsetsCompat(androidx.core.view.WindowInsetsCompat?);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat consumeDisplayCutout();
+    method @Deprecated public androidx.core.view.WindowInsetsCompat consumeStableInsets();
+    method @Deprecated public androidx.core.view.WindowInsetsCompat consumeSystemWindowInsets();
+    method public androidx.core.view.DisplayCutoutCompat? getDisplayCutout();
+    method public androidx.core.graphics.Insets getInsets(int);
+    method public androidx.core.graphics.Insets getInsetsIgnoringVisibility(int);
+    method @Deprecated public androidx.core.graphics.Insets getMandatorySystemGestureInsets();
+    method @Deprecated public int getStableInsetBottom();
+    method @Deprecated public int getStableInsetLeft();
+    method @Deprecated public int getStableInsetRight();
+    method @Deprecated public int getStableInsetTop();
+    method @Deprecated public androidx.core.graphics.Insets getStableInsets();
+    method @Deprecated public androidx.core.graphics.Insets getSystemGestureInsets();
+    method @Deprecated public int getSystemWindowInsetBottom();
+    method @Deprecated public int getSystemWindowInsetLeft();
+    method @Deprecated public int getSystemWindowInsetRight();
+    method @Deprecated public int getSystemWindowInsetTop();
+    method @Deprecated public androidx.core.graphics.Insets getSystemWindowInsets();
+    method @Deprecated public androidx.core.graphics.Insets getTappableElementInsets();
+    method public boolean hasInsets();
+    method @Deprecated public boolean hasStableInsets();
+    method @Deprecated 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 public boolean isVisible(int);
+    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);
+    method @RequiresApi(20) public static androidx.core.view.WindowInsetsCompat toWindowInsetsCompat(android.view.WindowInsets, android.view.View?);
+    field 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 setInsets(int, androidx.core.graphics.Insets);
+    method public androidx.core.view.WindowInsetsCompat.Builder setInsetsIgnoringVisibility(int, androidx.core.graphics.Insets);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setMandatorySystemGestureInsets(androidx.core.graphics.Insets);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setStableInsets(androidx.core.graphics.Insets);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setSystemGestureInsets(androidx.core.graphics.Insets);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setSystemWindowInsets(androidx.core.graphics.Insets);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setTappableElementInsets(androidx.core.graphics.Insets);
+    method public androidx.core.view.WindowInsetsCompat.Builder setVisible(int, boolean);
+  }
+
+  public static final class WindowInsetsCompat.Type {
+    method public static int captionBar();
+    method public static int displayCutout();
+    method public static int ime();
+    method public static int mandatorySystemGestures();
+    method public static int navigationBars();
+    method public static int statusBars();
+    method public static int systemBars();
+    method public static int systemGestures();
+    method public static int tappableElement();
+  }
+
+  public final class WindowInsetsControllerCompat {
+    ctor public WindowInsetsControllerCompat(android.view.Window, android.view.View);
+    method public void addOnControllableInsetsChangedListener(androidx.core.view.WindowInsetsControllerCompat.OnControllableInsetsChangedListener);
+    method public void controlWindowInsetsAnimation(int, long, android.view.animation.Interpolator?, android.os.CancellationSignal?, androidx.core.view.WindowInsetsAnimationControlListenerCompat);
+    method public int getSystemBarsBehavior();
+    method public void hide(int);
+    method public boolean isAppearanceLightNavigationBars();
+    method public boolean isAppearanceLightStatusBars();
+    method public void removeOnControllableInsetsChangedListener(androidx.core.view.WindowInsetsControllerCompat.OnControllableInsetsChangedListener);
+    method public void setAppearanceLightNavigationBars(boolean);
+    method public void setAppearanceLightStatusBars(boolean);
+    method public void setSystemBarsBehavior(int);
+    method public void show(int);
+    method @Deprecated @RequiresApi(30) public static androidx.core.view.WindowInsetsControllerCompat toWindowInsetsControllerCompat(android.view.WindowInsetsController);
+    field public static final int BEHAVIOR_SHOW_BARS_BY_SWIPE = 1; // 0x1
+    field public static final int BEHAVIOR_SHOW_BARS_BY_TOUCH = 0; // 0x0
+    field public static final int BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE = 2; // 0x2
+  }
+
+  public static interface WindowInsetsControllerCompat.OnControllableInsetsChangedListener {
+    method public void onControllableInsetsChanged(androidx.core.view.WindowInsetsControllerCompat, int);
+  }
+
+}
+
+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_DRAG_CANCELLED = 512; // 0x200
+    field public static final int CONTENT_CHANGE_TYPE_DRAG_DROPPED = 256; // 0x100
+    field public static final int CONTENT_CHANGE_TYPE_DRAG_STARTED = 128; // 0x80
+    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
+    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 @Deprecated public int getActions();
+    method public java.util.List<java.lang.String!> getAvailableExtraData();
+    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.view.accessibility.AccessibilityNodeInfo.ExtraRenderingInfo? getExtraRenderingInfo();
+    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? getStateDescription();
+    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? getUniqueId();
+    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 isTextSelectable();
+    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 public void setAvailableExtraData(java.util.List<java.lang.String!>);
+    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 setStateDescription(CharSequence?);
+    method public void setText(CharSequence!);
+    method public void setTextEntryKey(boolean);
+    method public void setTextSelectable(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 setUniqueId(String?);
+    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_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";
+    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 String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH = "android.core.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH";
+    field public static final int EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_MAX_LENGTH = 20000; // 0x4e20
+    field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX = "android.core.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX";
+    field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_KEY = "android.core.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_KEY";
+    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_DRAG_CANCEL;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_DRAG_DROP;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_DRAG_START;
+    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;
+    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_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;
+    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_TEXT_SUGGESTIONS;
+    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 void addExtraDataToAccessibilityNodeInfo(int, androidx.core.view.accessibility.AccessibilityNodeInfoCompat, String, android.os.Bundle?);
+    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 getDisplayId();
+    method public int getId();
+    method public int getLayer();
+    method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat? getParent();
+    method public void getRegionInScreen(android.graphics.Region);
+    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 boolean isInPictureInPictureMode();
+    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();
+    method public android.view.accessibility.AccessibilityWindowInfo? unwrap();
+    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 CharSequence? getInitialSelectedText(android.view.inputmethod.EditorInfo, int);
+    method public static CharSequence? getInitialTextAfterCursor(android.view.inputmethod.EditorInfo, int, int);
+    method public static CharSequence? getInitialTextBeforeCursor(android.view.inputmethod.EditorInfo, int, int);
+    method public static void setContentMimeTypes(android.view.inputmethod.EditorInfo, String![]?);
+    method public static void setInitialSurroundingSubText(android.view.inputmethod.EditorInfo, CharSequence, int);
+    method public static void setInitialSurroundingText(android.view.inputmethod.EditorInfo, CharSequence);
+    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 @Deprecated public static android.view.inputmethod.InputConnection createWrapper(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, androidx.core.view.inputmethod.InputConnectionCompat.OnCommitContentListener);
+    method public static android.view.inputmethod.InputConnection createWrapper(android.view.View, android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
+    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 CheckedTextViewCompat {
+    method public static android.graphics.drawable.Drawable? getCheckMarkDrawable(android.widget.CheckedTextView);
+    method public static android.content.res.ColorStateList? getCheckMarkTintList(android.widget.CheckedTextView);
+    method public static android.graphics.PorterDuff.Mode? getCheckMarkTintMode(android.widget.CheckedTextView);
+    method public static void setCheckMarkTintList(android.widget.CheckedTextView, android.content.res.ColorStateList?);
+    method public static void setCheckMarkTintMode(android.widget.CheckedTextView, android.graphics.PorterDuff.Mode?);
+  }
+
+  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 public static android.widget.EdgeEffect create(android.content.Context, android.util.AttributeSet?);
+    method @Deprecated public boolean draw(android.graphics.Canvas!);
+    method @Deprecated public void finish();
+    method public static float getDistance(android.widget.EdgeEffect);
+    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 public static float onPullDistance(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_current.txt b/core/core/api/public_plus_experimental_current.txt
index 52f7cbc..e539396 100644
--- a/core/core/api/public_plus_experimental_current.txt
+++ b/core/core/api/public_plus_experimental_current.txt
@@ -1050,6 +1050,48 @@
     field public static final String EXTRA_TIME = "android.intent.extra.TIME";
   }
 
+  public class IntentSanitizer {
+    method public android.content.Intent sanitize(android.content.Intent, androidx.core.util.Consumer<java.lang.String!>);
+    method public android.content.Intent sanitizeByFiltering(android.content.Intent);
+    method public android.content.Intent sanitizeByThrowing(android.content.Intent);
+  }
+
+  public static final class IntentSanitizer.Builder {
+    ctor public IntentSanitizer.Builder();
+    method public androidx.core.content.IntentSanitizer.Builder allowAction(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowAction(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowAnyComponent();
+    method public androidx.core.content.IntentSanitizer.Builder allowCategory(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowCategory(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipData(androidx.core.util.Predicate<android.content.ClipData!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataText();
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataUri(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataUriWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponent(android.content.ComponentName);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponent(androidx.core.util.Predicate<android.content.ComponentName!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponentWithPackage(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowData(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowDataWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<?>);
+    method public <T> androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<T!>, androidx.core.util.Predicate<T!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, androidx.core.util.Predicate<java.lang.Object!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraOutput(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraOutput(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraStream(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraStreamUriWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowFlags(int);
+    method public androidx.core.content.IntentSanitizer.Builder allowHistoryStackFlags();
+    method public androidx.core.content.IntentSanitizer.Builder allowIdentifier();
+    method public androidx.core.content.IntentSanitizer.Builder allowPackage(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowPackage(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowReceiverFlags();
+    method public androidx.core.content.IntentSanitizer.Builder allowSelector();
+    method public androidx.core.content.IntentSanitizer.Builder allowSourceBounds();
+    method public androidx.core.content.IntentSanitizer.Builder allowType(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowType(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer build();
+  }
+
   public final class LocusIdCompat {
     ctor public LocusIdCompat(String);
     method public String getId();
@@ -1117,6 +1159,10 @@
     field public static final int FEATURE_NOT_AVAILABLE = 1; // 0x1
   }
 
+  public class UriMatcherCompat {
+    method public static androidx.core.util.Predicate<android.net.Uri!> asPredicate(android.content.UriMatcher);
+  }
+
 }
 
 package androidx.core.content.pm {
@@ -2115,6 +2161,11 @@
   }
 
   public interface Predicate<T> {
+    method public default androidx.core.util.Predicate<T!>! and(androidx.core.util.Predicate<? super T>!);
+    method public static <T> androidx.core.util.Predicate<T!>! isEqual(Object!);
+    method public default androidx.core.util.Predicate<T!>! negate();
+    method public static <T> androidx.core.util.Predicate<T!>! not(androidx.core.util.Predicate<? super T>!);
+    method public default androidx.core.util.Predicate<T!>! or(androidx.core.util.Predicate<? super T>!);
     method public boolean test(T!);
   }
 
@@ -3190,6 +3241,7 @@
     method public boolean isSelected();
     method public boolean isShowingHintText();
     method public boolean isTextEntryKey();
+    method public boolean isTextSelectable();
     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);
@@ -3252,6 +3304,7 @@
     method public void setStateDescription(CharSequence?);
     method public void setText(CharSequence!);
     method public void setTextEntryKey(boolean);
+    method public void setTextSelectable(boolean);
     method public void setTextSelection(int, int);
     method public void setTooltipText(CharSequence?);
     method public void setTouchDelegateInfo(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.TouchDelegateInfoCompat);
@@ -3356,6 +3409,7 @@
     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_TEXT_SUGGESTIONS;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SHOW_TOOLTIP;
   }
 
diff --git a/core/core/api/res-1.9.0-beta01.txt b/core/core/api/res-1.9.0-beta01.txt
new file mode 100644
index 0000000..dd913d3
--- /dev/null
+++ b/core/core/api/res-1.9.0-beta01.txt
@@ -0,0 +1,21 @@
+attr alpha
+attr font
+attr fontProviderAuthority
+attr fontProviderCerts
+attr fontProviderFetchStrategy
+attr fontProviderFetchTimeout
+attr fontProviderPackage
+attr fontProviderQuery
+attr fontProviderSystemFontFamily
+attr fontStyle
+attr fontVariationSettings
+attr fontWeight
+attr lStar
+attr queryPatterns
+attr shortcutMatchRequired
+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.9.0-beta01.txt b/core/core/api/restricted_1.9.0-beta01.txt
new file mode 100644
index 0000000..86dafe9
--- /dev/null
+++ b/core/core/api/restricted_1.9.0-beta01.txt
@@ -0,0 +1,4372 @@
+// Signature format: 4.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 boolean isLaunchedFromBubble(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 setLocusContext(android.app.Activity, androidx.core.content.LocusIdCompat?, android.os.Bundle?);
+    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 checkOrNoteProxyOp(android.content.Context, int, String, String);
+    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 protected final boolean shouldDumpInternalState(String![]?);
+    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 {
+  }
+
+  @Deprecated public abstract class JobIntentService extends android.app.Service {
+    ctor @Deprecated public JobIntentService();
+    method @Deprecated public static void enqueueWork(android.content.Context, Class<?>, int, android.content.Intent);
+    method @Deprecated public static void enqueueWork(android.content.Context, android.content.ComponentName, int, android.content.Intent);
+    method @Deprecated public boolean isStopped();
+    method @Deprecated public android.os.IBinder! onBind(android.content.Intent);
+    method @Deprecated protected abstract void onHandleWork(android.content.Intent);
+    method @Deprecated public boolean onStopCurrentWork();
+    method @Deprecated public void setInterruptIfStopped(boolean);
+  }
+
+  public final class LocaleManagerCompat {
+    method @AnyThread public static androidx.core.os.LocaleListCompat getSystemLocales(android.content.Context);
+  }
+
+  public final class MultiWindowModeChangedInfo {
+    ctor public MultiWindowModeChangedInfo(boolean);
+    ctor @RequiresApi(26) public MultiWindowModeChangedInfo(boolean, android.content.res.Configuration);
+    method @RequiresApi(26) public android.content.res.Configuration getNewConfig();
+    method public boolean isInMultiWindowMode();
+  }
+
+  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 NotificationChannelCompat {
+    method public boolean canBubble();
+    method public boolean canBypassDnd();
+    method public boolean canShowBadge();
+    method public android.media.AudioAttributes? getAudioAttributes();
+    method public String? getConversationId();
+    method public String? getDescription();
+    method public String? getGroup();
+    method public String getId();
+    method public int getImportance();
+    method public int getLightColor();
+    method @androidx.core.app.NotificationCompat.NotificationVisibility public int getLockscreenVisibility();
+    method public CharSequence? getName();
+    method public String? getParentChannelId();
+    method public android.net.Uri? getSound();
+    method public long[]? getVibrationPattern();
+    method public boolean isImportantConversation();
+    method public boolean shouldShowLights();
+    method public boolean shouldVibrate();
+    method public androidx.core.app.NotificationChannelCompat.Builder toBuilder();
+    field public static final String DEFAULT_CHANNEL_ID = "miscellaneous";
+  }
+
+  public static class NotificationChannelCompat.Builder {
+    ctor public NotificationChannelCompat.Builder(String, int);
+    method public androidx.core.app.NotificationChannelCompat build();
+    method public androidx.core.app.NotificationChannelCompat.Builder setConversationId(String, String);
+    method public androidx.core.app.NotificationChannelCompat.Builder setDescription(String?);
+    method public androidx.core.app.NotificationChannelCompat.Builder setGroup(String?);
+    method public androidx.core.app.NotificationChannelCompat.Builder setImportance(int);
+    method public androidx.core.app.NotificationChannelCompat.Builder setLightColor(int);
+    method public androidx.core.app.NotificationChannelCompat.Builder setLightsEnabled(boolean);
+    method public androidx.core.app.NotificationChannelCompat.Builder setName(CharSequence?);
+    method public androidx.core.app.NotificationChannelCompat.Builder setShowBadge(boolean);
+    method public androidx.core.app.NotificationChannelCompat.Builder setSound(android.net.Uri?, android.media.AudioAttributes?);
+    method public androidx.core.app.NotificationChannelCompat.Builder setVibrationEnabled(boolean);
+    method public androidx.core.app.NotificationChannelCompat.Builder setVibrationPattern(long[]?);
+  }
+
+  public class NotificationChannelGroupCompat {
+    method public java.util.List<androidx.core.app.NotificationChannelCompat!> getChannels();
+    method public String? getDescription();
+    method public String getId();
+    method public CharSequence? getName();
+    method public boolean isBlocked();
+    method public androidx.core.app.NotificationChannelGroupCompat.Builder toBuilder();
+  }
+
+  public static class NotificationChannelGroupCompat.Builder {
+    ctor public NotificationChannelGroupCompat.Builder(String);
+    method public androidx.core.app.NotificationChannelGroupCompat build();
+    method public androidx.core.app.NotificationChannelGroupCompat.Builder setDescription(String?);
+    method public androidx.core.app.NotificationChannelGroupCompat.Builder setName(CharSequence?);
+  }
+
+  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 boolean getAutoCancel(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 public static int getColor(android.app.Notification);
+    method @RequiresApi(19) public static CharSequence? getContentInfo(android.app.Notification);
+    method @RequiresApi(19) public static CharSequence? getContentText(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 androidx.core.content.LocusIdCompat? getLocusId(android.app.Notification);
+    method public static boolean getOngoing(android.app.Notification);
+    method public static boolean getOnlyAlertOnce(android.app.Notification);
+    method public static java.util.List<androidx.core.app.Person!> getPeople(android.app.Notification);
+    method public static android.app.Notification? getPublicVersion(android.app.Notification);
+    method public static CharSequence? getSettingsText(android.app.Notification);
+    method public static String? getShortcutId(android.app.Notification);
+    method @RequiresApi(19) public static boolean getShowWhen(android.app.Notification);
+    method public static String? getSortKey(android.app.Notification);
+    method @RequiresApi(19) public static CharSequence? getSubText(android.app.Notification);
+    method public static long getTimeoutAfter(android.app.Notification);
+    method @RequiresApi(19) public static boolean getUsesChronometer(android.app.Notification);
+    method @androidx.core.app.NotificationCompat.NotificationVisibility public static int getVisibility(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_LOCATION_SHARING = "location_sharing";
+    field public static final String CATEGORY_MESSAGE = "msg";
+    field public static final String CATEGORY_MISSED_CALL = "missed_call";
+    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_STOPWATCH = "stopwatch";
+    field public static final String CATEGORY_SYSTEM = "sys";
+    field public static final String CATEGORY_TRANSPORT = "transport";
+    field public static final String CATEGORY_WORKOUT = "workout";
+    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_CHANNEL_GROUP_ID = "android.intent.extra.CHANNEL_GROUP_ID";
+    field public static final String EXTRA_CHANNEL_ID = "android.intent.extra.CHANNEL_ID";
+    field public static final String EXTRA_CHRONOMETER_COUNT_DOWN = "android.chronometerCountDown";
+    field public static final String EXTRA_COLORIZED = "android.colorized";
+    field public static final String EXTRA_COMPACT_ACTIONS = "android.compactActions";
+    field public static final String EXTRA_COMPAT_TEMPLATE = "androidx.core.app.extra.COMPAT_TEMPLATE";
+    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_HISTORIC_MESSAGES = "android.messages.historic";
+    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_NOTIFICATION_ID = "android.intent.extra.NOTIFICATION_ID";
+    field public static final String EXTRA_NOTIFICATION_TAG = "android.intent.extra.NOTIFICATION_TAG";
+    field @Deprecated public static final String EXTRA_PEOPLE = "android.people";
+    field public static final String EXTRA_PEOPLE_LIST = "android.people.list";
+    field public static final String EXTRA_PICTURE = "android.picture";
+    field public static final String EXTRA_PICTURE_CONTENT_DESCRIPTION = "android.pictureContentDescription";
+    field public static final String EXTRA_PICTURE_ICON = "android.pictureIcon";
+    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_BIG_PICTURE_WHEN_COLLAPSED = "android.showBigPictureWhenCollapsed";
+    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 FOREGROUND_SERVICE_DEFAULT = 0; // 0x0
+    field public static final int FOREGROUND_SERVICE_DEFERRED = 2; // 0x2
+    field public static final int FOREGROUND_SERVICE_IMMEDIATE = 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 String INTENT_CATEGORY_NOTIFICATION_PREFERENCES = "android.intent.category.NOTIFICATION_PREFERENCES";
+    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 isAuthenticationRequired();
+    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 @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.app.NotificationCompat.Action.Builder fromAndroidAction(android.app.Notification.Action);
+    method public android.os.Bundle getExtras();
+    method public androidx.core.app.NotificationCompat.Action.Builder setAllowGeneratedReplies(boolean);
+    method public androidx.core.app.NotificationCompat.Action.Builder setAuthenticationRequired(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 @RequiresApi(31) public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.drawable.Icon?);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.graphics.drawable.IconCompat? getPictureIcon(android.os.Bundle?);
+    method public androidx.core.app.NotificationCompat.BigPictureStyle setBigContentTitle(CharSequence?);
+    method @RequiresApi(31) public androidx.core.app.NotificationCompat.BigPictureStyle setContentDescription(CharSequence?);
+    method public androidx.core.app.NotificationCompat.BigPictureStyle setSummaryText(CharSequence?);
+    method @RequiresApi(31) public androidx.core.app.NotificationCompat.BigPictureStyle showBigPictureWhenCollapsed(boolean);
+  }
+
+  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 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 String? getShortcutId();
+    method public boolean isNotificationSuppressed();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setFlags(int);
+    method public static android.app.Notification.BubbleMetadata? toPlatform(androidx.core.app.NotificationCompat.BubbleMetadata?);
+  }
+
+  public static final class NotificationCompat.BubbleMetadata.Builder {
+    ctor @Deprecated public NotificationCompat.BubbleMetadata.Builder();
+    ctor @RequiresApi(30) public NotificationCompat.BubbleMetadata.Builder(String);
+    ctor public NotificationCompat.BubbleMetadata.Builder(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat);
+    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 @RequiresApi(19) public NotificationCompat.Builder(android.content.Context, android.app.Notification);
+    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 @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 clearActions();
+    method public androidx.core.app.NotificationCompat.Builder clearInvisibleActions();
+    method public androidx.core.app.NotificationCompat.Builder clearPeople();
+    method public android.widget.RemoteViews? createBigContentView();
+    method public android.widget.RemoteViews? createContentView();
+    method public android.widget.RemoteViews? createHeadsUpContentView();
+    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 @ColorInt @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 int getForegroundServiceBehavior();
+    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 setForegroundServiceBehavior(@androidx.core.app.NotificationCompat.ServiceNotificationBehavior int);
+    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 setLocusId(androidx.core.content.LocusIdCompat?);
+    method @Deprecated 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 setSettingsText(CharSequence?);
+    method public androidx.core.app.NotificationCompat.Builder setShortcutId(String?);
+    method public androidx.core.app.NotificationCompat.Builder setShortcutInfo(androidx.core.content.pm.ShortcutInfoCompat?);
+    method public androidx.core.app.NotificationCompat.Builder setShowWhen(boolean);
+    method public androidx.core.app.NotificationCompat.Builder setSilent(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?);
+    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 @Deprecated 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;
+    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 {
+    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 public androidx.core.app.NotificationCompat.MessagingStyle addHistoricMessage(androidx.core.app.NotificationCompat.MessagingStyle.Message?);
+    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!> getHistoricMessages();
+    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({androidx.core.app.NotificationCompat.FOREGROUND_SERVICE_DEFAULT, androidx.core.app.NotificationCompat.FOREGROUND_SERVICE_IMMEDIATE, androidx.core.app.NotificationCompat.FOREGROUND_SERVICE_DEFERRED}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NotificationCompat.ServiceNotificationBehavior {
+  }
+
+  @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) protected void clearCompatExtraKeys(android.os.Bundle);
+    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 boolean displayCustomViewInline();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.app.NotificationCompat.Style? extractStyleFromNotification(android.app.Notification);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected String? getClassName();
+    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 createNotificationChannel(androidx.core.app.NotificationChannelCompat);
+    method public void createNotificationChannelGroup(android.app.NotificationChannelGroup);
+    method public void createNotificationChannelGroup(androidx.core.app.NotificationChannelGroupCompat);
+    method public void createNotificationChannelGroups(java.util.List<android.app.NotificationChannelGroup!>);
+    method public void createNotificationChannelGroupsCompat(java.util.List<androidx.core.app.NotificationChannelGroupCompat!>);
+    method public void createNotificationChannels(java.util.List<android.app.NotificationChannel!>);
+    method public void createNotificationChannelsCompat(java.util.List<androidx.core.app.NotificationChannelCompat!>);
+    method public void deleteNotificationChannel(String);
+    method public void deleteNotificationChannelGroup(String);
+    method public void deleteUnlistedNotificationChannels(java.util.Collection<java.lang.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.NotificationChannel? getNotificationChannel(String, String);
+    method public androidx.core.app.NotificationChannelCompat? getNotificationChannelCompat(String);
+    method public androidx.core.app.NotificationChannelCompat? getNotificationChannelCompat(String, String);
+    method public android.app.NotificationChannelGroup? getNotificationChannelGroup(String);
+    method public androidx.core.app.NotificationChannelGroupCompat? getNotificationChannelGroupCompat(String);
+    method public java.util.List<android.app.NotificationChannelGroup!> getNotificationChannelGroups();
+    method public java.util.List<androidx.core.app.NotificationChannelGroupCompat!> getNotificationChannelGroupsCompat();
+    method public java.util.List<android.app.NotificationChannel!> getNotificationChannels();
+    method public java.util.List<androidx.core.app.NotificationChannelCompat!> getNotificationChannelsCompat();
+    method @RequiresPermission(android.Manifest.permission.POST_NOTIFICATIONS) public void notify(int, android.app.Notification);
+    method @RequiresPermission(android.Manifest.permission.POST_NOTIFICATIONS) 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 interface OnMultiWindowModeChangedProvider {
+    method public void addOnMultiWindowModeChangedListener(androidx.core.util.Consumer<androidx.core.app.MultiWindowModeChangedInfo!>);
+    method public void removeOnMultiWindowModeChangedListener(androidx.core.util.Consumer<androidx.core.app.MultiWindowModeChangedInfo!>);
+  }
+
+  public interface OnNewIntentProvider {
+    method public void addOnNewIntentListener(androidx.core.util.Consumer<android.content.Intent!>);
+    method public void removeOnNewIntentListener(androidx.core.util.Consumer<android.content.Intent!>);
+  }
+
+  public interface OnPictureInPictureModeChangedProvider {
+    method public void addOnPictureInPictureModeChangedListener(androidx.core.util.Consumer<androidx.core.app.PictureInPictureModeChangedInfo!>);
+    method public void removeOnPictureInPictureModeChangedListener(androidx.core.util.Consumer<androidx.core.app.PictureInPictureModeChangedInfo!>);
+  }
+
+  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 @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();
+    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 PictureInPictureModeChangedInfo {
+    ctor public PictureInPictureModeChangedInfo(boolean);
+    ctor @RequiresApi(26) public PictureInPictureModeChangedInfo(boolean, android.content.res.Configuration);
+    method @RequiresApi(26) public android.content.res.Configuration getNewConfig();
+    method public boolean isInPictureInPictureMode();
+  }
+
+  @androidx.versionedparcelable.VersionedParcelize(jetifyAs="android.support.v4.app.RemoteActionCompat") 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) @androidx.versionedparcelable.ParcelField(4) public android.app.PendingIntent mActionIntent;
+    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @androidx.versionedparcelable.ParcelField(3) public CharSequence mContentDescription;
+    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @androidx.versionedparcelable.ParcelField(5) public boolean mEnabled;
+    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @androidx.versionedparcelable.ParcelField(1) public androidx.core.graphics.drawable.IconCompat mIcon;
+    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @androidx.versionedparcelable.ParcelField(6) public boolean mShouldShowIcon;
+    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @androidx.versionedparcelable.ParcelField(2) 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 @Deprecated public static void configureMenuItem(android.view.MenuItem, androidx.core.app.ShareCompat.IntentBuilder);
+    method @Deprecated 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 {
+    ctor public ShareCompat.IntentBuilder(android.content.Context);
+    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 @Deprecated 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 {
+    ctor public ShareCompat.IntentReader(android.app.Activity);
+    ctor public ShareCompat.IntentReader(android.content.Context, android.content.Intent);
+    method @Deprecated 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 String? getAttributionTag(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 android.content.Intent? registerReceiver(android.content.Context, android.content.BroadcastReceiver?, android.content.IntentFilter, int);
+    method public static android.content.Intent? registerReceiver(android.content.Context, android.content.BroadcastReceiver?, android.content.IntentFilter, String?, android.os.Handler?, int);
+    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);
+    field public static final int RECEIVER_EXPORTED = 2; // 0x2
+    field public static final int RECEIVER_NOT_EXPORTED = 4; // 0x4
+    field public static final int RECEIVER_VISIBLE_TO_INSTANT_APPS = 1; // 0x1
+  }
+
+  public class FileProvider extends android.content.ContentProvider {
+    ctor public FileProvider();
+    ctor protected FileProvider(@XmlRes int);
+    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 static android.net.Uri getUriForFile(android.content.Context, String, java.io.File, String);
+    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 createManageUnusedAppRestrictionsIntent(android.content.Context, String);
+    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 class IntentSanitizer {
+    method public android.content.Intent sanitize(android.content.Intent, androidx.core.util.Consumer<java.lang.String!>);
+    method public android.content.Intent sanitizeByFiltering(android.content.Intent);
+    method public android.content.Intent sanitizeByThrowing(android.content.Intent);
+  }
+
+  public static final class IntentSanitizer.Builder {
+    ctor public IntentSanitizer.Builder();
+    method public androidx.core.content.IntentSanitizer.Builder allowAction(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowAction(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowAnyComponent();
+    method public androidx.core.content.IntentSanitizer.Builder allowCategory(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowCategory(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipData(androidx.core.util.Predicate<android.content.ClipData!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataText();
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataUri(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataUriWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponent(android.content.ComponentName);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponent(androidx.core.util.Predicate<android.content.ComponentName!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponentWithPackage(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowData(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowDataWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<?>);
+    method public <T> androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<T!>, androidx.core.util.Predicate<T!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, androidx.core.util.Predicate<java.lang.Object!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraOutput(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraOutput(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraStream(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraStreamUriWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowFlags(int);
+    method public androidx.core.content.IntentSanitizer.Builder allowHistoryStackFlags();
+    method public androidx.core.content.IntentSanitizer.Builder allowIdentifier();
+    method public androidx.core.content.IntentSanitizer.Builder allowPackage(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowPackage(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowReceiverFlags();
+    method public androidx.core.content.IntentSanitizer.Builder allowSelector();
+    method public androidx.core.content.IntentSanitizer.Builder allowSourceBounds();
+    method public androidx.core.content.IntentSanitizer.Builder allowType(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowType(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer build();
+  }
+
+  public final class LocusIdCompat {
+    ctor public LocusIdCompat(String);
+    method public String getId();
+    method @RequiresApi(29) public android.content.LocusId toLocusId();
+    method @RequiresApi(29) public static androidx.core.content.LocusIdCompat toLocusIdCompat(android.content.LocusId);
+  }
+
+  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 interface OnConfigurationChangedProvider {
+    method public void addOnConfigurationChangedListener(androidx.core.util.Consumer<android.content.res.Configuration!>);
+    method public void removeOnConfigurationChangedListener(androidx.core.util.Consumer<android.content.res.Configuration!>);
+  }
+
+  public interface OnTrimMemoryProvider {
+    method public void addOnTrimMemoryListener(androidx.core.util.Consumer<java.lang.Integer!>);
+    method public void removeOnTrimMemoryListener(androidx.core.util.Consumer<java.lang.Integer!>);
+  }
+
+  public final class PackageManagerCompat {
+    method public static com.google.common.util.concurrent.ListenableFuture<java.lang.Integer!> getUnusedAppRestrictionsStatus(android.content.Context);
+    field public static final String ACTION_PERMISSION_REVOCATION_SETTINGS = "android.intent.action.AUTO_REVOKE_PERMISSIONS";
+  }
+
+  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();
+  }
+
+  public class UnusedAppRestrictionsBackportCallback {
+    method public void onResult(boolean, boolean) throws android.os.RemoteException;
+  }
+
+  public abstract class UnusedAppRestrictionsBackportService extends android.app.Service {
+    ctor public UnusedAppRestrictionsBackportService();
+    method protected abstract void isPermissionRevocationEnabled(androidx.core.content.UnusedAppRestrictionsBackportCallback);
+    method public android.os.IBinder? onBind(android.content.Intent?);
+    field public static final String ACTION_UNUSED_APP_RESTRICTIONS_BACKPORT_CONNECTION = "android.support.unusedapprestrictions.action.CustomUnusedAppRestrictionsBackportService";
+  }
+
+  public final class UnusedAppRestrictionsConstants {
+    field public static final int API_30 = 4; // 0x4
+    field public static final int API_30_BACKPORT = 3; // 0x3
+    field public static final int API_31 = 5; // 0x5
+    field public static final int DISABLED = 2; // 0x2
+    field public static final int ERROR = 0; // 0x0
+    field public static final int FEATURE_NOT_AVAILABLE = 1; // 0x1
+  }
+
+  public class UriMatcherCompat {
+    method public static androidx.core.util.Predicate<android.net.Uri!> asPredicate(android.content.UriMatcher);
+  }
+
+}
+
+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);
+    method public static java.util.List<android.content.pm.Signature!> getSignatures(android.content.pm.PackageManager, String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public static boolean hasSignatures(android.content.pm.PackageManager, String, @Size(min=1) java.util.Map<byte[]!,java.lang.Integer!>, boolean) throws android.content.pm.PackageManager.NameNotFoundException;
+  }
+
+  public final class PermissionInfoCompat {
+    method public static int getProtection(android.content.pm.PermissionInfo);
+    method public static int getProtectionFlags(android.content.pm.PermissionInfo);
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract class ShortcutInfoChangeListener {
+    ctor public ShortcutInfoChangeListener();
+    method @AnyThread public void onAllShortcutsRemoved();
+    method @AnyThread public void onShortcutAdded(java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
+    method @AnyThread public void onShortcutRemoved(java.util.List<java.lang.String!>);
+    method @AnyThread public void onShortcutUpdated(java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
+    method @AnyThread public void onShortcutUsageReported(java.util.List<java.lang.String!>);
+  }
+
+  public class ShortcutInfoCompat {
+    method public android.content.ComponentName? getActivity();
+    method public java.util.Set<java.lang.String!>? getCategories();
+    method public CharSequence? getDisabledMessage();
+    method public int getDisabledReason();
+    method @androidx.core.content.pm.ShortcutInfoCompat.Surface public int getExcludedFromSurfaces();
+    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 @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.os.Bundle? getTransientExtras();
+    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 isExcludedFromSurfaces(@androidx.core.content.pm.ShortcutInfoCompat.Surface int);
+    method public boolean isImmutable();
+    method public boolean isPinned();
+    method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
+    field public static final int SURFACE_LAUNCHER = 1; // 0x1
+  }
+
+  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.Builder addCapabilityBinding(String);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder addCapabilityBinding(String, String, java.util.List<java.lang.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 setExcludedFromSurfaces(int);
+    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![]);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIsConversation();
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLocusId(androidx.core.content.LocusIdCompat?);
+    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);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setSliceUri(android.net.Uri);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.core.content.pm.ShortcutInfoCompat.Builder setTransientExtras(android.os.Bundle);
+  }
+
+  @IntDef(flag=true, value={androidx.core.content.pm.ShortcutInfoCompat.SURFACE_LAUNCHER}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ShortcutInfoCompat.Surface {
+  }
+
+  @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 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 {
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class ShortcutXmlParser {
+    method @WorkerThread public static java.util.List<java.lang.String!> getShortcutIds(android.content.Context);
+    method @VisibleForTesting public static java.util.List<java.lang.String!> parseShortcutIds(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+  }
+
+}
+
+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 public static void clearCachesForTheme(android.content.res.Resources.Theme);
+    method public static android.graphics.Typeface? getCachedFont(android.content.Context, @FontRes int) throws android.content.res.Resources.NotFoundException;
+    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 android.graphics.Bitmap createScaledBitmap(android.graphics.Bitmap, int, int, android.graphics.Rect?, boolean);
+    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=95.047) double, @FloatRange(from=0.0f, to=0x64) double, @FloatRange(from=0.0f, to=108.883) double);
+    method public static void XYZToLAB(@FloatRange(from=0.0f, to=95.047) double, @FloatRange(from=0.0f, to=0x64) double, @FloatRange(from=0.0f, to=108.883) 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 add(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+    method public static androidx.core.graphics.Insets max(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+    method public static androidx.core.graphics.Insets min(androidx.core.graphics.Insets, androidx.core.graphics.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 public static androidx.core.graphics.Insets subtract(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+    method @RequiresApi(api=29) public static androidx.core.graphics.Insets toCompatInsets(android.graphics.Insets);
+    method @RequiresApi(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 @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @VisibleForTesting public static void clearCache();
+    method public static android.graphics.Typeface create(android.content.Context, android.graphics.Typeface?, int);
+    method public static android.graphics.Typeface create(android.content.Context, android.graphics.Typeface?, @IntRange(from=1, to=1000) int, boolean);
+    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 @Deprecated @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 @Deprecated @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 @Deprecated @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);
+  }
+
+  @androidx.versionedparcelable.VersionedParcelize(allowSerialization=true, ignoreParcelables=true, isCustom=true, jetifyAs="android.support.v4.graphics.drawable.IconCompat") 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 @DrawableRes public int getResId();
+    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?);
+    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) @androidx.versionedparcelable.ParcelField(value=1, defaultValue="androidx.core.graphics.drawable.IconCompat.TYPE_UNKNOWN") 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 abstract class GnssStatusCompat {
+    method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public abstract float getBasebandCn0DbHz(@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 hasBasebandCn0DbHz(@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 LocationCompat {
+    method public static float getBearingAccuracyDegrees(android.location.Location);
+    method public static long getElapsedRealtimeMillis(android.location.Location);
+    method public static long getElapsedRealtimeNanos(android.location.Location);
+    method @FloatRange(from=0.0) public static float getMslAltitudeAccuracyMeters(android.location.Location);
+    method public static double getMslAltitudeMeters(android.location.Location);
+    method public static float getSpeedAccuracyMetersPerSecond(android.location.Location);
+    method public static float getVerticalAccuracyMeters(android.location.Location);
+    method public static boolean hasBearingAccuracy(android.location.Location);
+    method public static boolean hasMslAltitude(android.location.Location);
+    method public static boolean hasMslAltitudeAccuracy(android.location.Location);
+    method public static boolean hasSpeedAccuracy(android.location.Location);
+    method public static boolean hasVerticalAccuracy(android.location.Location);
+    method public static boolean isMock(android.location.Location);
+    method public static void removeMslAltitude(android.location.Location);
+    method public static void removeMslAltitudeAccuracy(android.location.Location);
+    method public static void setBearingAccuracyDegrees(android.location.Location, float);
+    method public static void setMock(android.location.Location, boolean);
+    method public static void setMslAltitudeAccuracyMeters(android.location.Location, @FloatRange(from=0.0) float);
+    method public static void setMslAltitudeMeters(android.location.Location, double);
+    method public static void setSpeedAccuracyMetersPerSecond(android.location.Location, float);
+    method public static void setVerticalAccuracyMeters(android.location.Location, float);
+    field public static final String EXTRA_BEARING_ACCURACY = "bearingAccuracy";
+    field public static final String EXTRA_IS_MOCK = "mockLocation";
+    field public static final String EXTRA_MSL_ALTITUDE = "androidx.core.location.extra.MSL_ALTITUDE";
+    field public static final String EXTRA_MSL_ALTITUDE_ACCURACY = "androidx.core.location.extra.MSL_ALTITUDE_ACCURACY";
+    field public static final String EXTRA_SPEED_ACCURACY = "speedAccuracy";
+    field public static final String EXTRA_VERTICAL_ACCURACY = "verticalAccuracy";
+  }
+
+  public interface LocationListenerCompat extends android.location.LocationListener {
+    method public default void onStatusChanged(String, int, android.os.Bundle?);
+  }
+
+  public final class LocationManagerCompat {
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public static void getCurrentLocation(android.location.LocationManager, String, androidx.core.os.CancellationSignal?, java.util.concurrent.Executor, androidx.core.util.Consumer<android.location.Location!>);
+    method public static String? getGnssHardwareModelName(android.location.LocationManager);
+    method public static int getGnssYearOfHardware(android.location.LocationManager);
+    method public static boolean hasProvider(android.location.LocationManager, String);
+    method public static boolean isLocationEnabled(android.location.LocationManager);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssMeasurementsCallback(android.location.LocationManager, android.location.GnssMeasurementsEvent.Callback, android.os.Handler);
+    method @RequiresApi(android.os.Build.VERSION_CODES.R) @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssMeasurementsCallback(android.location.LocationManager, java.util.concurrent.Executor, android.location.GnssMeasurementsEvent.Callback);
+    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 @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public static void removeUpdates(android.location.LocationManager, androidx.core.location.LocationListenerCompat);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public static void requestLocationUpdates(android.location.LocationManager, String, androidx.core.location.LocationRequestCompat, java.util.concurrent.Executor, androidx.core.location.LocationListenerCompat);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public static void requestLocationUpdates(android.location.LocationManager, String, androidx.core.location.LocationRequestCompat, androidx.core.location.LocationListenerCompat, android.os.Looper);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) public static void unregisterGnssMeasurementsCallback(android.location.LocationManager, android.location.GnssMeasurementsEvent.Callback);
+    method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
+  }
+
+  public final class LocationRequestCompat {
+    method @IntRange(from=1) public long getDurationMillis();
+    method @IntRange(from=0) public long getIntervalMillis();
+    method @IntRange(from=0) public long getMaxUpdateDelayMillis();
+    method @IntRange(from=1, to=java.lang.Integer.MAX_VALUE) public int getMaxUpdates();
+    method @FloatRange(from=0, to=java.lang.Float.MAX_VALUE) public float getMinUpdateDistanceMeters();
+    method @IntRange(from=0) public long getMinUpdateIntervalMillis();
+    method public int getQuality();
+    method @RequiresApi(31) public android.location.LocationRequest toLocationRequest();
+    method @RequiresApi(19) public android.location.LocationRequest? toLocationRequest(String);
+    field public static final long PASSIVE_INTERVAL = 9223372036854775807L; // 0x7fffffffffffffffL
+    field public static final int QUALITY_BALANCED_POWER_ACCURACY = 102; // 0x66
+    field public static final int QUALITY_HIGH_ACCURACY = 100; // 0x64
+    field public static final int QUALITY_LOW_POWER = 104; // 0x68
+  }
+
+  public static final class LocationRequestCompat.Builder {
+    ctor public LocationRequestCompat.Builder(long);
+    ctor public LocationRequestCompat.Builder(androidx.core.location.LocationRequestCompat);
+    method public androidx.core.location.LocationRequestCompat build();
+    method public androidx.core.location.LocationRequestCompat.Builder clearMinUpdateIntervalMillis();
+    method public androidx.core.location.LocationRequestCompat.Builder setDurationMillis(@IntRange(from=1) long);
+    method public androidx.core.location.LocationRequestCompat.Builder setIntervalMillis(@IntRange(from=0) long);
+    method public androidx.core.location.LocationRequestCompat.Builder setMaxUpdateDelayMillis(@IntRange(from=0) long);
+    method public androidx.core.location.LocationRequestCompat.Builder setMaxUpdates(@IntRange(from=1, to=java.lang.Integer.MAX_VALUE) int);
+    method public androidx.core.location.LocationRequestCompat.Builder setMinUpdateDistanceMeters(@FloatRange(from=0, to=java.lang.Float.MAX_VALUE) float);
+    method public androidx.core.location.LocationRequestCompat.Builder setMinUpdateIntervalMillis(@IntRange(from=0) long);
+    method public androidx.core.location.LocationRequestCompat.Builder setQuality(int);
+  }
+
+}
+
+package androidx.core.math {
+
+  public class MathUtils {
+    method public static int addExact(int, int);
+    method public static long addExact(long, long);
+    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);
+    method public static int decrementExact(int);
+    method public static long decrementExact(long);
+    method public static int incrementExact(int);
+    method public static long incrementExact(long);
+    method public static int multiplyExact(int, int);
+    method public static long multiplyExact(long, long);
+    method public static int negateExact(int);
+    method public static long negateExact(long);
+    method public static int subtractExact(int, int);
+    method public static long subtractExact(long, long);
+    method public static int toIntExact(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 MailTo {
+    method public String? getBcc();
+    method public String? getBody();
+    method public String? getCc();
+    method public java.util.Map<java.lang.String!,java.lang.String!>? getHeaders();
+    method public String? getSubject();
+    method public String? getTo();
+    method public static boolean isMailTo(String?);
+    method public static boolean isMailTo(android.net.Uri?);
+    method public static androidx.core.net.MailTo parse(String) throws androidx.core.net.ParseException;
+    method public static androidx.core.net.MailTo parse(android.net.Uri) throws androidx.core.net.ParseException;
+    field public static final String MAILTO_SCHEME = "mailto:";
+  }
+
+  public class ParseException extends java.lang.RuntimeException {
+    field public final String response;
+  }
+
+  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 @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.N) public static boolean isAtLeastN();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.N_MR1) public static boolean isAtLeastNMR1();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.O) public static boolean isAtLeastO();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.O_MR1) public static boolean isAtLeastOMR1();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.P) public static boolean isAtLeastP();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.Q) public static boolean isAtLeastQ();
+    method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.R) public static boolean isAtLeastR();
+    method @Deprecated @ChecksSdkIntAtLeast(api=31, codename="S") public static boolean isAtLeastS();
+  }
+
+  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 ExecutorCompat {
+    method public static java.util.concurrent.Executor create(android.os.Handler);
+  }
+
+  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 @RequiresApi(16) public static boolean hasCallbacks(android.os.Handler, Runnable);
+    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 @RequiresApi(21) public static boolean matchesLanguageAndScript(java.util.Locale, java.util.Locale);
+    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 <T> T![]? readArray(android.os.Parcel, ClassLoader?, Class<T!>);
+    method public static <T> java.util.ArrayList<T!>? readArrayList(android.os.Parcel, ClassLoader?, Class<? extends T>);
+    method public static boolean readBoolean(android.os.Parcel);
+    method public static <K, V> java.util.HashMap<K!,V!>? readHashMap(android.os.Parcel, ClassLoader?, Class<? extends K>, Class<? extends V>);
+    method public static <T> void readList(android.os.Parcel, java.util.List<? super T>, ClassLoader?, Class<T!>);
+    method public static <K, V> void readMap(android.os.Parcel, java.util.Map<? super K,? super V>, ClassLoader?, Class<K!>, Class<V!>);
+    method public static <T extends android.os.Parcelable> T? readParcelable(android.os.Parcel, ClassLoader?, Class<T!>);
+    method public static <T> T![]? readParcelableArray(android.os.Parcel, ClassLoader?, Class<T!>);
+    method @RequiresApi(30) public static <T> android.os.Parcelable.Creator<T!>? readParcelableCreator(android.os.Parcel, ClassLoader?, Class<T!>);
+    method @RequiresApi(api=android.os.Build.VERSION_CODES.Q) public static <T> java.util.List<T!> readParcelableList(android.os.Parcel, java.util.List<T!>, ClassLoader?, Class<T!>);
+    method public static <T extends java.io.Serializable> T? readSerializable(android.os.Parcel, ClassLoader?, Class<T!>);
+    method public static <T> android.util.SparseArray<T!>? readSparseArray(android.os.Parcel, ClassLoader?, Class<? extends T>);
+    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 ProcessCompat {
+    method public static boolean isApplicationUid(int);
+  }
+
+  @Deprecated public final class TraceCompat {
+    method @Deprecated public static void beginAsyncSection(String, int);
+    method @Deprecated public static void beginSection(String);
+    method @Deprecated public static void endAsyncSection(String, int);
+    method @Deprecated public static void endSection();
+    method @Deprecated public static boolean isEnabled();
+    method @Deprecated public static void setCounter(String, int);
+  }
+
+  @RequiresApi(17) public class UserHandleCompat {
+    method public static android.os.UserHandle getUserHandleForUid(int);
+  }
+
+  public class UserManagerCompat {
+    method public static boolean isUserUnlocked(android.content.Context);
+  }
+
+}
+
+package androidx.core.provider {
+
+  public final class DocumentsContractCompat {
+    method public static android.net.Uri? buildChildDocumentsUri(String, String?);
+    method public static android.net.Uri? buildChildDocumentsUriUsingTree(android.net.Uri, String);
+    method public static android.net.Uri? buildDocumentUri(String, String);
+    method public static android.net.Uri? buildDocumentUriUsingTree(android.net.Uri, String);
+    method public static android.net.Uri? buildTreeDocumentUri(String, String);
+    method public static android.net.Uri? createDocument(android.content.ContentResolver, android.net.Uri, String, String) throws java.io.FileNotFoundException;
+    method public static String? getDocumentId(android.net.Uri);
+    method public static String? getTreeDocumentId(android.net.Uri);
+    method public static boolean isDocumentUri(android.content.Context, android.net.Uri?);
+    method public static boolean isTreeUri(android.net.Uri);
+    method public static boolean removeDocument(android.content.ContentResolver, android.net.Uri, android.net.Uri) throws java.io.FileNotFoundException;
+    method public static android.net.Uri? renameDocument(android.content.ContentResolver, android.net.Uri, String) throws java.io.FileNotFoundException;
+  }
+
+  public static final class DocumentsContractCompat.DocumentCompat {
+    field public static final int FLAG_VIRTUAL_DOCUMENT = 512; // 0x200
+  }
+
+  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 @Deprecated @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 @Deprecated @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 @Deprecated @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 @Deprecated @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 @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static void resetCache();
+    field @Deprecated @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 @Deprecated @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 @Deprecated @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 @Deprecated @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 {
+  }
+
+  @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class SelfDestructiveThread {
+    ctor @Deprecated public SelfDestructiveThread(String!, int, int);
+    method @Deprecated @VisibleForTesting public int getGeneration();
+    method @Deprecated @VisibleForTesting public boolean isRunning();
+    method @Deprecated public <T> void postAndReply(java.util.concurrent.Callable<T!>!, androidx.core.provider.SelfDestructiveThread.ReplyCallback<T!>!);
+    method @Deprecated public <T> T! postAndWait(java.util.concurrent.Callable<T!>!, int) throws java.lang.InterruptedException;
+  }
+
+  @Deprecated public static interface SelfDestructiveThread.ReplyCallback<T> {
+    method @Deprecated public void onReply(T!);
+  }
+
+}
+
+package androidx.core.telephony {
+
+  @RequiresApi(22) public class SubscriptionManagerCompat {
+    method public static int getSlotIndex(int);
+  }
+
+  public class TelephonyManagerCompat {
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public static String? getImei(android.telephony.TelephonyManager);
+    method public static int getSubscriptionId(android.telephony.TelephonyManager);
+  }
+
+}
+
+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?);
+    method public static <T> T requireNonNull(T?);
+    method public static <T> T requireNonNull(T?, String);
+    method public static String? toString(Object?, String?);
+  }
+
+  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 void checkArgument(boolean, String, java.lang.Object!...);
+    method public static float checkArgumentFinite(float, String);
+    method public static int checkArgumentInRange(int, int, int, String);
+    method public static long checkArgumentInRange(long, long, long, String);
+    method public static float checkArgumentInRange(float, float, float, String);
+    method public static double checkArgumentInRange(double, double, double, String);
+    method @IntRange(from=0) public static int checkArgumentNonnegative(int, String?);
+    method @IntRange(from=0) public static int checkArgumentNonnegative(int);
+    method public static int checkFlagsArgument(int, 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);
+    method public static <T extends java.lang.CharSequence> T checkStringNotEmpty(T?);
+    method public static <T extends java.lang.CharSequence> T checkStringNotEmpty(T?, Object);
+    method public static <T extends java.lang.CharSequence> T checkStringNotEmpty(T?, String, java.lang.Object!...);
+  }
+
+  public interface Predicate<T> {
+    method public default androidx.core.util.Predicate<T!>! and(androidx.core.util.Predicate<? super T>!);
+    method public static <T> androidx.core.util.Predicate<T!>! isEqual(Object!);
+    method public default androidx.core.util.Predicate<T!>! negate();
+    method public static <T> androidx.core.util.Predicate<T!>! not(androidx.core.util.Predicate<? super T>!);
+    method public default androidx.core.util.Predicate<T!>! or(androidx.core.util.Predicate<? super T>!);
+    method public boolean test(T!);
+  }
+
+  public final class SizeFCompat {
+    ctor public SizeFCompat(float, float);
+    method public float getHeight();
+    method public float getWidth();
+    method @RequiresApi(21) public android.util.SizeF toSizeF();
+    method @RequiresApi(21) public static androidx.core.util.SizeFCompat toSizeFCompat(android.util.SizeF);
+  }
+
+  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 ContentInfoCompat {
+    method public android.content.ClipData getClip();
+    method public android.os.Bundle? getExtras();
+    method @androidx.core.view.ContentInfoCompat.Flags public int getFlags();
+    method public android.net.Uri? getLinkUri();
+    method @androidx.core.view.ContentInfoCompat.Source public int getSource();
+    method public android.util.Pair<androidx.core.view.ContentInfoCompat!,androidx.core.view.ContentInfoCompat!> partition(androidx.core.util.Predicate<android.content.ClipData.Item!>);
+    method @RequiresApi(31) public static android.util.Pair<android.view.ContentInfo!,android.view.ContentInfo!> partition(android.view.ContentInfo, java.util.function.Predicate<android.content.ClipData.Item!>);
+    method @RequiresApi(31) public android.view.ContentInfo toContentInfo();
+    method @RequiresApi(31) public static androidx.core.view.ContentInfoCompat toContentInfoCompat(android.view.ContentInfo);
+    field public static final int FLAG_CONVERT_TO_PLAIN_TEXT = 1; // 0x1
+    field public static final int SOURCE_APP = 0; // 0x0
+    field public static final int SOURCE_AUTOFILL = 4; // 0x4
+    field public static final int SOURCE_CLIPBOARD = 1; // 0x1
+    field public static final int SOURCE_DRAG_AND_DROP = 3; // 0x3
+    field public static final int SOURCE_INPUT_METHOD = 2; // 0x2
+    field public static final int SOURCE_PROCESS_TEXT = 5; // 0x5
+  }
+
+  public static final class ContentInfoCompat.Builder {
+    ctor public ContentInfoCompat.Builder(androidx.core.view.ContentInfoCompat);
+    ctor public ContentInfoCompat.Builder(android.content.ClipData, @androidx.core.view.ContentInfoCompat.Source int);
+    method public androidx.core.view.ContentInfoCompat build();
+    method public androidx.core.view.ContentInfoCompat.Builder setClip(android.content.ClipData);
+    method public androidx.core.view.ContentInfoCompat.Builder setExtras(android.os.Bundle?);
+    method public androidx.core.view.ContentInfoCompat.Builder setFlags(@androidx.core.view.ContentInfoCompat.Flags int);
+    method public androidx.core.view.ContentInfoCompat.Builder setLinkUri(android.net.Uri?);
+    method public androidx.core.view.ContentInfoCompat.Builder setSource(@androidx.core.view.ContentInfoCompat.Source int);
+  }
+
+  @IntDef(flag=true, value={androidx.core.view.ContentInfoCompat.FLAG_CONVERT_TO_PLAIN_TEXT}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ContentInfoCompat.Flags {
+  }
+
+  @IntDef({androidx.core.view.ContentInfoCompat.SOURCE_APP, androidx.core.view.ContentInfoCompat.SOURCE_CLIPBOARD, androidx.core.view.ContentInfoCompat.SOURCE_INPUT_METHOD, androidx.core.view.ContentInfoCompat.SOURCE_DRAG_AND_DROP, androidx.core.view.ContentInfoCompat.SOURCE_AUTOFILL, androidx.core.view.ContentInfoCompat.SOURCE_PROCESS_TEXT}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ContentInfoCompat.Source {
+  }
+
+  public final class DisplayCompat {
+    method public static androidx.core.view.DisplayCompat.ModeCompat getMode(android.content.Context, android.view.Display);
+    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 @Deprecated 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!>?);
+    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 {
+    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 interface MenuHost {
+    method public void addMenuProvider(androidx.core.view.MenuProvider);
+    method public void addMenuProvider(androidx.core.view.MenuProvider, androidx.lifecycle.LifecycleOwner);
+    method public void addMenuProvider(androidx.core.view.MenuProvider, androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.State);
+    method public void invalidateMenu();
+    method public void removeMenuProvider(androidx.core.view.MenuProvider);
+  }
+
+  public class MenuHostHelper {
+    ctor public MenuHostHelper(Runnable);
+    method public void addMenuProvider(androidx.core.view.MenuProvider);
+    method public void addMenuProvider(androidx.core.view.MenuProvider, androidx.lifecycle.LifecycleOwner);
+    method public void addMenuProvider(androidx.core.view.MenuProvider, androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.State);
+    method public void onCreateMenu(android.view.Menu, android.view.MenuInflater);
+    method public void onMenuClosed(android.view.Menu);
+    method public boolean onMenuItemSelected(android.view.MenuItem);
+    method public void onPrepareMenu(android.view.Menu);
+    method public void removeMenuProvider(androidx.core.view.MenuProvider);
+  }
+
+  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 interface MenuProvider {
+    method public void onCreateMenu(android.view.Menu, android.view.MenuInflater);
+    method public default void onMenuClosed(android.view.Menu);
+    method public boolean onMenuItemSelected(android.view.MenuItem);
+    method public default void onPrepareMenu(android.view.Menu);
+  }
+
+  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 interface OnReceiveContentListener {
+    method public androidx.core.view.ContentInfoCompat? onReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
+  }
+
+  public interface OnReceiveContentViewBehavior {
+    method public androidx.core.view.ContentInfoCompat? onReceiveContent(androidx.core.view.ContentInfoCompat);
+  }
+
+  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 @Deprecated 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 public static String![]? getOnReceiveContentMimeTypes(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 @UiThread public static 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!);
+    method @Deprecated public static float getTranslationY(android.view.View!);
+    method public static float getTranslationZ(android.view.View);
+    method @Deprecated public static androidx.core.view.WindowInsetsControllerCompat? getWindowInsetsController(android.view.View);
+    method @Deprecated 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 androidx.core.view.ContentInfoCompat? performReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
+    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 @UiThread 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 public static void setOnReceiveContentListener(android.view.View, String![]?, androidx.core.view.OnReceiveContentListener?);
+    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 @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?);
+    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 public static void setWindowInsetsAnimationCallback(android.view.View, androidx.core.view.WindowInsetsAnimationCompat.Callback?);
+    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 androidx.core.view.WindowInsetsControllerCompat getInsetsController(android.view.Window, android.view.View);
+    method public static <T extends android.view.View> T requireViewById(android.view.Window, @IdRes int);
+    method public static void setDecorFitsSystemWindows(android.view.Window, boolean);
+    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 final class WindowInsetsAnimationCompat {
+    ctor public WindowInsetsAnimationCompat(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int, android.view.animation.Interpolator?, long);
+    method @FloatRange(from=0.0f, to=1.0f) public float getAlpha();
+    method public long getDurationMillis();
+    method @FloatRange(from=0.0f, to=1.0f) public float getFraction();
+    method public float getInterpolatedFraction();
+    method public android.view.animation.Interpolator? getInterpolator();
+    method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public int getTypeMask();
+    method public void setAlpha(@FloatRange(from=0.0f, to=1.0f) float);
+    method public void setFraction(@FloatRange(from=0.0f, to=1.0f) float);
+  }
+
+  public static final class WindowInsetsAnimationCompat.BoundsCompat {
+    ctor public WindowInsetsAnimationCompat.BoundsCompat(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+    method public androidx.core.graphics.Insets getLowerBound();
+    method public androidx.core.graphics.Insets getUpperBound();
+    method public androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat inset(androidx.core.graphics.Insets);
+    method @RequiresApi(30) public android.view.WindowInsetsAnimation.Bounds toBounds();
+    method @RequiresApi(30) public static androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat toBoundsCompat(android.view.WindowInsetsAnimation.Bounds);
+  }
+
+  public abstract static class WindowInsetsAnimationCompat.Callback {
+    ctor public WindowInsetsAnimationCompat.Callback(@androidx.core.view.WindowInsetsAnimationCompat.Callback.DispatchMode int);
+    method @androidx.core.view.WindowInsetsAnimationCompat.Callback.DispatchMode public final int getDispatchMode();
+    method public void onEnd(androidx.core.view.WindowInsetsAnimationCompat);
+    method public void onPrepare(androidx.core.view.WindowInsetsAnimationCompat);
+    method public abstract androidx.core.view.WindowInsetsCompat onProgress(androidx.core.view.WindowInsetsCompat, java.util.List<androidx.core.view.WindowInsetsAnimationCompat!>);
+    method public androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat onStart(androidx.core.view.WindowInsetsAnimationCompat, androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat);
+    field public static final int DISPATCH_MODE_CONTINUE_ON_SUBTREE = 1; // 0x1
+    field public static final int DISPATCH_MODE_STOP = 0; // 0x0
+  }
+
+  @IntDef({androidx.core.view.WindowInsetsAnimationCompat.Callback.DISPATCH_MODE_STOP, androidx.core.view.WindowInsetsAnimationCompat.Callback.DISPATCH_MODE_CONTINUE_ON_SUBTREE}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface WindowInsetsAnimationCompat.Callback.DispatchMode {
+  }
+
+  public interface WindowInsetsAnimationControlListenerCompat {
+    method public void onCancelled(androidx.core.view.WindowInsetsAnimationControllerCompat?);
+    method public void onFinished(androidx.core.view.WindowInsetsAnimationControllerCompat);
+    method public void onReady(androidx.core.view.WindowInsetsAnimationControllerCompat, @androidx.core.view.WindowInsetsCompat.Type.InsetsType int);
+  }
+
+  public final class WindowInsetsAnimationControllerCompat {
+    method public void finish(boolean);
+    method public float getCurrentAlpha();
+    method @FloatRange(from=0.0f, to=1.0f) public float getCurrentFraction();
+    method public androidx.core.graphics.Insets getCurrentInsets();
+    method public androidx.core.graphics.Insets getHiddenStateInsets();
+    method public androidx.core.graphics.Insets getShownStateInsets();
+    method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public int getTypes();
+    method public boolean isCancelled();
+    method public boolean isFinished();
+    method public boolean isReady();
+    method public void setInsetsAndAlpha(androidx.core.graphics.Insets?, @FloatRange(from=0.0f, to=1.0f) float, @FloatRange(from=0.0f, to=1.0f) float);
+  }
+
+  public class WindowInsetsCompat {
+    ctor public WindowInsetsCompat(androidx.core.view.WindowInsetsCompat?);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat consumeDisplayCutout();
+    method @Deprecated public androidx.core.view.WindowInsetsCompat consumeStableInsets();
+    method @Deprecated public androidx.core.view.WindowInsetsCompat consumeSystemWindowInsets();
+    method public androidx.core.view.DisplayCutoutCompat? getDisplayCutout();
+    method public androidx.core.graphics.Insets getInsets(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int);
+    method public androidx.core.graphics.Insets getInsetsIgnoringVisibility(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int);
+    method @Deprecated public androidx.core.graphics.Insets getMandatorySystemGestureInsets();
+    method @Deprecated public int getStableInsetBottom();
+    method @Deprecated public int getStableInsetLeft();
+    method @Deprecated public int getStableInsetRight();
+    method @Deprecated public int getStableInsetTop();
+    method @Deprecated public androidx.core.graphics.Insets getStableInsets();
+    method @Deprecated public androidx.core.graphics.Insets getSystemGestureInsets();
+    method @Deprecated public int getSystemWindowInsetBottom();
+    method @Deprecated public int getSystemWindowInsetLeft();
+    method @Deprecated public int getSystemWindowInsetRight();
+    method @Deprecated public int getSystemWindowInsetTop();
+    method @Deprecated public androidx.core.graphics.Insets getSystemWindowInsets();
+    method @Deprecated public androidx.core.graphics.Insets getTappableElementInsets();
+    method public boolean hasInsets();
+    method @Deprecated public boolean hasStableInsets();
+    method @Deprecated 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 public boolean isVisible(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int);
+    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);
+    method @RequiresApi(20) public static androidx.core.view.WindowInsetsCompat toWindowInsetsCompat(android.view.WindowInsets, android.view.View?);
+    field 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 setInsets(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int, androidx.core.graphics.Insets);
+    method public androidx.core.view.WindowInsetsCompat.Builder setInsetsIgnoringVisibility(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int, androidx.core.graphics.Insets);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setMandatorySystemGestureInsets(androidx.core.graphics.Insets);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setStableInsets(androidx.core.graphics.Insets);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setSystemGestureInsets(androidx.core.graphics.Insets);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setSystemWindowInsets(androidx.core.graphics.Insets);
+    method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setTappableElementInsets(androidx.core.graphics.Insets);
+    method public androidx.core.view.WindowInsetsCompat.Builder setVisible(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int, boolean);
+  }
+
+  public static final class WindowInsetsCompat.Type {
+    method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int captionBar();
+    method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int displayCutout();
+    method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int ime();
+    method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int mandatorySystemGestures();
+    method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int navigationBars();
+    method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int statusBars();
+    method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int systemBars();
+    method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int systemGestures();
+    method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int tappableElement();
+  }
+
+  @IntDef(flag=true, value={0x1, 0x2, 0x4, 0x8, 0x100, 0x10, 0x20, 0x40, 0x80}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface WindowInsetsCompat.Type.InsetsType {
+  }
+
+  public final class WindowInsetsControllerCompat {
+    ctor public WindowInsetsControllerCompat(android.view.Window, android.view.View);
+    method public void addOnControllableInsetsChangedListener(androidx.core.view.WindowInsetsControllerCompat.OnControllableInsetsChangedListener);
+    method public void controlWindowInsetsAnimation(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int, long, android.view.animation.Interpolator?, android.os.CancellationSignal?, androidx.core.view.WindowInsetsAnimationControlListenerCompat);
+    method public int getSystemBarsBehavior();
+    method public void hide(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int);
+    method public boolean isAppearanceLightNavigationBars();
+    method public boolean isAppearanceLightStatusBars();
+    method public void removeOnControllableInsetsChangedListener(androidx.core.view.WindowInsetsControllerCompat.OnControllableInsetsChangedListener);
+    method public void setAppearanceLightNavigationBars(boolean);
+    method public void setAppearanceLightStatusBars(boolean);
+    method public void setSystemBarsBehavior(int);
+    method public void show(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int);
+    method @Deprecated @RequiresApi(30) public static androidx.core.view.WindowInsetsControllerCompat toWindowInsetsControllerCompat(android.view.WindowInsetsController);
+    field public static final int BEHAVIOR_SHOW_BARS_BY_SWIPE = 1; // 0x1
+    field public static final int BEHAVIOR_SHOW_BARS_BY_TOUCH = 0; // 0x0
+    field public static final int BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE = 2; // 0x2
+  }
+
+  public static interface WindowInsetsControllerCompat.OnControllableInsetsChangedListener {
+    method public void onControllableInsetsChanged(androidx.core.view.WindowInsetsControllerCompat, @androidx.core.view.WindowInsetsCompat.Type.InsetsType int);
+  }
+
+}
+
+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 @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, @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_DRAG_CANCELLED = 512; // 0x200
+    field public static final int CONTENT_CHANGE_TYPE_DRAG_DROPPED = 256; // 0x100
+    field public static final int CONTENT_CHANGE_TYPE_DRAG_STARTED = 128; // 0x80
+    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
+    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
+  }
+
+  @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, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_DRAG_STARTED, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_DRAG_DROPPED, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_DRAG_CANCELLED}) @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);
+    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 @Deprecated public int getActions();
+    method public java.util.List<java.lang.String!> getAvailableExtraData();
+    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.view.accessibility.AccessibilityNodeInfo.ExtraRenderingInfo? getExtraRenderingInfo();
+    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? getStateDescription();
+    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? getUniqueId();
+    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 isTextSelectable();
+    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 public void setAvailableExtraData(java.util.List<java.lang.String!>);
+    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 setStateDescription(CharSequence?);
+    method public void setText(CharSequence!);
+    method public void setTextEntryKey(boolean);
+    method public void setTextSelectable(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 setUniqueId(String?);
+    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_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";
+    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 String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH = "android.core.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH";
+    field public static final int EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_MAX_LENGTH = 20000; // 0x4e20
+    field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX = "android.core.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX";
+    field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_KEY = "android.core.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_KEY";
+    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_DRAG_CANCEL;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_DRAG_DROP;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_DRAG_START;
+    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;
+    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_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;
+    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_TEXT_SUGGESTIONS;
+    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 void addExtraDataToAccessibilityNodeInfo(int, androidx.core.view.accessibility.AccessibilityNodeInfoCompat, String, android.os.Bundle?);
+    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 getDisplayId();
+    method public int getId();
+    method public int getLayer();
+    method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat? getParent();
+    method public void getRegionInScreen(android.graphics.Region);
+    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 boolean isInPictureInPictureMode();
+    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();
+    method public android.view.accessibility.AccessibilityWindowInfo? unwrap();
+    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 CharSequence? getInitialSelectedText(android.view.inputmethod.EditorInfo, int);
+    method public static CharSequence? getInitialTextAfterCursor(android.view.inputmethod.EditorInfo, int, int);
+    method public static CharSequence? getInitialTextBeforeCursor(android.view.inputmethod.EditorInfo, int, int);
+    method public static void setContentMimeTypes(android.view.inputmethod.EditorInfo, String![]?);
+    method public static void setInitialSurroundingSubText(android.view.inputmethod.EditorInfo, CharSequence, int);
+    method public static void setInitialSurroundingText(android.view.inputmethod.EditorInfo, CharSequence);
+    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 @Deprecated public static android.view.inputmethod.InputConnection createWrapper(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, androidx.core.view.inputmethod.InputConnectionCompat.OnCommitContentListener);
+    method public static android.view.inputmethod.InputConnection createWrapper(android.view.View, android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
+    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 @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final boolean PLATFORM_SUPPORTS_AUTOSIZE;
+  }
+
+  public final class CheckedTextViewCompat {
+    method public static android.graphics.drawable.Drawable? getCheckMarkDrawable(android.widget.CheckedTextView);
+    method public static android.content.res.ColorStateList? getCheckMarkTintList(android.widget.CheckedTextView);
+    method public static android.graphics.PorterDuff.Mode? getCheckMarkTintMode(android.widget.CheckedTextView);
+    method public static void setCheckMarkTintList(android.widget.CheckedTextView, android.content.res.ColorStateList?);
+    method public static void setCheckMarkTintMode(android.widget.CheckedTextView, android.graphics.PorterDuff.Mode?);
+  }
+
+  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 public static android.widget.EdgeEffect create(android.content.Context, android.util.AttributeSet?);
+    method @Deprecated public boolean draw(android.graphics.Canvas!);
+    method @Deprecated public void finish();
+    method public static float getDistance(android.widget.EdgeEffect);
+    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 public static float onPullDistance(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? unwrapCustomSelectionActionModeCallback(android.view.ActionMode.Callback?);
+    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 {
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class TextViewOnReceiveContentListener implements androidx.core.view.OnReceiveContentListener {
+    ctor public TextViewOnReceiveContentListener();
+    method public androidx.core.view.ContentInfoCompat? onReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface TintableCheckedTextView {
+    method public android.content.res.ColorStateList? getSupportCheckMarkTintList();
+    method public android.graphics.PorterDuff.Mode? getSupportCheckMarkTintMode();
+    method public void setSupportCheckMarkTintList(android.content.res.ColorStateList?);
+    method public void setSupportCheckMarkTintMode(android.graphics.PorterDuff.Mode?);
+  }
+
+  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_current.txt b/core/core/api/restricted_current.txt
index ccc9f55..86dafe9 100644
--- a/core/core/api/restricted_current.txt
+++ b/core/core/api/restricted_current.txt
@@ -1159,6 +1159,48 @@
     field public static final String EXTRA_TIME = "android.intent.extra.TIME";
   }
 
+  public class IntentSanitizer {
+    method public android.content.Intent sanitize(android.content.Intent, androidx.core.util.Consumer<java.lang.String!>);
+    method public android.content.Intent sanitizeByFiltering(android.content.Intent);
+    method public android.content.Intent sanitizeByThrowing(android.content.Intent);
+  }
+
+  public static final class IntentSanitizer.Builder {
+    ctor public IntentSanitizer.Builder();
+    method public androidx.core.content.IntentSanitizer.Builder allowAction(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowAction(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowAnyComponent();
+    method public androidx.core.content.IntentSanitizer.Builder allowCategory(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowCategory(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipData(androidx.core.util.Predicate<android.content.ClipData!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataText();
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataUri(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowClipDataUriWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponent(android.content.ComponentName);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponent(androidx.core.util.Predicate<android.content.ComponentName!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowComponentWithPackage(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowData(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowDataWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<?>);
+    method public <T> androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<T!>, androidx.core.util.Predicate<T!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, androidx.core.util.Predicate<java.lang.Object!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraOutput(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraOutput(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraStream(androidx.core.util.Predicate<android.net.Uri!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtraStreamUriWithAuthority(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowFlags(int);
+    method public androidx.core.content.IntentSanitizer.Builder allowHistoryStackFlags();
+    method public androidx.core.content.IntentSanitizer.Builder allowIdentifier();
+    method public androidx.core.content.IntentSanitizer.Builder allowPackage(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowPackage(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer.Builder allowReceiverFlags();
+    method public androidx.core.content.IntentSanitizer.Builder allowSelector();
+    method public androidx.core.content.IntentSanitizer.Builder allowSourceBounds();
+    method public androidx.core.content.IntentSanitizer.Builder allowType(String);
+    method public androidx.core.content.IntentSanitizer.Builder allowType(androidx.core.util.Predicate<java.lang.String!>);
+    method public androidx.core.content.IntentSanitizer build();
+  }
+
   public final class LocusIdCompat {
     ctor public LocusIdCompat(String);
     method public String getId();
@@ -1229,6 +1271,10 @@
     field public static final int FEATURE_NOT_AVAILABLE = 1; // 0x1
   }
 
+  public class UriMatcherCompat {
+    method public static androidx.core.util.Predicate<android.net.Uri!> asPredicate(android.content.UriMatcher);
+  }
+
 }
 
 package androidx.core.content.pm {
@@ -2507,6 +2553,11 @@
   }
 
   public interface Predicate<T> {
+    method public default androidx.core.util.Predicate<T!>! and(androidx.core.util.Predicate<? super T>!);
+    method public static <T> androidx.core.util.Predicate<T!>! isEqual(Object!);
+    method public default androidx.core.util.Predicate<T!>! negate();
+    method public static <T> androidx.core.util.Predicate<T!>! not(androidx.core.util.Predicate<? super T>!);
+    method public default androidx.core.util.Predicate<T!>! or(androidx.core.util.Predicate<? super T>!);
     method public boolean test(T!);
   }
 
@@ -3646,6 +3697,7 @@
     method public boolean isSelected();
     method public boolean isShowingHintText();
     method public boolean isTextEntryKey();
+    method public boolean isTextSelectable();
     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);
@@ -3708,6 +3760,7 @@
     method public void setStateDescription(CharSequence?);
     method public void setText(CharSequence!);
     method public void setTextEntryKey(boolean);
+    method public void setTextSelectable(boolean);
     method public void setTextSelection(int, int);
     method public void setTooltipText(CharSequence?);
     method public void setTouchDelegateInfo(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.TouchDelegateInfoCompat);
@@ -3816,6 +3869,7 @@
     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_TEXT_SUGGESTIONS;
     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;
   }
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 e564d40..e535f73 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
@@ -286,4 +286,15 @@
                 accessibilityNodeInfoCompat.getExtraRenderingInfo(),
                 equalTo(accessibilityNodeInfoCompat.unwrap().getExtraRenderingInfo()));
     }
+
+    @SdkSuppress(minSdkVersion = 33)
+    @SmallTest
+    @Test
+    public void testSetGetTextSelectable() {
+        AccessibilityNodeInfoCompat accessibilityNodeInfoCompat = obtainedWrappedNodeCompat();
+        accessibilityNodeInfoCompat.setTextSelectable(false);
+        assertThat(accessibilityNodeInfoCompat.isTextSelectable(), equalTo(false));
+        accessibilityNodeInfoCompat.setTextSelectable(true);
+        assertThat(accessibilityNodeInfoCompat.isTextSelectable(), equalTo(true));
+    }
 }
diff --git a/core/core/src/main/java/androidx/core/content/IntentSanitizer.java b/core/core/src/main/java/androidx/core/content/IntentSanitizer.java
new file mode 100644
index 0000000..e417cbe
--- /dev/null
+++ b/core/core/src/main/java/androidx/core/content/IntentSanitizer.java
@@ -0,0 +1,1004 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.core.content;
+
+import static androidx.core.util.Preconditions.checkNotNull;
+
+import android.annotation.SuppressLint;
+import android.content.ClipData;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.os.strictmode.UnsafeIntentLaunchViolation;
+import android.provider.MediaStore;
+import android.util.Log;
+
+import androidx.annotation.DoNotInline;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.core.util.Consumer;
+import androidx.core.util.Predicate;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * This class is used to make a sanitized copy of an {@link Intent}. This could be used when
+ * {@link UnsafeIntentLaunchViolation} is detected.
+ * This class is thread safe and the object created is safe to be reused.
+ * Typical usage of the class:
+ * <pre>
+ * {@code
+ * Intent intent = new  IntentSanitizer.Builder()
+ *      .allowComponent(“com.example.ActivityA”)
+ *      .allowData(“com.example”)
+ *      .allowType(“text/plain”)
+ *      .build()
+ *      .sanitizeByThrowing(intent);
+ * }
+ * </pre>
+ *
+ * At least one of the allowPackage, allowComponent must be called unless implicit intent is
+ * allowed. In which case, allowAnyComponent must be called and caution has to be taken to
+ * protect your private data.
+ */
+public class IntentSanitizer {
+    private static final String TAG = "IntentSanitizer";
+
+    private int mAllowedFlags;
+    private Predicate<String> mAllowedActions;
+    private Predicate<Uri> mAllowedData;
+    private Predicate<String> mAllowedTypes;
+    private Predicate<String> mAllowedCategories;
+    private Predicate<String> mAllowedPackages;
+    private Predicate<ComponentName> mAllowedComponents;
+    private boolean mAllowAnyComponent;
+    private Map<String, Predicate<Object>> mAllowedExtras;
+    private boolean mAllowClipDataText;
+    private Predicate<Uri> mAllowedClipDataUri;
+    private Predicate<ClipData> mAllowedClipData;
+    private boolean mAllowIdentifier;
+    private boolean mAllowSelector;
+    private boolean mAllowSourceBounds;
+
+    private IntentSanitizer() {
+    }
+
+    /**
+     * Convenient method for filtering unwanted members from the input intent and log it.
+     *
+     * @param in input intent
+     * @return a copy of the input intent after filtering out unwanted members.
+     */
+    @NonNull
+    public Intent sanitizeByFiltering(@NonNull Intent in) {
+        return sanitize(in, msg -> Log.v(TAG, msg));
+    }
+
+    /**
+     * Convenient method for throwing a SecurityException when unwanted members of the input
+     * intent is encountered.
+     *
+     * @param in input intent
+     * @return a copy of the input intent if the input intent does not contain any unwanted members.
+     * @throws SecurityException if the input intent contains any unwanted members.
+     */
+    @NonNull
+    public Intent sanitizeByThrowing(@NonNull Intent in) {
+        return sanitize(in, msg -> {
+            throw new SecurityException(msg);
+        });
+    }
+
+    /**
+     * This method sanitize the given intent. If dirty members are found, the error is consumed
+     * by the penalty object.
+     *
+     * @param in      the given intent.
+     * @param penalty consumer of the error message if dirty members are found.
+     * @return a sanitized copy of the given intent.
+     */
+    @NonNull
+    public Intent sanitize(@NonNull Intent in,
+            @NonNull Consumer<String> penalty) {
+        Intent intent = new Intent();
+
+        ComponentName componentName = in.getComponent();
+        if ((mAllowAnyComponent && componentName == null)
+                || mAllowedComponents.test(componentName)) {
+            intent.setComponent(componentName);
+        } else {
+            penalty.accept("Component is not allowed: " + componentName);
+            intent.setComponent(new ComponentName("android", "java.lang.Void"));
+        }
+
+        String packageName = in.getPackage();
+        if (packageName == null || mAllowedPackages.test(packageName)) {
+            intent.setPackage(packageName);
+        } else {
+            penalty.accept(("Package is not allowed: " + packageName));
+        }
+
+        if ((mAllowedFlags | in.getFlags()) == mAllowedFlags) {
+            intent.setFlags(in.getFlags());
+        } else {
+            intent.setFlags(mAllowedFlags & in.getFlags());
+            penalty.accept("The intent contains flags that are not allowed: "
+                    + "0x" + Integer.toHexString(in.getFlags() & ~mAllowedFlags));
+        }
+
+        String action = in.getAction();
+        if (action == null || mAllowedActions.test(action)) {
+            intent.setAction(action);
+        } else {
+            penalty.accept("Action is not allowed: " + action);
+        }
+
+        Uri data = in.getData();
+        if (data == null || mAllowedData.test(data)) {
+            intent.setData(data);
+        } else {
+            penalty.accept("Data is not allowed: " + data);
+        }
+
+        String type = in.getType();
+        if (type == null || mAllowedTypes.test(type)) {
+            intent.setDataAndType(intent.getData(), type);
+        } else {
+            penalty.accept("Type is not allowed: " + type);
+        }
+
+        Set<String> categories = in.getCategories();
+        if (categories != null) {
+            for (String category : categories) {
+                if (mAllowedCategories.test(category)) {
+                    intent.addCategory(category);
+                } else {
+                    penalty.accept("Category is not allowed: " + category);
+                }
+            }
+        }
+
+        Bundle extras = in.getExtras();
+        if (extras != null) {
+            for (String key : extras.keySet()) {
+                if (key.equals(Intent.EXTRA_STREAM)
+                        && (mAllowedFlags & Intent.FLAG_GRANT_READ_URI_PERMISSION) == 0) {
+                    penalty.accept(
+                            "Allowing Extra Stream requires also allowing at least "
+                                    + " FLAG_GRANT_READ_URI_PERMISSION Flag.");
+                    continue;
+                }
+                if (key.equals(MediaStore.EXTRA_OUTPUT)
+                        && (~mAllowedFlags
+                        & (Intent.FLAG_GRANT_READ_URI_PERMISSION
+                        | Intent.FLAG_GRANT_WRITE_URI_PERMISSION)) != 0) {
+                    penalty.accept("Allowing Extra Output requires also allowing "
+                            + "FLAG_GRANT_READ_URI_PERMISSION and FLAG_GRANT_WRITE_URI_PERMISSION"
+                            + " Flags.");
+                    continue;
+                }
+                Object value = extras.get(key);
+                Predicate<Object> test = mAllowedExtras.get(key);
+                if (test != null && test.test(value)) {
+                    putExtra(intent, key, value);
+                } else {
+                    penalty.accept("Extra is not allowed. Key: " + key + ". Value: " + value);
+                }
+            }
+        }
+
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+            Api16Impl.sanitizeClipData(in, intent, mAllowedClipData, mAllowClipDataText,
+                    mAllowedClipDataUri, penalty);
+        }
+
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+            if (mAllowIdentifier) {
+                Api29Impl.setIdentifier(intent, Api29Impl.getIdentifier(in));
+            } else if (Api29Impl.getIdentifier(in) != null) {
+                penalty.accept("Identifier is not allowed: " + Api29Impl.getIdentifier(in));
+            }
+        }
+
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
+            if (mAllowSelector) {
+                Api15Impl.setSelector(intent, Api15Impl.getSelector(in));
+            } else if (Api15Impl.getSelector(in) != null) {
+                penalty.accept("Selector is not allowed: " + Api15Impl.getSelector(in));
+            }
+        }
+
+        if (mAllowSourceBounds) {
+            intent.setSourceBounds(in.getSourceBounds());
+        } else if (in.getSourceBounds() != null) {
+            penalty.accept("SourceBounds is not allowed: " + in.getSourceBounds());
+        }
+
+        return intent;
+    }
+
+    private void putExtra(Intent intent, String key, Object value) {
+        if (value == null) {
+            intent.getExtras().putString(key, null);
+        } else if (value instanceof Parcelable) {
+            intent.putExtra(key, (Parcelable) value);
+        } else if (value instanceof Parcelable[]) {
+            intent.putExtra(key, (Parcelable[]) value);
+        } else if (value instanceof Serializable) {
+            intent.putExtra(key, (Serializable) value);
+        } else {
+            throw new IllegalArgumentException("Unsupported type " + value.getClass());
+        }
+    }
+
+    /**
+     * General strategy of building is to only offer additive “or” operations that are chained
+     * together. Any more complex operations can be performed by the developer providing their
+     * own custom Predicate.
+     */
+    public static final class Builder {
+        private static final int HISTORY_STACK_FLAGS =
+                Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT
+                        | Intent.FLAG_ACTIVITY_CLEAR_TASK
+                        | Intent.FLAG_ACTIVITY_CLEAR_TOP
+                        | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
+                        | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
+                        | Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT
+                        | Intent.FLAG_ACTIVITY_MULTIPLE_TASK
+                        | Intent.FLAG_ACTIVITY_NEW_DOCUMENT
+                        | Intent.FLAG_ACTIVITY_NEW_TASK
+                        | Intent.FLAG_ACTIVITY_NO_ANIMATION
+                        | Intent.FLAG_ACTIVITY_NO_HISTORY
+                        | Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP
+                        | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
+                        | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
+                        | Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS
+                        | Intent.FLAG_ACTIVITY_SINGLE_TOP
+                        | Intent.FLAG_ACTIVITY_TASK_ON_HOME;
+
+        private static final int RECEIVER_FLAGS =
+                Intent.FLAG_RECEIVER_FOREGROUND
+                        | Intent.FLAG_RECEIVER_NO_ABORT
+                        | Intent.FLAG_RECEIVER_REGISTERED_ONLY
+                        | Intent.FLAG_RECEIVER_REPLACE_PENDING
+                        | Intent.FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS;
+
+        private int mAllowedFlags;
+        private Predicate<String> mAllowedActions = v -> false;
+        private Predicate<Uri> mAllowedData = v -> false;
+        private Predicate<String> mAllowedTypes = v -> false;
+        private Predicate<String> mAllowedCategories = v -> false;
+        private Predicate<String> mAllowedPackages = v -> false;
+        private Predicate<ComponentName> mAllowedComponents = v -> false;
+        private boolean mAllowAnyComponent;
+        private boolean mAllowSomeComponents;
+        private Map<String, Predicate<Object>> mAllowedExtras = new HashMap<>();
+        private boolean mAllowClipDataText = false;
+        private Predicate<Uri> mAllowedClipDataUri = v -> false;
+        private Predicate<ClipData> mAllowedClipData = v -> false;
+        private boolean mAllowIdentifier;
+        private boolean mAllowSelector;
+        private boolean mAllowSourceBounds;
+
+        /**
+         * Sets allowed flags.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         * In most cases following grant URI permission related flags should
+         * <b>not</b> be allowed:
+         * <ul>
+         * <li>FLAG_GRANT_PERSISTABLE_URI_PERMISSION</li>
+         * <li>FLAG_GRANT_PREFIX_URI_PERMISSION</li>
+         * <li>FLAG_GRANT_READ_URI_PERMISSION</li>
+         * <li>FLAG_GRANT_WRITE_URI_PERMISSION</li>
+         * </ul>
+         * Setting these flags would allow others to access URIs only your
+         * app has permission to access. These URIs could be set in intent's data, clipData
+         * and/or, in certain circumstances, extras with key of {@link Intent#EXTRA_STREAM} or
+         * {@link MediaStore#EXTRA_OUTPUT}.
+         * When these flags are allowed, you should sanitize URIs. See
+         * {@link #allowDataWithAuthority(String)},
+         * {@link #allowData(Predicate)}, {@link #allowClipDataUriWithAuthority(String)},
+         * {@link #allowClipDataUri(Predicate)}, {@link #allowExtraStreamUriWithAuthority(String)},
+         * {@link #allowExtraStream(Predicate)}, {@link #allowExtraOutput(String)},
+         * {@link #allowExtraOutput(Predicate)}
+         *
+         * @param flags allowed flags.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowFlags(int flags) {
+            mAllowedFlags |= flags;
+            return this;
+        }
+
+        /**
+         * Adds all history stack flags into the allowed flags set. They are:
+         * <ul>
+         * <li>FLAG_ACTIVITY_BROUGHT_TO_FRONT
+         * <li>FLAG_ACTIVITY_CLEAR_TASK
+         * <li>FLAG_ACTIVITY_CLEAR_TOP
+         * <li>FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
+         * <li>FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
+         * <li>FLAG_ACTIVITY_LAUNCH_ADJACENT
+         * <li>FLAG_ACTIVITY_MULTIPLE_TASK
+         * <li>FLAG_ACTIVITY_NEW_DOCUMENT
+         * <li>FLAG_ACTIVITY_NEW_TASK
+         * <li>FLAG_ACTIVITY_NO_ANIMATION
+         * <li>FLAG_ACTIVITY_NO_HISTORY
+         * <li>FLAG_ACTIVITY_PREVIOUS_IS_TOP
+         * <li>FLAG_ACTIVITY_REORDER_TO_FRONT
+         * <li>FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
+         * <li>FLAG_ACTIVITY_RETAIN_IN_RECENTS
+         * <li>FLAG_ACTIVITY_SINGLE_TOP
+         * <li>FLAG_ACTIVITY_TASK_ON_HOME
+         * </ul>
+         *
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowHistoryStackFlags() {
+            mAllowedFlags |= HISTORY_STACK_FLAGS;
+            return this;
+        }
+
+        /**
+         * Adds all receiver flags into the allowed flags set. They are
+         * <ul>
+         * <li>FLAG_RECEIVER_FOREGROUND
+         * <li>FLAG_RECEIVER_NO_ABORT
+         * <li>FLAG_RECEIVER_REGISTERED_ONLY
+         * <li>FLAG_RECEIVER_REPLACE_PENDING
+         * <li>FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS
+         * </ul>
+         *
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowReceiverFlags() {
+            mAllowedFlags |= RECEIVER_FLAGS;
+            return this;
+        }
+
+        /**
+         * Add an action to the list of allowed actions.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param action the name of an action.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowAction(@NonNull String action) {
+            checkNotNull(action);
+            allowAction(action::equals);
+            return this;
+        }
+
+        /**
+         * Add a filter for allowed actions.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param filter a filter that tests if an action is allowed.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowAction(@NonNull Predicate<String> filter) {
+            checkNotNull(filter);
+            mAllowedActions = mAllowedActions.or(filter);
+            return this;
+        }
+
+        /**
+         * Convenient method to allow all data whose URI authority equals to the given.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param authority the URI's authority.
+         * @return this builder
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowDataWithAuthority(@NonNull String authority) {
+            checkNotNull(authority);
+            allowData(v -> authority.equals(v.getAuthority()));
+            return this;
+        }
+
+        /**
+         * Allow data that passes the filter test.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param filter data filter.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowData(@NonNull Predicate<Uri> filter) {
+            checkNotNull(filter);
+            mAllowedData = mAllowedData.or(filter);
+            return this;
+        }
+
+        /**
+         * Add a data type to the allowed type list. Exact match is used to check the allowed
+         * types. For example, if you pass in "image/*" here, it won't allow an intent with type of
+         * "image/png".
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param type the data type that is allowed
+         * @return this builder
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowType(@NonNull String type) {
+            checkNotNull(type);
+            return allowType(type::equals);
+        }
+
+        /**
+         * Add a filter for allowed data types.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param filter the data type filter.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowType(@NonNull Predicate<String> filter) {
+            checkNotNull(filter);
+            mAllowedTypes = mAllowedTypes.or(filter);
+            return this;
+        }
+
+        /**
+         * Add a category to the allowed category list.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param category the allowed category.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowCategory(@NonNull String category) {
+            checkNotNull(category);
+            return allowCategory(category::equals);
+        }
+
+        /**
+         * Add a filter for allowed categories.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param filter the category filter.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowCategory(@NonNull Predicate<String> filter) {
+            checkNotNull(filter);
+            mAllowedCategories = mAllowedCategories.or(filter);
+            return this;
+        }
+
+        /**
+         * Add a package to the allowed packages.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowPackage(@NonNull String packageName) {
+            checkNotNull(packageName);
+            return allowPackage(packageName::equals);
+        }
+
+        /**
+         * Add a filter for allowed packages.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param filter the package name filter.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowPackage(@NonNull Predicate<String> filter) {
+            checkNotNull(filter);
+            mAllowedPackages = mAllowedPackages.or(filter);
+            return this;
+        }
+
+        /**
+         * Add a component to the allowed components list.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param component the allowed component.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowComponent(@NonNull ComponentName component) {
+            checkNotNull(component);
+            return allowComponent(component::equals);
+        }
+
+        /**
+         * Add a filter for allowed components.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param filter the component filter.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowComponent(@NonNull Predicate<ComponentName> filter) {
+            checkNotNull(filter);
+            mAllowSomeComponents = true;
+            mAllowedComponents = mAllowedComponents.or(filter);
+            return this;
+        }
+
+        /**
+         * Add a package to the allowed package list. Any component under this package is allowed.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowComponentWithPackage(@NonNull String packageName) {
+            checkNotNull(packageName);
+            return allowComponent(v -> packageName.equals(v.getPackageName()));
+        }
+
+        /**
+         * Allow any components. Be cautious to call this method. When this method is called, you
+         * should definitely disallow the 4 grant URI permission flags.
+         * This method is useful in case the redirected intent is designed to support implicit
+         * intent. This method is made mutually exclusive to the 4 methods that allow components
+         * or packages.
+         *
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowAnyComponent() {
+            mAllowAnyComponent = true;
+            mAllowedComponents = v -> true;
+            return this;
+        }
+
+        /**
+         * Allows clipData that contains text.
+         * overwrite each other.
+         *
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowClipDataText() {
+            mAllowClipDataText = true;
+            return this;
+        }
+
+        /**
+         * Allows clipData whose items URIs authorities match the given authority.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param authority the given authority.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowClipDataUriWithAuthority(@NonNull String authority) {
+            checkNotNull(authority);
+            return allowClipDataUri(v -> authority.equals(v.getAuthority()));
+        }
+
+
+        /**
+         * Allows clipData whose items URIs pass the given URI filter.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param filter the given URI filter.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowClipDataUri(@NonNull Predicate<Uri> filter) {
+            checkNotNull(filter);
+            mAllowedClipDataUri = mAllowedClipDataUri.or(filter);
+            return this;
+        }
+
+
+        /**
+         * Allows clipData that passes the given filter.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param filter the given clipData filter.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowClipData(@NonNull Predicate<ClipData> filter) {
+            checkNotNull(filter);
+            mAllowedClipData = mAllowedClipData.or(filter);
+            return this;
+        }
+
+        /**
+         * Allows an extra member whose key and type of value matches the given.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param key   the given extra key.
+         * @param clazz the given class of the extra value.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowExtra(@NonNull String key, @NonNull Class<?> clazz) {
+            return allowExtra(key, clazz, (v) -> true);
+        }
+
+
+        /**
+         * Allows an extra member whose key matches the given key and whose value is of the type of
+         * the given clazz and passes the value filter.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param key         given extra key.
+         * @param clazz       given type of the extra value.
+         * @param valueFilter the extra value filter.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public <T> Builder allowExtra(@NonNull String key, @NonNull Class<T> clazz,
+                @NonNull Predicate<T> valueFilter) {
+            checkNotNull(key);
+            checkNotNull(clazz);
+            checkNotNull(valueFilter);
+            return allowExtra(key, v -> clazz.isInstance(v) && valueFilter.test(clazz.cast(v)));
+        }
+
+        /**
+         * Allows an extra member whose key matches the given key and whose value passes the
+         * filter test.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param key    the extra key.
+         * @param filter the filter for the extra value.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowExtra(@NonNull String key, @NonNull Predicate<Object> filter) {
+            checkNotNull(key);
+            checkNotNull(filter);
+            Predicate<Object> allowedExtra = mAllowedExtras.get(key);
+            if (allowedExtra == null) allowedExtra = v -> false;
+            allowedExtra = allowedExtra.or(filter);
+            mAllowedExtras.put(key, allowedExtra);
+            return this;
+        }
+
+        /**
+         * Allows an extra member with the key Intent.EXTRA_STREAM. The value type has to be URI
+         * and the authority matches the given parameter.
+         * In order to use this method, user has to be explicitly allow the
+         * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION} flag. Otherwise, it will trigger penalty
+         * during sanitization.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param uriAuthority the given URI authority.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowExtraStreamUriWithAuthority(@NonNull String uriAuthority) {
+            checkNotNull(uriAuthority);
+            allowExtra(Intent.EXTRA_STREAM, Uri.class,
+                    (v) -> uriAuthority.equals(v.getAuthority()));
+            return this;
+        }
+
+        /**
+         * Allows an extra member with the key Intent.EXTRA_STREAM. The value type has to be URI
+         * and the value also passes the given filter test.
+         * In order to use this method, user has to be explicitly allow the
+         * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION} flag. Otherwise, it will trigger penalty
+         * during sanitization.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param filter the given URI authority.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowExtraStream(@NonNull Predicate<Uri> filter) {
+            allowExtra(Intent.EXTRA_STREAM, Uri.class, filter);
+            return this;
+        }
+
+        /**
+         * Allows an extra member with the key MediaStore.EXTRA_OUTPUT. The value type has to be URI
+         * and the authority matches the given parameter.
+         * In order to use this method, user has to be explicitly allow the
+         * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION} and
+         * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION} flags. Otherwise, it will trigger penalty
+         * during sanitization.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param uriAuthority the given URI authority.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowExtraOutput(@NonNull String uriAuthority) {
+            allowExtra(MediaStore.EXTRA_OUTPUT, Uri.class,
+                    (v) -> uriAuthority.equals(v.getAuthority()));
+            return this;
+        }
+
+        /**
+         * Allows an extra member with the key MediaStore.EXTRA_OUTPUT. The value type has to be URI
+         * and the value also passes the given filter test.
+         * In order to use this method, user has to be explicitly allow the
+         * {@link Intent#FLAG_GRANT_READ_URI_PERMISSION} and
+         * {@link Intent#FLAG_GRANT_WRITE_URI_PERMISSION} flags. Otherwise, it will trigger penalty
+         * during sanitization.
+         * This method can be called multiple times and the result is additive. They will not
+         * overwrite each other.
+         *
+         * @param filter the given URI authority.
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowExtraOutput(@NonNull Predicate<Uri> filter) {
+            allowExtra(MediaStore.EXTRA_OUTPUT, Uri.class, filter);
+            return this;
+        }
+
+        /**
+         * Allows any identifier.
+         *
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowIdentifier() {
+            mAllowIdentifier = true;
+            return this;
+        }
+
+        /**
+         * Allow any selector.
+         *
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowSelector() {
+            mAllowSelector = true;
+            return this;
+        }
+
+        /**
+         * Allow any source bounds.
+         *
+         * @return this builder.
+         */
+        @SuppressLint("BuilderSetStyle")
+        @NonNull
+        public Builder allowSourceBounds() {
+            mAllowSourceBounds = true;
+            return this;
+        }
+
+        /**
+         * Build the IntentSanitizer.
+         *
+         * @return the IntentSanitizer
+         */
+        @SuppressLint("SyntheticAccessor")
+        @NonNull
+        public IntentSanitizer build() {
+            if ((mAllowAnyComponent && mAllowSomeComponents)
+                    || (!mAllowAnyComponent && !mAllowSomeComponents)) {
+                throw new SecurityException(
+                        "You must call either allowAnyComponent or one or more "
+                                + "of the allowComponent methods; but not both.");
+            }
+
+            IntentSanitizer sanitizer = new IntentSanitizer();
+            sanitizer.mAllowedFlags = this.mAllowedFlags;
+            sanitizer.mAllowedActions = this.mAllowedActions;
+            sanitizer.mAllowedData = this.mAllowedData;
+            sanitizer.mAllowedTypes = this.mAllowedTypes;
+            sanitizer.mAllowedCategories = this.mAllowedCategories;
+            sanitizer.mAllowedPackages = this.mAllowedPackages;
+            sanitizer.mAllowAnyComponent = this.mAllowAnyComponent;
+            sanitizer.mAllowedComponents = this.mAllowedComponents;
+            sanitizer.mAllowedExtras = this.mAllowedExtras;
+            sanitizer.mAllowClipDataText = this.mAllowClipDataText;
+            sanitizer.mAllowedClipDataUri = this.mAllowedClipDataUri;
+            sanitizer.mAllowedClipData = this.mAllowedClipData;
+            sanitizer.mAllowIdentifier = this.mAllowIdentifier;
+            sanitizer.mAllowSelector = this.mAllowSelector;
+            sanitizer.mAllowSourceBounds = this.mAllowSourceBounds;
+            return sanitizer;
+        }
+    }
+
+    @RequiresApi(15)
+    private static class Api15Impl {
+        private Api15Impl() {
+            // This class is not instantiable.
+        }
+
+        @DoNotInline
+        static void setSelector(Intent intent, Intent selector) {
+            intent.setSelector(selector);
+        }
+
+        @DoNotInline
+        static Intent getSelector(Intent intent) {
+            return intent.getSelector();
+        }
+    }
+
+    @RequiresApi(16)
+    private static class Api16Impl {
+        private Api16Impl() {
+        }
+
+        @DoNotInline
+        static void sanitizeClipData(@NonNull Intent in, Intent out,
+                Predicate<ClipData> mAllowedClipData,
+                boolean mAllowClipDataText,
+                Predicate<Uri> mAllowedClipDataUri, Consumer<String> penalty) {
+            ClipData clipData = in.getClipData();
+
+            if (clipData == null) return;
+
+            ClipData newClipData = null;
+            if (mAllowedClipData != null && mAllowedClipData.test(clipData)) {
+                out.setClipData(clipData);
+            } else {
+                for (int i = 0; i < clipData.getItemCount(); i++) {
+                    ClipData.Item item = clipData.getItemAt(i);
+                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+                        Api31Impl.checkOtherMembers(i, item, penalty);
+                    } else {
+                        checkOtherMembers(i, item, penalty);
+                    }
+
+                    CharSequence itemText = null;
+                    if (mAllowClipDataText) {
+                        itemText = item.getText();
+                    } else {
+                        if (item.getText() != null) {
+                            penalty.accept(
+                                    "Item text cannot contain value. Item position: " + i + "."
+                                            + " Text: " + item.getText());
+                        }
+                    }
+
+                    Uri itemUri = null;
+                    if (mAllowedClipDataUri == null) {
+                        if (item.getUri() != null) {
+                            penalty.accept(
+                                    "Item URI is not allowed. Item position: " + i + ". URI: "
+                                            + item.getUri());
+                        }
+                    } else {
+                        if (item.getUri() == null || mAllowedClipDataUri.test(item.getUri())) {
+                            itemUri = item.getUri();
+                        } else {
+                            penalty.accept(
+                                    "Item URI is not allowed. Item position: " + i + ". URI: "
+                                            + item.getUri());
+                        }
+                    }
+
+                    if (itemText != null || itemUri != null) {
+                        if (newClipData == null) {
+                            newClipData = new ClipData(clipData.getDescription(),
+                                    new ClipData.Item(itemText, null, itemUri));
+                        } else {
+                            newClipData.addItem(new ClipData.Item(itemText, null, itemUri));
+                        }
+                    }
+                }
+                if (newClipData != null) {
+                    out.setClipData(newClipData);
+                }
+            }
+        }
+
+        private static void checkOtherMembers(int i, ClipData.Item item, Consumer<String> penalty) {
+            if (item.getHtmlText() != null || item.getIntent() != null) {
+                penalty.accept("ClipData item at position " + i + " contains htmlText, "
+                        + "textLinks or intent: " + item);
+            }
+        }
+
+        @RequiresApi(31)
+        private static class Api31Impl {
+            private Api31Impl() {
+            }
+
+            @DoNotInline
+            static void checkOtherMembers(int i, ClipData.Item item, Consumer<String> penalty) {
+                if (item.getHtmlText() != null || item.getIntent() != null
+                        || item.getTextLinks() != null) {
+                    penalty.accept("ClipData item at position " + i + " contains htmlText, "
+                            + "textLinks or intent: " + item);
+                }
+            }
+        }
+    }
+
+    @RequiresApi(29)
+    private static class Api29Impl {
+        private Api29Impl() {
+            // This class is not instantiable.
+        }
+
+        @DoNotInline
+        static Intent setIdentifier(Intent intent, String identifier) {
+            return intent.setIdentifier(identifier);
+        }
+
+        @DoNotInline
+        static String getIdentifier(Intent intent) {
+            return intent.getIdentifier();
+        }
+    }
+}
+
diff --git a/core/core/src/main/java/androidx/core/content/UriMatcherCompat.java b/core/core/src/main/java/androidx/core/content/UriMatcherCompat.java
new file mode 100644
index 0000000..e3b33c7
--- /dev/null
+++ b/core/core/src/main/java/androidx/core/content/UriMatcherCompat.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.core.content;
+
+import android.content.UriMatcher;
+import android.net.Uri;
+
+import androidx.annotation.NonNull;
+import androidx.core.util.Predicate;
+
+/**
+ * Helper for accessing {@link UriMatcher} to create Uri Predicate.
+ */
+public class UriMatcherCompat {
+    private UriMatcherCompat(){
+        /* Hide constructor */
+    }
+
+    /**
+     * Creates a Uri predicate from a {@link UriMatcher}.
+     * @param matcher the uriMatcher.
+     * @return the predicate created from the uriMatcher.
+     */
+    @NonNull
+    public static Predicate<Uri> asPredicate(@NonNull UriMatcher matcher) {
+        return v -> matcher.match(v) != UriMatcher.NO_MATCH;
+    }
+}
diff --git a/core/core/src/main/java/androidx/core/util/Predicate.java b/core/core/src/main/java/androidx/core/util/Predicate.java
index ceb9e6f..1f4d872 100644
--- a/core/core/src/main/java/androidx/core/util/Predicate.java
+++ b/core/core/src/main/java/androidx/core/util/Predicate.java
@@ -18,11 +18,15 @@
 
 import android.annotation.SuppressLint;
 
+import java.util.Objects;
+
 /**
  * Compat version of {@link java.util.function.Predicate}
  *
  * @param <T> the type of the input to the operation
  */
+@SuppressLint("UnknownNullness")
+@SuppressWarnings("MissingNullability")
 public interface Predicate<T> {
 
     /**
@@ -32,6 +36,97 @@
      * @return {@code true} if the input argument matches the predicate,
      * otherwise {@code false}
      */
-    @SuppressLint("UnknownNullness")
     boolean test(T t);
+
+    /**
+     * Returns a composed predicate that represents a short-circuiting logical
+     * AND of this predicate and another.  When evaluating the composed
+     * predicate, if this predicate is {@code false}, then the {@code other}
+     * predicate is not evaluated.
+     *
+     * <p>Any exceptions thrown during evaluation of either predicate are relayed
+     * to the caller; if evaluation of this predicate throws an exception, the
+     * {@code other} predicate will not be evaluated.
+     *
+     * @param other a predicate that will be logically-ANDed with this
+     *              predicate
+     * @return a composed predicate that represents the short-circuiting logical
+     * AND of this predicate and the {@code other} predicate
+     * @throws NullPointerException if other is null
+     */
+    @SuppressLint("MissingNullability")
+    default Predicate<T> and(@SuppressLint("MissingNullability") Predicate<? super T> other) {
+        Objects.requireNonNull(other);
+        return (t) -> test(t) && other.test(t);
+    }
+
+    /**
+     * Returns a predicate that represents the logical negation of this
+     * predicate.
+     *
+     * @return a predicate that represents the logical negation of this
+     * predicate
+     */
+    @SuppressLint("MissingNullability")
+    default Predicate<T> negate() {
+        return (t) -> !test(t);
+    }
+
+    /**
+     * Returns a composed predicate that represents a short-circuiting logical
+     * OR of this predicate and another.  When evaluating the composed
+     * predicate, if this predicate is {@code true}, then the {@code other}
+     * predicate is not evaluated.
+     *
+     * <p>Any exceptions thrown during evaluation of either predicate are relayed
+     * to the caller; if evaluation of this predicate throws an exception, the
+     * {@code other} predicate will not be evaluated.
+     *
+     * @param other a predicate that will be logically-ORed with this
+     *              predicate
+     * @return a composed predicate that represents the short-circuiting logical
+     * OR of this predicate and the {@code other} predicate
+     * @throws NullPointerException if other is null
+     */
+    @SuppressLint("MissingNullability")
+    default Predicate<T> or(@SuppressLint("MissingNullability") Predicate<? super T> other) {
+        Objects.requireNonNull(other);
+        return (t) -> test(t) || other.test(t);
+    }
+
+    /**
+     * Returns a predicate that tests if two arguments are equal according
+     * to {@link Objects#equals(Object, Object)}.
+     *
+     * @param <T>       the type of arguments to the predicate
+     * @param targetRef the object reference with which to compare for equality,
+     *                  which may be {@code null}
+     * @return a predicate that tests if two arguments are equal according
+     * to {@link Objects#equals(Object, Object)}
+     */
+    @SuppressLint("MissingNullability")
+    static <T> Predicate<T> isEqual(@SuppressLint("MissingNullability") Object targetRef) {
+        return (null == targetRef)
+                ? object -> Objects.isNull(object)
+                : object -> targetRef.equals(object);
+    }
+
+    /**
+     * Returns a predicate that is the negation of the supplied predicate.
+     * This is accomplished by returning result of the calling
+     * {@code target.negate()}.
+     *
+     * @param <T>    the type of arguments to the specified predicate
+     * @param target predicate to negate
+     * @return a predicate that negates the results of the supplied
+     * predicate
+     * @throws NullPointerException if target is null
+     * @since 11
+     */
+    @SuppressWarnings("unchecked")
+    @SuppressLint("MissingNullability")
+    static <T> Predicate<T> not(@SuppressLint("MissingNullability") Predicate<? super T> target) {
+        Objects.requireNonNull(target);
+        return (Predicate<T>) target.negate();
+    }
 }
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 b14385f..eabdbee 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
@@ -643,6 +643,16 @@
                         ?  AccessibilityNodeInfo.AccessibilityAction.ACTION_DRAG_CANCEL : null,
                         android.R.id.accessibilityActionDragCancel, null, null, null);
 
+        /**
+         * Action to show suggestions for editable text.
+         */
+        @NonNull
+        public static final AccessibilityActionCompat ACTION_SHOW_TEXT_SUGGESTIONS =
+                new AccessibilityActionCompat(Build.VERSION.SDK_INT >= 33
+                        ?   AccessibilityNodeInfo.AccessibilityAction.ACTION_SHOW_TEXT_SUGGESTIONS
+                        :   null, android.R.id.accessibilityActionShowTextSuggestions, null,
+                        null, null);
+
         final Object mAction;
         private final int mId;
         private final Class<? extends CommandArguments> mViewCommandArgumentClass;
@@ -2681,6 +2691,52 @@
     }
 
     /**
+     * Gets if the node has selectable text.
+     *
+     * <p>
+     *     Services should use {@link #ACTION_SET_SELECTION} for selection. Editable text nodes must
+     *     also be selectable. But not all UIs will populate this field, so services should consider
+     *     'isTextSelectable | isEditable' to ensure they don't miss nodes with selectable text.
+     *  Compatibility:
+     *  <ul>
+     *      <li>Api &lt; 33: Returns false.</li>
+     *  </ul>
+     * </p>
+     *
+     * @see #isEditable
+     * @return True if the node has selectable text.
+     */
+    public boolean isTextSelectable() {
+        if (Build.VERSION.SDK_INT >= 33) {
+            return Api33Impl.isTextSelectable(mInfo);
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Sets if the node has selectable text.
+     * <p>
+     *   <strong>Note:</strong> Cannot be called from an
+     *   {@link android.accessibilityservice.AccessibilityService}.
+     *   This class is made immutable before being delivered to an AccessibilityService.
+     *  Compatibility:
+     *  <ul>
+     *      <li>Api &lt; 33: Does not operate.</li>
+     *  </ul>
+     * </p>
+     *
+     * @param selectableText True if the node has selectable text, false otherwise.
+     *
+     * @throws IllegalStateException If called from an AccessibilityService.
+     */
+    public void setTextSelectable(boolean selectableText) {
+        if (Build.VERSION.SDK_INT >= 33) {
+            Api33Impl.setTextSelectable(mInfo, selectableText);
+        }
+    }
+
+    /**
      * Returns whether the node originates from a view considered important for accessibility.
      *
      * @return {@code true} if the node originates from a view considered important for
@@ -4482,5 +4538,15 @@
                 AccessibilityNodeInfo info) {
             return info.getExtraRenderingInfo();
         }
+
+        @DoNotInline
+        public static boolean isTextSelectable(AccessibilityNodeInfo info) {
+            return info.isTextSelectable();
+        }
+
+        @DoNotInline
+        public static void setTextSelectable(AccessibilityNodeInfo info, boolean selectable) {
+            info.setTextSelectable(selectable);
+        }
     }
 }
diff --git a/core/core/src/test/java/androidx/core/content/IntentSanitizerTest.java b/core/core/src/test/java/androidx/core/content/IntentSanitizerTest.java
new file mode 100644
index 0000000..29399f5
--- /dev/null
+++ b/core/core/src/test/java/androidx/core/content/IntentSanitizerTest.java
@@ -0,0 +1,1055 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.core.content;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assert.assertThrows;
+
+import android.content.ClipData;
+import android.content.ClipDescription;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.UriMatcher;
+import android.graphics.Rect;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.provider.MediaStore;
+
+import androidx.test.filters.SmallTest;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+
+import java.io.FileNotFoundException;
+import java.io.Serializable;
+import java.util.ArrayList;
+
+/**
+ * Tests for {@link IntentSanitizer}
+ */
+@SmallTest
+@RunWith(RobolectricTestRunner.class)
+public class IntentSanitizerTest {
+    //private Context mContext;
+    private static final ComponentName TEST_COMPONENT = new ComponentName(
+            "com.test.intent.sanitizer", "SanitizerService");
+    private static final ComponentName TEST_COMPONENT_2 = new ComponentName(
+            "com.test.intent.sanitizer", "SanitizerService2");
+    private static final String TEST_INTENT_FILTER_ACTION = "testIntentFilterAction";
+    private static final String TEST_INTENT_FILTER_DATATYPE = "testIntentFilter/DataType";
+    public static final String TEST_PACKAGE_NAME = "com.test.intent.sanitizer";
+
+    private static Intent basicIntent() {
+        Intent intent = new Intent();
+        intent.setComponent(TEST_COMPONENT);
+        return intent;
+    }
+
+    private static IntentSanitizer.Builder basicSanitizerBuilder() {
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+        builder.allowComponent(TEST_COMPONENT);
+        return builder;
+    }
+
+    @Test
+    public void sanitizeByThrowing_noException() {
+        Intent intent = basicIntent();
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+
+        builder.build().sanitizeByThrowing(intent);
+    }
+
+    @Test
+    public void sanitizeByThrowing_throwException() {
+        Intent intent = basicIntent();
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        intent.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+
+        assertThrows(SecurityException.class, () -> builder.build().sanitizeByThrowing(intent));
+    }
+
+    @Test
+    public void intentWithFlags_builderNoAllowedFlags_filterOut() {
+        Intent intent = basicIntent();
+        intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+
+        // custom consumer to test error message.
+        StringBuilder result = new StringBuilder();
+        intent = builder.build().sanitize(intent, result::append);
+
+        assertThat(intent.getFlags()).isEqualTo(0);
+        assertThat(result.toString()).isEqualTo("The intent contains flags that are not allowed: "
+                + "0x10400000");
+    }
+
+    @Test
+    public void intentWithFlags_builderAllowedSomeExtraFlags_filterInSomeFlags() {
+        Intent intent = basicIntent();
+        intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder().allowFlags(
+                Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_GRANT_READ_URI_PERMISSION);
+
+        // custom consumer to test error message.
+        StringBuilder result = new StringBuilder();
+        intent = builder.build().sanitize(intent, result::append);
+
+        assertThat(intent.getFlags()).isEqualTo(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
+        assertThat(result.toString()).isEqualTo("The intent contains flags that are not allowed: "
+                + "0x10000000");
+    }
+
+    @Test
+    public void intentWithFlags_builderAllowedSomeFlags_filterInSomeFlags() {
+        Intent intent = basicIntent();
+        intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder().allowFlags(
+                Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
+
+        // custom consumer to test error message.
+        StringBuilder result = new StringBuilder();
+        intent = builder.build().sanitize(intent, result::append);
+
+        assertThat(intent.getFlags()).isEqualTo(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
+        assertThat(result.toString()).isEqualTo("The intent contains flags that are not allowed: "
+                + "0x10000000");
+    }
+
+    @Test
+    public void intentWithFlags_builderAllowedAllFlags_filterIn() {
+        Intent intent = basicIntent();
+        intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder()
+                .allowFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT)
+                .allowFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getFlags()).isEqualTo(
+                Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
+    }
+
+    @Test
+    public void intentWithFlags_builderAllowedMoreFlags_filterIn() {
+        Intent intent = basicIntent();
+        intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder()
+                .allowFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT)
+                .allowFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+                .allowFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getFlags()).isEqualTo(
+                Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
+    }
+
+    @Test
+    public void intentWithAction_builderNoActionAllowed_filterOut() {
+        Intent intent = basicIntent();
+        intent.setAction(Intent.ACTION_VIEW);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+
+        Intent newIntent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(newIntent.getAction()).isNull();
+    }
+
+    @Test
+    public void intentWithAction_builderAllowedSameAction_filterIn() {
+        Intent intent = basicIntent();
+        intent.setAction(Intent.ACTION_VIEW);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowAction(Intent.ACTION_VIEW);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getAction()).isEqualTo(Intent.ACTION_VIEW);
+    }
+
+    @Test
+    public void intentWithAction_builderAllowedDifferentAction_filterOut() {
+        Intent intent = basicIntent();
+        intent.setAction(Intent.ACTION_VIEW);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowAction(Intent.ACTION_SEND);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getAction()).isNull();
+    }
+
+    @Test
+    public void intentWithAction_builderAllowedMoreActions_filterIn() {
+        Intent intent = basicIntent();
+        intent.setAction(Intent.ACTION_VIEW);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder()
+                .allowAction(Intent.ACTION_SEND)
+                .allowAction(Intent.ACTION_VIEW);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getAction()).isEqualTo(Intent.ACTION_VIEW);
+    }
+
+    @Test
+    public void intentWithData_builderWithNoDataAllowed_filterOut() {
+        Intent intent = basicIntent();
+        intent.setData(Uri.parse("content://people/1"));
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getData()).isNull();
+    }
+
+    @Test
+    public void intentWithData_builderWithDifferentAuthority_filterOut() {
+        Intent intent = basicIntent();
+        intent.setData(Uri.parse("content://people/1"));
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowDataWithAuthority("dog");
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getData()).isNull();
+    }
+
+    @Test
+    public void intentWithData_builderWithSameAuthority_filterIn() {
+        Intent intent = basicIntent();
+        intent.setData(Uri.parse("content://people/1"));
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowDataWithAuthority("people");
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getData()).isEqualTo(Uri.parse("content://people/1"));
+    }
+
+    @Test
+    public void intentWithData_builderWithInCorrectUriMatcher_filterOut() {
+        Intent intent = basicIntent();
+        intent.setData(Uri.parse("content://people/1"));
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
+        uriMatcher.addURI("people", "2", 2);
+        builder.allowData(UriMatcherCompat.asPredicate(uriMatcher));
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getData()).isNull();
+    }
+
+    @Test
+    public void intentWithData_builderWithCorrectUriMatcher_filterIn() {
+        Intent intent = basicIntent();
+        intent.setData(Uri.parse("content://people/1"));
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
+        uriMatcher.addURI("people", "1", 2);
+        builder.allowData(UriMatcherCompat.asPredicate(uriMatcher));
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getData()).isEqualTo(Uri.parse("content://people/1"));
+    }
+
+    @Test
+    public void intentWithType_builderNoTypeAllowed_filterOut() {
+        Intent intent = basicIntent();
+        intent.setType("image/jpeg");
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getType()).isNull();
+    }
+
+    @Test
+    public void intentWithType_builderAllowedDifferentType_filterOut() {
+        Intent intent = basicIntent();
+        intent.setType("image/jpeg");
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowType("image/png");
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getType()).isNull();
+    }
+
+    @Test
+    public void intentWithType_builderAllowedSameType_filterIn() {
+        Intent intent = basicIntent();
+        intent.setType("image/jpeg");
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowType("image/jpeg");
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getType()).isEqualTo("image/jpeg");
+    }
+
+    @Test
+    public void intentWithType_builderAllowedMoreTypes_filterIn() {
+        Intent intent = basicIntent();
+        intent.setType("image/jpeg");
+        IntentSanitizer.Builder builder = basicSanitizerBuilder()
+                .allowType("text/plain")
+                .allowType("image/jpeg");
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getType()).isEqualTo("image/jpeg");
+    }
+
+    @Test
+    public void intentWithCategories_builderAllowsNoCategory_filterOut() {
+        Intent intent = basicIntent();
+        intent.addCategory(Intent.CATEGORY_APP_BROWSER);
+        intent.addCategory(Intent.CATEGORY_APP_CALCULATOR);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getCategories()).isNull();
+    }
+
+    @Test
+    public void intentWithCategories_builderAllowsOtherCategory_filterOut() {
+        Intent intent = basicIntent();
+        intent.addCategory(Intent.CATEGORY_APP_BROWSER);
+        intent.addCategory(Intent.CATEGORY_APP_CALCULATOR);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowCategory(Intent.CATEGORY_APP_CALENDAR);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getCategories()).isNull();
+    }
+
+    @Test
+    public void intentWithCategories_builderAllowOneCategory_OneFilteredIn() {
+        Intent intent = basicIntent();
+        intent.addCategory(Intent.CATEGORY_APP_BROWSER);
+        intent.addCategory(Intent.CATEGORY_APP_CALCULATOR);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowCategory(Intent.CATEGORY_APP_CALCULATOR);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getCategories()).containsExactly(Intent.CATEGORY_APP_CALCULATOR);
+    }
+
+    @Test
+    public void intentWithCategories_builderAllowAllCategories_AllFilteredIn() {
+        Intent intent = basicIntent();
+        intent.addCategory(Intent.CATEGORY_APP_BROWSER);
+        intent.addCategory(Intent.CATEGORY_APP_CALCULATOR);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder()
+                .allowCategory(Intent.CATEGORY_APP_CALCULATOR)
+                .allowCategory(Intent.CATEGORY_APP_BROWSER);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getCategories()).isNotNull();
+        assertThat(intent.getCategories()).containsExactly(Intent.CATEGORY_APP_CALCULATOR,
+                Intent.CATEGORY_APP_BROWSER);
+    }
+
+    @Test
+    public void intentWithCategories_builderAllowMoreCategories_AllFilteredIn() {
+        Intent intent = basicIntent();
+        intent.addCategory(Intent.CATEGORY_APP_BROWSER);
+        intent.addCategory(Intent.CATEGORY_APP_CALCULATOR);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder()
+                .allowCategory(Intent.CATEGORY_APP_CALCULATOR)
+                .allowCategory(Intent.CATEGORY_APP_BROWSER)
+                .allowCategory(Intent.CATEGORY_APP_EMAIL);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getCategories()).isNotNull();
+        assertThat(intent.getCategories()).containsExactly(Intent.CATEGORY_APP_CALCULATOR,
+                Intent.CATEGORY_APP_BROWSER);
+    }
+
+    @Test
+    public void intentWithComponent_builderAllowsNoComponent_ThrowException() {
+        Intent intent = new Intent();
+        intent.setComponent(TEST_COMPONENT);
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+
+        assertThrows(SecurityException.class, () -> builder.build().sanitizeByThrowing(intent));
+    }
+
+    @Test
+    public void intentWithComponent_builderAllowsIncorrectComponent_ThrowException() {
+        Intent intent = new Intent();
+        intent.setComponent(TEST_COMPONENT);
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+        builder.allowComponent(TEST_COMPONENT_2);
+
+        assertThrows(SecurityException.class, () -> builder.build().sanitizeByThrowing(intent));
+    }
+
+    @Test
+    public void intentWithComponent_builderAllowsCorrectComponent_filterIn() {
+        Intent intent = new Intent();
+        intent.setComponent(TEST_COMPONENT);
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+        builder.allowComponent(TEST_COMPONENT);
+
+        Intent newIntent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(newIntent.getComponent()).isEqualTo(TEST_COMPONENT);
+    }
+
+    @Test
+    public void intentWithComponent_builderAllowsMoreComponents_filterIn() {
+        Intent intent = new Intent();
+        intent.setComponent(TEST_COMPONENT);
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+        builder.allowComponent(TEST_COMPONENT)
+                .allowComponent(TEST_COMPONENT_2);
+
+        Intent newIntent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(newIntent.getComponent()).isEqualTo(TEST_COMPONENT);
+    }
+
+    @Test
+    public void intentWithComponent_builderAllowsComponentWithPredicate_filterIn() {
+        Intent intent = new Intent();
+        intent.setComponent(TEST_COMPONENT);
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+        builder.allowComponent(v -> v.getClassName().startsWith("Sanitizer"));
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getComponent()).isEqualTo(TEST_COMPONENT);
+    }
+
+    @Test
+    public void intentWithComponent_builderAllowsComponentWithPackage_filterIn() {
+        Intent intent = new Intent();
+        intent.setComponent(TEST_COMPONENT);
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+        builder.allowComponentWithPackage("com.test.intent.sanitizer");
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getComponent()).isEqualTo(TEST_COMPONENT);
+    }
+
+    @Test
+    public void intentWithComponent_builderAllowsPackage_filterIn() {
+        Intent intent = new Intent();
+        intent.setPackage(TEST_PACKAGE_NAME);
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+        builder.allowAnyComponent()
+                .allowPackage(TEST_PACKAGE_NAME);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getPackage()).isEqualTo(TEST_PACKAGE_NAME);
+    }
+
+    @Test
+    public void intentWithComponent_builderAllowsPackageWithPredicate_filterIn() {
+        Intent intent = new Intent();
+        intent.setPackage(TEST_PACKAGE_NAME);
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+        builder.allowAnyComponent()
+                .allowPackage(v -> v.startsWith("com.test.intent"));
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getPackage()).isEqualTo(TEST_PACKAGE_NAME);
+    }
+
+    @Test
+    public void intentWithComponent_builderAllowsAnyComponent_filterIn() {
+        Intent intent = new Intent();
+        intent.setComponent(TEST_COMPONENT);
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+        builder.allowAnyComponent();
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getComponent()).isEqualTo(TEST_COMPONENT);
+    }
+
+    @Test
+    public void intentWithComponent_builderAllowsAnyComponentAndAllowsComponent_throwException() {
+        Intent intent = new Intent();
+        intent.setComponent(TEST_COMPONENT);
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+        builder.allowComponent(TEST_COMPONENT)
+                .allowAnyComponent();
+
+        assertThrows(SecurityException.class, () -> builder.build().sanitizeByFiltering(intent));
+    }
+
+    @Test
+    public void intentWithComponent_builderMixAllowsAnyComponentAndComponentPred_throwException() {
+        Intent intent = new Intent();
+        intent.setComponent(TEST_COMPONENT);
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+        builder.allowAnyComponent()
+                .allowComponent(v -> v.getPackageName().equals(TEST_COMPONENT.getPackageName()));
+
+        assertThrows(SecurityException.class, () -> builder.build().sanitizeByFiltering(intent));
+    }
+
+    @Test
+    public void intentWithComponent_builderMixAllowsAnyComponentAndCompWithPack_throwException() {
+        Intent intent = new Intent();
+        intent.setComponent(TEST_COMPONENT);
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+        builder.allowComponentWithPackage(TEST_COMPONENT.getPackageName());
+        builder.allowAnyComponent();
+
+        assertThrows(SecurityException.class, () -> builder.build().sanitizeByFiltering(intent));
+    }
+
+    @Test
+    public void implicitIntent_builderAllowAnyComponent_filterIn() {
+        Intent intent = new Intent(TEST_INTENT_FILTER_ACTION);
+        intent.setType(TEST_INTENT_FILTER_DATATYPE);
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+        builder.allowAnyComponent()
+                .allowAction(TEST_INTENT_FILTER_ACTION)
+                .allowType(TEST_INTENT_FILTER_DATATYPE);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getAction()).isEqualTo(TEST_INTENT_FILTER_ACTION);
+        assertThat(intent.getType()).isEqualTo(TEST_INTENT_FILTER_DATATYPE);
+    }
+
+    @Test
+    public void implicitIntent_builderDoNotCallAllowComponent_throwException() {
+        Intent intent = new Intent(TEST_INTENT_FILTER_ACTION);
+        intent.setType(TEST_INTENT_FILTER_DATATYPE);
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+        builder.allowAction(TEST_INTENT_FILTER_ACTION)
+                .allowType(TEST_INTENT_FILTER_DATATYPE);
+
+        assertThrows(SecurityException.class, () -> builder.build().sanitizeByFiltering(intent));
+    }
+
+    @Test
+    public void implicitIntent_builderAllowSomeComponent_throwException() {
+        Intent intent = new Intent(TEST_INTENT_FILTER_ACTION);
+        intent.setType(TEST_INTENT_FILTER_DATATYPE);
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+        builder.allowComponent(TEST_COMPONENT)
+                .allowAction(TEST_INTENT_FILTER_ACTION)
+                .allowType(TEST_INTENT_FILTER_DATATYPE);
+
+        assertThrows(SecurityException.class, () -> builder.build().sanitizeByThrowing(intent));
+    }
+
+    @Test
+    public void intentWithExtras_builderAllowsNoExtra_filterOutAllExtras() {
+        Intent intent = basicIntent();
+        intent.putExtra("IntValue", 1);
+        intent.putExtra("StringValue", "string");
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getExtras()).isNull();
+    }
+
+    @Test
+    public void intentWithExtras_builderAllowsStringExtra_filterIn() {
+        Intent intent = basicIntent();
+        intent.putExtra("IntValue", 1);
+        intent.putExtra("StringValue", "string");
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowExtra("StringValue", String.class);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getStringExtra("StringValue")).isEqualTo("string");
+        assertThat(intent.hasExtra("IntValue")).isFalse();
+    }
+
+    @Test
+    public void intentWithExtras_builderAllowsIntExtraWithWrongType_filterOut() {
+        Intent intent = basicIntent();
+        intent.putExtra("IntValue", 1);
+        intent.putExtra("StringValue", "string");
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowExtra("IntValue", String.class);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.hasExtra("IntValue")).isFalse();
+        assertThat(intent.hasExtra("StringValue")).isFalse();
+    }
+
+    @Test
+    public void intentWithExtras_builderAllowsIntExtraWithFailPredicate_filterOut() {
+        Intent intent = basicIntent();
+        intent.putExtra("IntValue", 1);
+        intent.putExtra("StringValue", "string");
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowExtra("IntValue", Integer.class, v -> v > 10);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.hasExtra("IntValue")).isFalse();
+        assertThat(intent.hasExtra("StringValue")).isFalse();
+    }
+
+    @Test
+    public void intentWithExtras_builderAllowsBothExtrasWithPassPredicate_filterIn() {
+        Intent intent = basicIntent();
+        intent.putExtra("IntValue", 1);
+        intent.putExtra("StringValue", "string");
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowExtra("IntValue", Integer.class, v -> v < 5)
+                .allowExtra("StringValue", String.class, v -> v.startsWith("str"));
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getIntExtra("IntValue", -1)).isEqualTo(1);
+        assertThat(intent.getStringExtra("StringValue")).isEqualTo("string");
+    }
+
+    @Test
+    @Config(minSdk = 16)
+    public void intentWithTextOnlyClipData_builderAllowsNoClipData_filterOut() {
+        Intent intent = basicIntent();
+        ClipDescription description = new ClipDescription("test",
+                new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN});
+        ClipData clipData = new ClipData(description, new ClipData.Item("text"));
+        intent.setClipData(clipData);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getClipData()).isNull();
+    }
+
+    @Test
+    @Config(minSdk = 16)
+    public void intentWithTextOnlyClipData_builderAllowsClipDataText_filterIn() {
+        Intent intent = basicIntent();
+        ClipDescription description = new ClipDescription("test",
+                new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN});
+        ClipData clipData = new ClipData(description, new ClipData.Item("text"));
+        intent.setClipData(clipData);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowClipDataText();
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getClipData().toString()).isEqualTo(clipData.toString());
+    }
+
+    @Test
+    @Config(minSdk = 16)
+    public void intentWithClipDataWithTextAndUri_builderAllowsClipDataText_filterInTextButOutUri() {
+        Intent intent = basicIntent();
+        ClipDescription description = new ClipDescription("test",
+                new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN});
+        ClipData clipData = new ClipData(description, new ClipData.Item("text", null,
+                Uri.parse("content://people/1")));
+        intent.setClipData(clipData);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowClipDataText();
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getClipData()).isNotNull();
+        assertThat(intent.getClipData().getItemAt(0).getText()).isEqualTo("text");
+        assertThat(intent.getClipData().getItemAt(0).getUri()).isNull();
+    }
+
+    @Test
+    @Config(minSdk = 16)
+    public void intentWithClipDataWithTextAndUri_builderAllowsClipDataUri_filterInUriButOutText() {
+        Intent intent = basicIntent();
+        ClipDescription description = new ClipDescription("test",
+                new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN});
+        ClipData clipData = new ClipData(description, new ClipData.Item("text", null,
+                Uri.parse("content://people/1")));
+        intent.setClipData(clipData);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowClipDataUriWithAuthority("people");
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getClipData()).isNotNull();
+        assertThat(intent.getClipData().getItemAt(0).getText()).isNull();
+        assertThat(intent.getClipData().getItemAt(0).getUri()).isEqualTo(
+                Uri.parse("content://people/1"));
+    }
+
+    @Test
+    @Config(minSdk = 16)
+    public void intentWithClipDataWithTextAndUri_builderAllowsClipDataTextAndUri_filterIn() {
+        Intent intent = basicIntent();
+        ClipDescription description = new ClipDescription("test",
+                new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN});
+        ClipData clipData = new ClipData(description, new ClipData.Item("text", null,
+                Uri.parse("content://people/1")));
+        intent.setClipData(clipData);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        UriMatcher uriMatcher = new UriMatcher(0);
+        uriMatcher.addURI("people", "#", 1);
+        builder.allowClipDataText();
+        builder.allowClipDataUri(UriMatcherCompat.asPredicate(uriMatcher));
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getClipData().toString()).isEqualTo(clipData.toString());
+    }
+
+    @Test
+    @Config(minSdk = 16)
+    public void intentWithClipDataMultiItems_builderAllowsTextAndUri_filterInItemPassUriFilter() {
+        Intent intent = basicIntent();
+        ClipDescription description = new ClipDescription("test",
+                new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN});
+        ClipData clipData = new ClipData(description, new ClipData.Item("text", null,
+                Uri.parse("content://people/1")));
+        clipData.addItem(new ClipData.Item("text2", null, Uri.parse("content://address/1")));
+        intent.setClipData(clipData);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowClipDataText();
+        builder.allowClipDataUriWithAuthority("people");
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getClipData().getItemAt(0).toString()).isEqualTo(
+                clipData.getItemAt(0).toString());
+        assertThat(intent.getClipData().getItemAt(1).getUri()).isNull();
+    }
+
+    @Test
+    @Config(minSdk = 16)
+    public void intentWithClipDataWithPlainMimeType_builderAllowsHtmlMimeTypePredicate_filterOut() {
+        Intent intent = basicIntent();
+        ClipDescription description = new ClipDescription("test",
+                new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN});
+        ClipData clipData = new ClipData(description, new ClipData.Item("text", null,
+                Uri.parse("content://people/1")));
+        clipData.addItem(new ClipData.Item("text2", null, Uri.parse("content://address/1")));
+        intent.setClipData(clipData);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowClipData(
+                v -> v.getDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_HTML));
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getClipData()).isNull();
+    }
+
+    @Test
+    public void intentWithExtraStream_builderAllowsNoExtraStream_filterOut() {
+        Intent intent = basicIntent();
+        intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://people/1"));
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getExtras()).isNull();
+    }
+
+    @Test
+    public void intentWithExtraStream_builderAllowsExtraStreamNoFlags_filterOut() {
+        Intent intent = basicIntent();
+        intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://people/1"));
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowExtraStreamUriWithAuthority("people");
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getExtras()).isNull();
+    }
+
+    @Test
+    public void intentWithExtraStream_builderAllowsExtraStreamAndFlags_filterIn() {
+        Intent intent = basicIntent();
+        intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://people/1"));
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        UriMatcher uriMatcher = new UriMatcher(0);
+        uriMatcher.addURI("people", "#", 1);
+        builder.allowExtraStream(UriMatcherCompat.asPredicate(uriMatcher));
+        builder.allowFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        Uri extraStream = intent.getParcelableExtra(Intent.EXTRA_STREAM);
+        assertThat(extraStream).isEqualTo(Uri.parse("content://people/1"));
+    }
+
+    @Test
+    public void intentWithExtraOutput_builderAllowsExtraOutputNoFlags_filterOut() {
+        Intent intent = basicIntent();
+        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.parse("content://address/1"));
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowExtraOutput("address");
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        Uri extraOutput = intent.getParcelableExtra(MediaStore.EXTRA_OUTPUT);
+        assertThat(extraOutput).isNull();
+    }
+
+    @Test
+    public void intentWithExtraOutput_builderAllowsExtraOutputOneFlag_filterOut() {
+        Intent intent = basicIntent();
+        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.parse("content://address/1"));
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowExtraOutput("address");
+        builder.allowFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        Uri extraOutput = intent.getParcelableExtra(MediaStore.EXTRA_OUTPUT);
+        assertThat(extraOutput).isNull();
+    }
+
+    @Test
+    public void intentWithExtraOutput_builderAllowsExtraOutputAndFlags_filterIn() {
+        Intent intent = basicIntent();
+        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.parse("content://address/1"));
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        UriMatcher uriMatcher = new UriMatcher(0);
+        uriMatcher.addURI("address", "#", 1);
+        builder.allowExtraOutput(UriMatcherCompat.asPredicate(uriMatcher))
+                .allowFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
+                .allowFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        Uri extraOutput = intent.getParcelableExtra(MediaStore.EXTRA_OUTPUT);
+        assertThat(extraOutput).isEqualTo(Uri.parse("content://address/1"));
+    }
+
+    @Test
+    public void intentWithSourceBounds_builderAllowsNoSourceBounds_filterOut() {
+        Intent intent = basicIntent();
+        Rect sourceBounds = new Rect(0, 0, 1, 1);
+        intent.setSourceBounds(sourceBounds);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getSourceBounds()).isNull();
+    }
+
+    @Test
+    public void intentWithSourceBounds_builderAllowsSourceBounds_filterIn() {
+        Intent intent = basicIntent();
+        Rect sourceBounds = new Rect(0, 0, 1, 1);
+        intent.setSourceBounds(sourceBounds);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowSourceBounds();
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getSourceBounds()).isEqualTo(sourceBounds);
+    }
+
+    @Test
+    @Config(minSdk = Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1)
+    public void intentWithSelector_builderAllowsNoSelector_filterOut() {
+        Intent intent = basicIntent();
+        Intent selector = new Intent(Intent.ACTION_VIEW);
+        intent.setSelector(selector);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getSelector()).isNull();
+    }
+
+    @Test
+    @Config(minSdk = Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1)
+    public void intentWithSelector_builderAllowsSelector_filterIn() {
+        Intent intent = basicIntent();
+        Intent selector = new Intent(Intent.ACTION_VIEW);
+        intent.setSelector(selector);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowSelector();
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getSelector()).isEqualTo(selector);
+    }
+
+    @Test
+    @Config(minSdk = Build.VERSION_CODES.Q)
+    public void intentWithIdentifier_builderAllowsNoIdentifier_filterOut() {
+        Intent intent = basicIntent();
+        String identifier = "identifier";
+        intent.setIdentifier(identifier);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getIdentifier()).isNull();
+    }
+
+    @Test
+    @Config(minSdk = Build.VERSION_CODES.Q)
+    public void intentWithIdentifier_builderAllowsIdentifier_filterIn() {
+        Intent intent = basicIntent();
+        String identifier = "identifier";
+        intent.setIdentifier(identifier);
+        IntentSanitizer.Builder builder = basicSanitizerBuilder();
+        builder.allowIdentifier();
+
+        intent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(intent.getIdentifier()).isEqualTo(identifier);
+    }
+
+    @Test
+    public void intentWithAllTypesOfExtra_builderAllowsAllTypesOfExtra_filterIn() {
+        ComponentName componentName = new ComponentName("com.test.intent.sanitizer",
+                "SanitizerService");
+        Intent intent = new Intent();
+        intent.setComponent(componentName);
+        intent.putExtra("bool", true);
+        intent.putExtra("int", 100000);
+        intent.putExtra("short", (short) 1000);
+        intent.putExtra("byte", (byte) 1);
+        intent.putExtra("char", 'a');
+        intent.putExtra("long", 3_000_000_000L);
+        intent.putExtra("float", 1.23f);
+        intent.putExtra("double", 1.23);
+        intent.putExtra("String", "test string");
+        intent.putExtra("CharSequence", (CharSequence) (new StringBuilder("test String")));
+        intent.putExtra("Parcelable", new Intent(Intent.ACTION_VIEW));
+        intent.putExtra("Serializable", new FileNotFoundException("test file not found"));
+        intent.putExtra("bool[]", new boolean[]{true});
+        intent.putExtra("int[]", new int[]{100000});
+        intent.putExtra("short[]", new short[]{(short) 1000});
+        intent.putExtra("byte[]", new byte[]{0x1});
+        intent.putExtra("char[]", new char[]{'a'});
+        intent.putExtra("long[]", new long[]{3_000_000_000L});
+        intent.putExtra("float[]", new float[]{1.23f});
+        intent.putExtra("double[]", new double[]{1.23});
+        intent.putExtra("String[]", new String[]{"test string"});
+        intent.putExtra("CharSequence[]", new CharSequence[]{(new StringBuilder(
+                "test String"))});
+        intent.putExtra("Parcelable[]", new Parcelable[]{new Intent(Intent.ACTION_VIEW)});
+        Bundle bundle = new Bundle();
+        bundle.putString("testKey", "test value");
+        intent.putExtra("Bundle", bundle);
+        ArrayList<Integer> integerArrayList = new ArrayList<>();
+        integerArrayList.add(1);
+        intent.putIntegerArrayListExtra("IntArrayList", integerArrayList);
+        ArrayList<String> stringArrayList = new ArrayList<>();
+        stringArrayList.add("test");
+        intent.putStringArrayListExtra("StrArrayList", stringArrayList);
+        ArrayList<CharSequence> charSequenceArrayList = new ArrayList<>();
+        charSequenceArrayList.add(new StringBuilder("test"));
+        intent.putCharSequenceArrayListExtra("CharSeqArrayList", charSequenceArrayList);
+        ArrayList<Parcelable> parcelableArrayList = new ArrayList<>();
+        parcelableArrayList.add(new Intent(Intent.ACTION_VIEW));
+        intent.putParcelableArrayListExtra("ParcelArrayList", parcelableArrayList);
+
+        IntentSanitizer.Builder builder = new IntentSanitizer.Builder();
+        builder.allowComponent(componentName)
+                .allowExtra("int", Integer.class)
+                .allowExtra("bool", Boolean.class)
+                .allowExtra("short", Short.class)
+                .allowExtra("long", Long.class)
+                .allowExtra("byte", Byte.class)
+                .allowExtra("char", Character.class)
+                .allowExtra("float", Float.class)
+                .allowExtra("double", Double.class)
+                .allowExtra("String", String.class)
+                .allowExtra("CharSequence", CharSequence.class)
+                .allowExtra("Parcelable", Parcelable.class)
+                .allowExtra("Serializable", Serializable.class)
+                .allowExtra("int[]", int[].class)
+                .allowExtra("bool[]", boolean[].class)
+                .allowExtra("short[]", short[].class)
+                .allowExtra("long[]", long[].class)
+                .allowExtra("byte[]", byte[].class)
+                .allowExtra("char[]", char[].class)
+                .allowExtra("float[]", float[].class)
+                .allowExtra("double[]", double[].class)
+                .allowExtra("String[]", String[].class)
+                .allowExtra("CharSequence[]", CharSequence[].class)
+                .allowExtra("Parcelable[]", Parcelable[].class)
+                .allowExtra("Serializable", Serializable.class)
+                .allowExtra("IntArrayList", ArrayList.class,
+                        v -> v != null && (v.isEmpty() || v.get(0) instanceof Integer))
+                .allowExtra("StrArrayList", ArrayList.class,
+                        v -> v != null && (v.isEmpty() || v.get(0) instanceof String))
+                .allowExtra("CharSeqArrayList", ArrayList.class,
+                        v -> v != null && (v.isEmpty() || v.get(0) instanceof CharSequence))
+                .allowExtra("ParcelArrayList", ArrayList.class,
+                        v -> v != null && (v.isEmpty() || v.get(0) instanceof Parcelable));
+
+        Intent newIntent = builder.build().sanitizeByFiltering(intent);
+
+        assertThat(newIntent.getIntExtra("int", 0)).isEqualTo(100000);
+        assertThat(newIntent.getBooleanExtra("bool", false)).isTrue();
+        assertThat(newIntent.getByteExtra("byte", (byte) 0)).isEqualTo(1);
+        assertThat(newIntent.getShortExtra("short", (short) 0)).isEqualTo(1000);
+        assertThat(newIntent.getLongExtra("long", 0L))
+                .isEqualTo(3_000_000_000L);
+        assertThat(newIntent.getFloatExtra("float", 0f)).isEqualTo(1.23f);
+        assertThat(newIntent.getDoubleExtra("double", 1.23)).isEqualTo(1.23);
+        assertThat(newIntent.getStringExtra("String")).isEqualTo("test string");
+        assertThat(newIntent.getCharSequenceExtra("CharSequence").toString())
+                .isEqualTo("test String");
+        Intent extraIntent = newIntent.getParcelableExtra("Parcelable");
+        assertThat(extraIntent.getAction()).isEqualTo(Intent.ACTION_VIEW);
+        assertThat(newIntent.getSerializableExtra("Serializable").toString())
+                .isEqualTo(new FileNotFoundException("test file not found").toString());
+        assertThat(newIntent.getIntArrayExtra("int[]")[0]).isEqualTo(100000);
+        assertThat(newIntent.getBooleanArrayExtra("bool[]")[0]).isTrue();
+        assertThat(newIntent.getByteArrayExtra("byte[]")[0]).isEqualTo(1);
+        assertThat(newIntent.getShortArrayExtra("short[]")[0]).isEqualTo(1000);
+        assertThat(newIntent.getLongArrayExtra("long[]")[0])
+                .isEqualTo(3_000_000_000L);
+        assertThat(newIntent.getFloatArrayExtra("float[]")[0]).isEqualTo(1.23f);
+        assertThat(newIntent.getDoubleArrayExtra("double[]")[0]).isEqualTo(1.23);
+        assertThat(newIntent.getStringArrayExtra("String[]")[0])
+                .isEqualTo("test string");
+        assertThat(newIntent.getCharSequenceArrayExtra("CharSequence[]")[0].toString())
+                .isEqualTo("test String");
+        extraIntent = (Intent) newIntent.getParcelableArrayExtra("Parcelable[]")[0];
+        assertThat(extraIntent.getAction()).isEqualTo(Intent.ACTION_VIEW);
+        assertThat(newIntent.getIntegerArrayListExtra("IntArrayList"))
+                .isEqualTo(integerArrayList);
+        assertThat(newIntent.getCharSequenceArrayListExtra("CharSeqArrayList"))
+                .isEqualTo(charSequenceArrayList);
+        assertThat(newIntent.getStringArrayListExtra("StrArrayList"))
+                .isEqualTo(stringArrayList);
+        assertThat(newIntent.getParcelableArrayListExtra("ParcelArrayList"))
+                .isEqualTo(parcelableArrayList);
+    }
+}
diff --git a/core/core/src/test/java/androidx/core/content/UriMatcherCompatTest.java b/core/core/src/test/java/androidx/core/content/UriMatcherCompatTest.java
new file mode 100644
index 0000000..f4e6486
--- /dev/null
+++ b/core/core/src/test/java/androidx/core/content/UriMatcherCompatTest.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.core.content;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.UriMatcher;
+import android.net.Uri;
+
+import androidx.core.util.Predicate;
+import androidx.test.filters.SmallTest;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+/**
+ * Tests for {@link UriMatcherCompat}
+ */
+@SmallTest
+@RunWith(RobolectricTestRunner.class)
+public class UriMatcherCompatTest {
+    static final int ROOT = 0;
+    static final int PEOPLE = 1;
+
+    @Test
+    public void testAsPredicate() {
+        UriMatcher matcher = new UriMatcher(ROOT);
+        matcher.addURI("people", "/", PEOPLE);
+        Predicate<Uri> uriPredicate = UriMatcherCompat.asPredicate(matcher);
+
+        assertThat(uriPredicate.test(Uri.parse("content://people"))).isTrue();
+        assertThat(uriPredicate.test(Uri.parse("content://asdf"))).isFalse();
+    }
+}
diff --git a/core/uwb/uwb-rxjava3/api/current.txt b/core/uwb/uwb-rxjava3/api/current.txt
index f5e20ab..9f9d29f 100644
--- a/core/uwb/uwb-rxjava3/api/current.txt
+++ b/core/uwb/uwb-rxjava3/api/current.txt
@@ -6,8 +6,15 @@
     method public static io.reactivex.rxjava3.core.Observable<androidx.core.uwb.RangingResult> rangingResultsObservable(androidx.core.uwb.UwbClientSessionScope, androidx.core.uwb.RangingParameters parameters);
   }
 
+  public final class UwbControllerSessionScopeRx {
+    method public static io.reactivex.rxjava3.core.Single<kotlin.Unit> addControleeSingle(androidx.core.uwb.UwbControllerSessionScope, androidx.core.uwb.UwbAddress address);
+    method public static io.reactivex.rxjava3.core.Single<kotlin.Unit> removeControleeSingle(androidx.core.uwb.UwbControllerSessionScope, androidx.core.uwb.UwbAddress address);
+  }
+
   public final class UwbManagerRx {
-    method public static io.reactivex.rxjava3.core.Single<androidx.core.uwb.UwbClientSessionScope> clientSessionScopeSingle(androidx.core.uwb.UwbManager);
+    method @Deprecated public static io.reactivex.rxjava3.core.Single<androidx.core.uwb.UwbClientSessionScope> clientSessionScopeSingle(androidx.core.uwb.UwbManager);
+    method public static io.reactivex.rxjava3.core.Single<androidx.core.uwb.UwbControleeSessionScope> controleeSessionScopeSingle(androidx.core.uwb.UwbManager);
+    method public static io.reactivex.rxjava3.core.Single<androidx.core.uwb.UwbControllerSessionScope> controllerSessionScopeSingle(androidx.core.uwb.UwbManager);
   }
 
 }
diff --git a/core/uwb/uwb-rxjava3/api/public_plus_experimental_current.txt b/core/uwb/uwb-rxjava3/api/public_plus_experimental_current.txt
index f5e20ab..9f9d29f 100644
--- a/core/uwb/uwb-rxjava3/api/public_plus_experimental_current.txt
+++ b/core/uwb/uwb-rxjava3/api/public_plus_experimental_current.txt
@@ -6,8 +6,15 @@
     method public static io.reactivex.rxjava3.core.Observable<androidx.core.uwb.RangingResult> rangingResultsObservable(androidx.core.uwb.UwbClientSessionScope, androidx.core.uwb.RangingParameters parameters);
   }
 
+  public final class UwbControllerSessionScopeRx {
+    method public static io.reactivex.rxjava3.core.Single<kotlin.Unit> addControleeSingle(androidx.core.uwb.UwbControllerSessionScope, androidx.core.uwb.UwbAddress address);
+    method public static io.reactivex.rxjava3.core.Single<kotlin.Unit> removeControleeSingle(androidx.core.uwb.UwbControllerSessionScope, androidx.core.uwb.UwbAddress address);
+  }
+
   public final class UwbManagerRx {
-    method public static io.reactivex.rxjava3.core.Single<androidx.core.uwb.UwbClientSessionScope> clientSessionScopeSingle(androidx.core.uwb.UwbManager);
+    method @Deprecated public static io.reactivex.rxjava3.core.Single<androidx.core.uwb.UwbClientSessionScope> clientSessionScopeSingle(androidx.core.uwb.UwbManager);
+    method public static io.reactivex.rxjava3.core.Single<androidx.core.uwb.UwbControleeSessionScope> controleeSessionScopeSingle(androidx.core.uwb.UwbManager);
+    method public static io.reactivex.rxjava3.core.Single<androidx.core.uwb.UwbControllerSessionScope> controllerSessionScopeSingle(androidx.core.uwb.UwbManager);
   }
 
 }
diff --git a/core/uwb/uwb-rxjava3/api/restricted_current.txt b/core/uwb/uwb-rxjava3/api/restricted_current.txt
index f5e20ab..9f9d29f 100644
--- a/core/uwb/uwb-rxjava3/api/restricted_current.txt
+++ b/core/uwb/uwb-rxjava3/api/restricted_current.txt
@@ -6,8 +6,15 @@
     method public static io.reactivex.rxjava3.core.Observable<androidx.core.uwb.RangingResult> rangingResultsObservable(androidx.core.uwb.UwbClientSessionScope, androidx.core.uwb.RangingParameters parameters);
   }
 
+  public final class UwbControllerSessionScopeRx {
+    method public static io.reactivex.rxjava3.core.Single<kotlin.Unit> addControleeSingle(androidx.core.uwb.UwbControllerSessionScope, androidx.core.uwb.UwbAddress address);
+    method public static io.reactivex.rxjava3.core.Single<kotlin.Unit> removeControleeSingle(androidx.core.uwb.UwbControllerSessionScope, androidx.core.uwb.UwbAddress address);
+  }
+
   public final class UwbManagerRx {
-    method public static io.reactivex.rxjava3.core.Single<androidx.core.uwb.UwbClientSessionScope> clientSessionScopeSingle(androidx.core.uwb.UwbManager);
+    method @Deprecated public static io.reactivex.rxjava3.core.Single<androidx.core.uwb.UwbClientSessionScope> clientSessionScopeSingle(androidx.core.uwb.UwbManager);
+    method public static io.reactivex.rxjava3.core.Single<androidx.core.uwb.UwbControleeSessionScope> controleeSessionScopeSingle(androidx.core.uwb.UwbManager);
+    method public static io.reactivex.rxjava3.core.Single<androidx.core.uwb.UwbControllerSessionScope> controllerSessionScopeSingle(androidx.core.uwb.UwbManager);
   }
 
 }
diff --git a/core/uwb/uwb-rxjava3/build.gradle b/core/uwb/uwb-rxjava3/build.gradle
index 93b70fa..52d84ae 100644
--- a/core/uwb/uwb-rxjava3/build.gradle
+++ b/core/uwb/uwb-rxjava3/build.gradle
@@ -26,7 +26,7 @@
     api(libs.kotlinStdlib)
     api(libs.rxjava3)
     api(libs.kotlinCoroutinesRx3)
-    implementation("androidx.core.uwb:uwb:1.0.0-alpha02")
+    api(project(":core:uwb:uwb"))
 
     androidTestImplementation(libs.kotlinStdlib)
     androidTestImplementation(libs.testExtJunit)
@@ -36,7 +36,7 @@
     androidTestImplementation(libs.truth)
     androidTestImplementation(libs.espressoCore)
     androidTestImplementation('com.google.android.gms:play-services-base:18.0.1')
-    androidTestImplementation('com.google.android.gms:play-services-nearby:18.2.0', {
+    androidTestImplementation('com.google.android.gms:play-services-nearby:18.3.0', {
         exclude group: "androidx.core"
     })
     androidTestImplementation(libs.multidex)
diff --git a/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/UwbClientSessionScopeRxTest.java b/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/UwbClientSessionScopeRxTest.java
index c2f8ad8..342f0ae 100644
--- a/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/UwbClientSessionScopeRxTest.java
+++ b/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/UwbClientSessionScopeRxTest.java
@@ -18,16 +18,13 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import android.content.Context;
-
 import androidx.core.uwb.RangingParameters;
 import androidx.core.uwb.RangingResult;
 import androidx.core.uwb.RangingResult.RangingResultPosition;
-import androidx.core.uwb.UwbClientSessionScope;
+import androidx.core.uwb.UwbControleeSessionScope;
 import androidx.core.uwb.UwbDevice;
 import androidx.core.uwb.UwbManager;
 import androidx.core.uwb.rxjava3.mock.TestUwbManager;
-import androidx.test.core.app.ApplicationProvider;
 
 import com.google.common.collect.ImmutableList;
 
@@ -38,26 +35,26 @@
 import io.reactivex.rxjava3.core.Single;
 
 public class UwbClientSessionScopeRxTest {
-    private final Context context = ApplicationProvider.getApplicationContext();
-    private final UwbManager uwbManager = new TestUwbManager(context);
-    private final UwbDevice uwbDevice = UwbDevice.createForAddress(new byte[0]);
+    private static final UwbDevice UWB_DEVICE = UwbDevice.createForAddress(new byte[0]);
+
+    private final UwbManager mUwbManager = new TestUwbManager();
     private final RangingParameters rangingParameters = new RangingParameters(
             RangingParameters.UWB_CONFIG_ID_1,
             0,
             /*sessionKeyInfo=*/ null,
             /*complexChannel=*/ null,
-            ImmutableList.of(uwbDevice),
+            ImmutableList.of(UWB_DEVICE),
             RangingParameters.RANGING_UPDATE_RATE_AUTOMATIC
     );
 
     @Test
     public void testRangingResultObservable_returnsRangingResultObservable() {
-        Single<UwbClientSessionScope> clientSessionScopeSingle =
-                UwbManagerRx.clientSessionScopeSingle(uwbManager);
-        UwbClientSessionScope clientSessionScope = clientSessionScopeSingle.blockingGet();
+        Single<UwbControleeSessionScope> controleeSessionScopeSingle =
+                UwbManagerRx.controleeSessionScopeSingle(mUwbManager);
+        UwbControleeSessionScope controleeSessionScope = controleeSessionScopeSingle.blockingGet();
 
         Observable<RangingResult> rangingResultObservable =
-                UwbClientSessionScopeRx.rangingResultsObservable(clientSessionScope,
+                UwbClientSessionScopeRx.rangingResultsObservable(controleeSessionScope,
                         rangingParameters);
         RangingResult rangingResult = rangingResultObservable.blockingFirst();
 
@@ -69,12 +66,12 @@
 
     @Test
     public void testRangingResultFlowable_returnsRangingResultFlowable() {
-        Single<UwbClientSessionScope> clientSessionScopeSingle =
-                UwbManagerRx.clientSessionScopeSingle(uwbManager);
-        UwbClientSessionScope clientSessionScope = clientSessionScopeSingle.blockingGet();
+        Single<UwbControleeSessionScope> controleeSessionScopeSingle =
+                UwbManagerRx.controleeSessionScopeSingle(mUwbManager);
+        UwbControleeSessionScope controleeSessionScope = controleeSessionScopeSingle.blockingGet();
 
         Flowable<RangingResult> rangingResultFlowable =
-                UwbClientSessionScopeRx.rangingResultsFlowable(clientSessionScope,
+                UwbClientSessionScopeRx.rangingResultsFlowable(controleeSessionScope,
                         rangingParameters);
         RangingResult rangingResult = rangingResultFlowable.blockingFirst();
 
diff --git a/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/UwbManagerRxTest.java b/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/UwbManagerRxTest.java
index c510ea8..2577854 100644
--- a/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/UwbManagerRxTest.java
+++ b/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/UwbManagerRxTest.java
@@ -16,33 +16,42 @@
 
 package androidx.core.uwb.rxjava3;
 
+import static androidx.core.uwb.rxjava3.mock.TestUwbManager.DEVICE_ADDRESS;
+
 import static com.google.common.truth.Truth.assertThat;
 
-import android.content.Context;
-
-import androidx.core.uwb.UwbAddress;
-import androidx.core.uwb.UwbClientSessionScope;
+import androidx.core.uwb.UwbControleeSessionScope;
+import androidx.core.uwb.UwbControllerSessionScope;
 import androidx.core.uwb.UwbManager;
 import androidx.core.uwb.rxjava3.mock.TestUwbManager;
-import androidx.test.core.app.ApplicationProvider;
 
 import org.junit.Test;
 
 import io.reactivex.rxjava3.core.Single;
 
 public class UwbManagerRxTest {
-    private final Context context = ApplicationProvider.getApplicationContext();
-    private final UwbManager uwbManager = new TestUwbManager(context);
-    private final UwbAddress uwbAddress = new UwbAddress(new byte[0]);
+    private final UwbManager mUwbManager = new TestUwbManager();
 
     @Test
-    public void testClientSessionScopeSingle_returnsClientSessionScope() {
-        Single<UwbClientSessionScope> clientSessionScopeSingle =
-                UwbManagerRx.clientSessionScopeSingle(uwbManager);
+    public void testControleeSessionScopeSingle_returnsControleeSessionScope() {
+        Single<UwbControleeSessionScope> controleeSessionScopeSingle =
+                UwbManagerRx.controleeSessionScopeSingle(mUwbManager);
 
-        UwbClientSessionScope clientSessionScope = clientSessionScopeSingle.blockingGet();
+        UwbControleeSessionScope controleeSessionScope = controleeSessionScopeSingle.blockingGet();
 
-        assertThat(clientSessionScope).isNotNull();
-        assertThat(clientSessionScope.getLocalAddress()).isEqualTo(uwbAddress);
+        assertThat(controleeSessionScope).isNotNull();
+        assertThat(controleeSessionScope.getLocalAddress().getAddress()).isEqualTo(DEVICE_ADDRESS);
+    }
+
+    @Test
+    public void testControllerSessionScopeSingle_returnsControllerSessionScope() {
+        Single<UwbControllerSessionScope> controllerSessionScopeSingle =
+                UwbManagerRx.controllerSessionScopeSingle(mUwbManager);
+
+        UwbControllerSessionScope controllerSessionScope =
+                controllerSessionScopeSingle.blockingGet();
+
+        assertThat(controllerSessionScope).isNotNull();
+        assertThat(controllerSessionScope.getLocalAddress().getAddress()).isEqualTo(DEVICE_ADDRESS);
     }
 }
\ No newline at end of file
diff --git a/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbClient.kt b/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbClient.kt
index 7bede3f..2862833 100644
--- a/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbClient.kt
+++ b/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbClient.kt
@@ -52,6 +52,10 @@
         TODO("Not yet implemented")
     }
 
+    override fun addControlee(p0: UwbAddress): Task<Void> {
+        TODO("Not yet implemented")
+    }
+
     override fun getComplexChannel(): Task<UwbComplexChannel> {
         return Tasks.forResult(complexChannel)
     }
@@ -68,6 +72,10 @@
         return Tasks.forResult(isAvailable)
     }
 
+    override fun removeControlee(p0: UwbAddress): Task<Void> {
+        TODO("Not yet implemented")
+    }
+
     override fun startRanging(
         parameters: RangingParameters,
         sessionCallback: RangingSessionCallback
diff --git a/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbControleeSessionScope.kt b/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbControleeSessionScope.kt
new file mode 100644
index 0000000..1e23410
--- /dev/null
+++ b/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbControleeSessionScope.kt
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.core.uwb.rxjava3.mock
+
+import androidx.core.uwb.RangingCapabilities
+import androidx.core.uwb.RangingParameters
+import androidx.core.uwb.RangingResult
+import androidx.core.uwb.UwbAddress
+import androidx.core.uwb.UwbControleeSessionScope
+import kotlinx.coroutines.flow.Flow
+
+class TestUwbControleeSessionScope(
+    uwbClient: TestUwbClient,
+    override val rangingCapabilities: RangingCapabilities,
+    override val localAddress: UwbAddress
+) : UwbControleeSessionScope {
+    private val uwbClientSessionScope =
+        TestUwbClientSessionScope(uwbClient, rangingCapabilities, localAddress)
+    override fun prepareSession(parameters: RangingParameters): Flow<RangingResult> {
+        return uwbClientSessionScope.prepareSession(parameters)
+    }
+}
\ No newline at end of file
diff --git a/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbControllerSessionScope.kt b/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbControllerSessionScope.kt
new file mode 100644
index 0000000..0991c67
--- /dev/null
+++ b/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbControllerSessionScope.kt
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.core.uwb.rxjava3.mock
+
+import androidx.core.uwb.RangingCapabilities
+import androidx.core.uwb.RangingParameters
+import androidx.core.uwb.RangingResult
+import androidx.core.uwb.UwbAddress
+import androidx.core.uwb.UwbComplexChannel
+import androidx.core.uwb.UwbControllerSessionScope
+import kotlinx.coroutines.flow.Flow
+
+class TestUwbControllerSessionScope(
+    private val uwbClient: TestUwbClient,
+    override val rangingCapabilities: RangingCapabilities,
+    override val localAddress: UwbAddress,
+    override val uwbComplexChannel: UwbComplexChannel
+) : UwbControllerSessionScope {
+    private val uwbClientSessionScope =
+        TestUwbClientSessionScope(uwbClient, rangingCapabilities, localAddress)
+    override suspend fun addControlee(address: UwbAddress) {
+        val uwbAddress = com.google.android.gms.nearby.uwb.UwbAddress(address.address)
+        uwbClient.addControlee(uwbAddress)
+    }
+
+    override suspend fun removeControlee(address: UwbAddress) {
+        val uwbAddress = com.google.android.gms.nearby.uwb.UwbAddress(address.address)
+        uwbClient.removeControlee(uwbAddress)
+    }
+
+    override fun prepareSession(parameters: RangingParameters): Flow<RangingResult> {
+        return uwbClientSessionScope.prepareSession(parameters)
+    }
+}
\ No newline at end of file
diff --git a/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbManager.kt b/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbManager.kt
index 8efce03..74d6b6e 100644
--- a/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbManager.kt
+++ b/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbManager.kt
@@ -16,31 +16,64 @@
 
 package androidx.core.uwb.rxjava3.mock
 
-import android.content.Context
-import androidx.core.uwb.UwbClientSessionScope
 import androidx.core.uwb.UwbManager
 import androidx.core.uwb.UwbAddress
 import androidx.core.uwb.RangingCapabilities
+import androidx.core.uwb.UwbClientSessionScope
+import androidx.core.uwb.UwbControleeSessionScope
+import androidx.core.uwb.UwbControllerSessionScope
 import com.google.android.gms.nearby.uwb.UwbComplexChannel
 
 /** A default implementation of [UwbManager] used in testing. */
-class TestUwbManager(val context: Context) : UwbManager {
+class TestUwbManager : UwbManager {
+    companion object {
+        @JvmField
+        val DEVICE_ADDRESS = byteArrayOf(0xB0.toByte())
+    }
+    @Deprecated("Renamed to controleeSessionScope")
     override suspend fun clientSessionScope(): UwbClientSessionScope {
+        return createClientSessionSCope(false)
+    }
+
+    override suspend fun controleeSessionScope(): UwbControleeSessionScope {
+        return createClientSessionSCope(false) as UwbControleeSessionScope
+    }
+
+    override suspend fun controllerSessionScope(): UwbControllerSessionScope {
+        return createClientSessionSCope(true) as UwbControllerSessionScope
+    }
+
+    private fun createClientSessionSCope(isController: Boolean): UwbClientSessionScope {
         val complexChannel = UwbComplexChannel.Builder()
-            .setPreambleIndex(0)
-            .setChannel(0)
+            .setPreambleIndex(10)
+            .setChannel(10)
             .build()
-        val localAddress = com.google.android.gms.nearby.uwb.UwbAddress(ByteArray(0))
+        val localAddress = com.google.android.gms.nearby.uwb.UwbAddress(DEVICE_ADDRESS)
+
         val rangingCapabilities =
-            com.google.android.gms.nearby.uwb.RangingCapabilities(true, false, false)
+            com.google.android.gms.nearby.uwb.RangingCapabilities(true, false, false, 200)
         val uwbClient = TestUwbClient(complexChannel, localAddress, rangingCapabilities, true)
-        return TestUwbClientSessionScope(
-            uwbClient, RangingCapabilities(
-                rangingCapabilities.supportsDistance(),
-                rangingCapabilities.supportsAzimuthalAngle(),
-                rangingCapabilities.supportsElevationAngle()
-            ),
-            UwbAddress(localAddress.address)
-        )
+        return if (isController) {
+             TestUwbControllerSessionScope(
+                uwbClient, RangingCapabilities(
+                    rangingCapabilities.supportsDistance(),
+                    rangingCapabilities.supportsAzimuthalAngle(),
+                    rangingCapabilities.supportsElevationAngle()
+                ),
+                UwbAddress(localAddress.address),
+                androidx.core.uwb.UwbComplexChannel(
+                    complexChannel.channel, complexChannel.preambleIndex
+                )
+            )
+        } else {
+            TestUwbControleeSessionScope(
+                uwbClient, RangingCapabilities(
+                    rangingCapabilities.supportsDistance(),
+                    rangingCapabilities.supportsAzimuthalAngle(),
+                    rangingCapabilities.supportsElevationAngle()
+                ),
+                UwbAddress(localAddress.address)
+            )
+        }
     }
 }
\ No newline at end of file
diff --git a/core/uwb/uwb-rxjava3/src/main/java/androidx/core/uwb/rxjava3/UwbControllerSessionScopeRx.kt b/core/uwb/uwb-rxjava3/src/main/java/androidx/core/uwb/rxjava3/UwbControllerSessionScopeRx.kt
new file mode 100644
index 0000000..81d24e6
--- /dev/null
+++ b/core/uwb/uwb-rxjava3/src/main/java/androidx/core/uwb/rxjava3/UwbControllerSessionScopeRx.kt
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@file:JvmName("UwbControllerSessionScopeRx")
+
+package androidx.core.uwb.rxjava3
+
+import androidx.core.uwb.UwbAddress
+import androidx.core.uwb.UwbControllerSessionScope
+import io.reactivex.rxjava3.core.Single
+import kotlinx.coroutines.rx3.rxSingle
+
+/**
+ * Returns a [Single] that will run in a given block to add a controlee.
+ * @see UwbControllerSessionScope.addControlee
+ */
+fun UwbControllerSessionScope.addControleeSingle(address: UwbAddress): Single<Unit> {
+    return rxSingle { addControlee(address) }
+}
+
+/**
+ * Returns a [Single] that will run in a given block to remove a controlee.
+ * @see UwbControllerSessionScope.removeControlee
+ */
+fun UwbControllerSessionScope.removeControleeSingle(address: UwbAddress): Single<Unit> {
+    return rxSingle { removeControlee(address) }
+}
\ No newline at end of file
diff --git a/core/uwb/uwb-rxjava3/src/main/java/androidx/core/uwb/rxjava3/UwbManagerRx.kt b/core/uwb/uwb-rxjava3/src/main/java/androidx/core/uwb/rxjava3/UwbManagerRx.kt
index 2a2f302..1a15496 100644
--- a/core/uwb/uwb-rxjava3/src/main/java/androidx/core/uwb/rxjava3/UwbManagerRx.kt
+++ b/core/uwb/uwb-rxjava3/src/main/java/androidx/core/uwb/rxjava3/UwbManagerRx.kt
@@ -19,6 +19,8 @@
 package androidx.core.uwb.rxjava3
 
 import androidx.core.uwb.UwbClientSessionScope
+import androidx.core.uwb.UwbControleeSessionScope
+import androidx.core.uwb.UwbControllerSessionScope
 import androidx.core.uwb.UwbManager
 import io.reactivex.rxjava3.core.Single
 import kotlinx.coroutines.rx3.rxSingle
@@ -27,6 +29,24 @@
  * Returns a [Single] of [UwbClientSessionScope].
  * @see UwbManager.clientSessionScope
  */
-public fun UwbManager.clientSessionScopeSingle(): Single<UwbClientSessionScope> {
+@Suppress("DEPRECATION")
+@Deprecated("Renamed to controleeSessionScopeSingle")
+fun UwbManager.clientSessionScopeSingle(): Single<UwbClientSessionScope> {
     return rxSingle { clientSessionScope() }
+}
+
+/**
+ * Returns a [Single] of [UwbControleeSessionScope].
+ * @see UwbManager.controleeSessionScope
+ */
+fun UwbManager.controleeSessionScopeSingle(): Single<UwbControleeSessionScope> {
+    return rxSingle { controleeSessionScope() }
+}
+
+/**
+ * Returns a [Single] of [UwbControllerSessionScope].
+ * @see UwbManager.controllerSessionScope
+ */
+fun UwbManager.controllerSessionScopeSingle(): Single<UwbControllerSessionScope> {
+    return rxSingle { controllerSessionScope() }
 }
\ No newline at end of file
diff --git a/core/uwb/uwb/api/current.txt b/core/uwb/uwb/api/current.txt
index d389672..e7d77f6 100644
--- a/core/uwb/uwb/api/current.txt
+++ b/core/uwb/uwb/api/current.txt
@@ -102,6 +102,13 @@
   public interface UwbControleeSessionScope extends androidx.core.uwb.UwbClientSessionScope {
   }
 
+  public interface UwbControllerSessionScope extends androidx.core.uwb.UwbClientSessionScope {
+    method public suspend Object? addControlee(androidx.core.uwb.UwbAddress address, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public androidx.core.uwb.UwbComplexChannel getUwbComplexChannel();
+    method public suspend Object? removeControlee(androidx.core.uwb.UwbAddress address, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property public abstract androidx.core.uwb.UwbComplexChannel uwbComplexChannel;
+  }
+
   public final class UwbDevice {
     ctor public UwbDevice(androidx.core.uwb.UwbAddress address);
     method public static androidx.core.uwb.UwbDevice createForAddress(String address);
@@ -117,7 +124,9 @@
   }
 
   public interface UwbManager {
-    method public suspend Object? clientSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbClientSessionScope>);
+    method @Deprecated public suspend Object? clientSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbClientSessionScope>);
+    method public suspend Object? controleeSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbControleeSessionScope>);
+    method public suspend Object? controllerSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbControllerSessionScope>);
     method public default static androidx.core.uwb.UwbManager createInstance(android.content.Context context);
     field public static final androidx.core.uwb.UwbManager.Companion Companion;
   }
diff --git a/core/uwb/uwb/api/public_plus_experimental_current.txt b/core/uwb/uwb/api/public_plus_experimental_current.txt
index d389672..e7d77f6 100644
--- a/core/uwb/uwb/api/public_plus_experimental_current.txt
+++ b/core/uwb/uwb/api/public_plus_experimental_current.txt
@@ -102,6 +102,13 @@
   public interface UwbControleeSessionScope extends androidx.core.uwb.UwbClientSessionScope {
   }
 
+  public interface UwbControllerSessionScope extends androidx.core.uwb.UwbClientSessionScope {
+    method public suspend Object? addControlee(androidx.core.uwb.UwbAddress address, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public androidx.core.uwb.UwbComplexChannel getUwbComplexChannel();
+    method public suspend Object? removeControlee(androidx.core.uwb.UwbAddress address, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property public abstract androidx.core.uwb.UwbComplexChannel uwbComplexChannel;
+  }
+
   public final class UwbDevice {
     ctor public UwbDevice(androidx.core.uwb.UwbAddress address);
     method public static androidx.core.uwb.UwbDevice createForAddress(String address);
@@ -117,7 +124,9 @@
   }
 
   public interface UwbManager {
-    method public suspend Object? clientSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbClientSessionScope>);
+    method @Deprecated public suspend Object? clientSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbClientSessionScope>);
+    method public suspend Object? controleeSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbControleeSessionScope>);
+    method public suspend Object? controllerSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbControllerSessionScope>);
     method public default static androidx.core.uwb.UwbManager createInstance(android.content.Context context);
     field public static final androidx.core.uwb.UwbManager.Companion Companion;
   }
diff --git a/core/uwb/uwb/api/restricted_current.txt b/core/uwb/uwb/api/restricted_current.txt
index d389672..e7d77f6 100644
--- a/core/uwb/uwb/api/restricted_current.txt
+++ b/core/uwb/uwb/api/restricted_current.txt
@@ -102,6 +102,13 @@
   public interface UwbControleeSessionScope extends androidx.core.uwb.UwbClientSessionScope {
   }
 
+  public interface UwbControllerSessionScope extends androidx.core.uwb.UwbClientSessionScope {
+    method public suspend Object? addControlee(androidx.core.uwb.UwbAddress address, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public androidx.core.uwb.UwbComplexChannel getUwbComplexChannel();
+    method public suspend Object? removeControlee(androidx.core.uwb.UwbAddress address, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property public abstract androidx.core.uwb.UwbComplexChannel uwbComplexChannel;
+  }
+
   public final class UwbDevice {
     ctor public UwbDevice(androidx.core.uwb.UwbAddress address);
     method public static androidx.core.uwb.UwbDevice createForAddress(String address);
@@ -117,7 +124,9 @@
   }
 
   public interface UwbManager {
-    method public suspend Object? clientSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbClientSessionScope>);
+    method @Deprecated public suspend Object? clientSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbClientSessionScope>);
+    method public suspend Object? controleeSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbControleeSessionScope>);
+    method public suspend Object? controllerSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbControllerSessionScope>);
     method public default static androidx.core.uwb.UwbManager createInstance(android.content.Context context);
     field public static final androidx.core.uwb.UwbManager.Companion Companion;
   }
diff --git a/core/uwb/uwb/build.gradle b/core/uwb/uwb/build.gradle
index f40cd50..508a3e5 100644
--- a/core/uwb/uwb/build.gradle
+++ b/core/uwb/uwb/build.gradle
@@ -30,7 +30,7 @@
     implementation(libs.guavaAndroid)
     implementation('com.google.android.gms:play-services-base:18.0.1')
     implementation(libs.kotlinCoroutinesPlayServices)
-    implementation('com.google.android.gms:play-services-nearby:18.2.0', {
+    implementation('com.google.android.gms:play-services-nearby:18.3.0', {
         exclude group: "androidx.core"
     })
 
diff --git a/core/uwb/uwb/src/androidTest/java/androidx/core/uwb/common/TestCommons.kt b/core/uwb/uwb/src/androidTest/java/androidx/core/uwb/common/TestCommons.kt
new file mode 100644
index 0000000..d508076
--- /dev/null
+++ b/core/uwb/uwb/src/androidTest/java/androidx/core/uwb/common/TestCommons.kt
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.core.uwb.common
+
+import androidx.core.uwb.RangingParameters
+import androidx.core.uwb.UwbDevice
+import com.google.android.gms.nearby.uwb.RangingCapabilities
+import com.google.android.gms.nearby.uwb.UwbAddress
+import com.google.android.gms.nearby.uwb.UwbComplexChannel
+
+internal class TestCommons {
+    companion object {
+        val COMPLEX_CHANNEL = UwbComplexChannel.Builder()
+            .setPreambleIndex(10)
+            .setChannel(10)
+            .build()
+        val LOCAL_ADDRESS = UwbAddress(byteArrayOf(0xB0.toByte()))
+        val RANGING_CAPABILITIES = RangingCapabilities(true, false, false, 200)
+        val NEIGHBOR_1 = byteArrayOf(0xA1.toByte())
+        val NEIGHBOR_2 = byteArrayOf(0xA5.toByte())
+        val UWB_DEVICE = UwbDevice.createForAddress(NEIGHBOR_1)
+        val RANGING_PARAMETERS = RangingParameters(
+            RangingParameters.UWB_CONFIG_ID_1,
+            sessionId = 0,
+            sessionKeyInfo = null,
+            complexChannel = null,
+            listOf(UWB_DEVICE),
+            RangingParameters.RANGING_UPDATE_RATE_AUTOMATIC
+        )
+    }
+}
\ No newline at end of file
diff --git a/core/uwb/uwb/src/androidTest/java/androidx/core/uwb/impl/UwbClientSessionScopeImplTest.kt b/core/uwb/uwb/src/androidTest/java/androidx/core/uwb/impl/UwbClientSessionScopeImplTest.kt
index 225fd73..7e8d423 100644
--- a/core/uwb/uwb/src/androidTest/java/androidx/core/uwb/impl/UwbClientSessionScopeImplTest.kt
+++ b/core/uwb/uwb/src/androidTest/java/androidx/core/uwb/impl/UwbClientSessionScopeImplTest.kt
@@ -16,15 +16,15 @@
 
 package androidx.core.uwb.impl
 
-import androidx.core.uwb.RangingParameters
 import androidx.core.uwb.RangingResult
 import androidx.core.uwb.RangingResult.RangingResultPeerDisconnected
 import androidx.core.uwb.RangingResult.RangingResultPosition
-import androidx.core.uwb.UwbDevice
+import androidx.core.uwb.common.TestCommons.Companion.COMPLEX_CHANNEL
+import androidx.core.uwb.common.TestCommons.Companion.LOCAL_ADDRESS
+import androidx.core.uwb.common.TestCommons.Companion.RANGING_CAPABILITIES
+import androidx.core.uwb.common.TestCommons.Companion.RANGING_PARAMETERS
+import androidx.core.uwb.common.TestCommons.Companion.UWB_DEVICE
 import androidx.core.uwb.mock.TestUwbClient
-import com.google.android.gms.nearby.uwb.RangingCapabilities
-import com.google.android.gms.nearby.uwb.UwbAddress
-import com.google.android.gms.nearby.uwb.UwbComplexChannel
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
@@ -41,33 +41,23 @@
 import org.junit.Test
 
 class UwbClientSessionScopeImplTest {
-    private val complexChannel = UwbComplexChannel.Builder()
-        .setPreambleIndex(0)
-        .setChannel(0)
-        .build()
-    private val localAddress = UwbAddress(ByteArray(0))
-    private val rangingCapabilities = RangingCapabilities(true, false, false)
-    private val uwbClient = TestUwbClient(complexChannel, localAddress, rangingCapabilities, true)
-    private val uwbClientSessionScopeImpl = UwbClientSessionScopeImpl(
+    private val uwbClient = TestUwbClient(
+        COMPLEX_CHANNEL, LOCAL_ADDRESS, RANGING_CAPABILITIES,
+        isAvailable = true,
+        isController = false
+    )
+    private val uwbClientSession = UwbClientSessionScopeImpl(
         uwbClient,
         androidx.core.uwb.RangingCapabilities(
-            rangingCapabilities.supportsDistance(),
-            rangingCapabilities.supportsAzimuthalAngle(),
-            rangingCapabilities.supportsElevationAngle()),
-        androidx.core.uwb.UwbAddress(localAddress.address))
-    private val uwbDevice = UwbDevice.createForAddress(ByteArray(0))
-    private val rangingParameters = RangingParameters(
-        RangingParameters.UWB_CONFIG_ID_1,
-        0,
-        null,
-        null,
-        listOf(uwbDevice),
-        RangingParameters.RANGING_UPDATE_RATE_AUTOMATIC
+            RANGING_CAPABILITIES.supportsDistance(),
+            RANGING_CAPABILITIES.supportsAzimuthalAngle(),
+            RANGING_CAPABILITIES.supportsElevationAngle()
+        ),
+        androidx.core.uwb.UwbAddress(LOCAL_ADDRESS.address)
     )
-
     @Test
     public fun testInitSession_singleConsumer() {
-        val sessionFlow = uwbClientSessionScopeImpl.prepareSession(rangingParameters)
+        val sessionFlow = uwbClientSession.prepareSession(RANGING_PARAMETERS)
         var rangingResult: RangingResult? = null
         val job = sessionFlow
             .cancellable()
@@ -99,7 +89,7 @@
     public fun testInitSession_multipleSharedConsumers() {
         var passed1 = false
         var passed2 = false
-        val sharedFlow = uwbClientSessionScopeImpl.prepareSession(rangingParameters)
+        val sharedFlow = uwbClientSession.prepareSession(RANGING_PARAMETERS)
             .shareIn(CoroutineScope(Dispatchers.Main.immediate), SharingStarted.WhileSubscribed(),
                 replay = 1)
         val job = CoroutineScope(Dispatchers.Main.immediate).launch {
@@ -149,7 +139,7 @@
 
     @Test
     public fun testInitSession_singleConsumer_disconnectPeerDevice() {
-        val sessionFlow = uwbClientSessionScopeImpl.prepareSession(rangingParameters)
+        val sessionFlow = uwbClientSession.prepareSession(RANGING_PARAMETERS)
         var peerDisconnected = false
         val job = CoroutineScope(Dispatchers.Main.immediate).launch {
             sessionFlow
@@ -166,7 +156,7 @@
             // wait for coroutines for flow to start.
             delay(500)
             uwbClient.disconnectPeer(com.google.android.gms.nearby.uwb.UwbDevice.createForAddress(
-                uwbDevice.address.address))
+                UWB_DEVICE.address.address))
 
             // wait for rangingResults to get filled.
             delay(500)
@@ -186,7 +176,7 @@
 
     @Test
     public fun testInitSession_multipleSharedConsumers_disconnectPeerDevice() {
-        val sharedFlow = uwbClientSessionScopeImpl.prepareSession(rangingParameters)
+        val sharedFlow = uwbClientSession.prepareSession(RANGING_PARAMETERS)
             .shareIn(CoroutineScope(Dispatchers.Main.immediate), SharingStarted.WhileSubscribed())
 
         var peerDisconnected = false
@@ -214,7 +204,7 @@
             // wait for coroutines for flow to start.
             delay(500)
             uwbClient.disconnectPeer(com.google.android.gms.nearby.uwb.UwbDevice.createForAddress(
-                uwbDevice.address.address))
+                UWB_DEVICE.address.address))
 
             // wait for rangingResults to get filled.
             delay(500)
@@ -243,8 +233,8 @@
 
     @Test
     public fun testInitSession_multipleSessions_throwsUwbApiException() {
-        val sessionFlow = uwbClientSessionScopeImpl.prepareSession(rangingParameters)
-        val sessionFlow2 = uwbClientSessionScopeImpl.prepareSession(rangingParameters)
+        val sessionFlow = uwbClientSession.prepareSession(RANGING_PARAMETERS)
+        val sessionFlow2 = uwbClientSession.prepareSession(RANGING_PARAMETERS)
 
         val job = CoroutineScope(Dispatchers.Main.immediate).launch {
             sessionFlow.collect()
@@ -267,7 +257,7 @@
 
     @Test
     public fun testInitSession_reusingSession_throwsUwbApiException() {
-        val sessionFlow = uwbClientSessionScopeImpl.prepareSession(rangingParameters)
+        val sessionFlow = uwbClientSession.prepareSession(RANGING_PARAMETERS)
 
         val job = CoroutineScope(Dispatchers.Main.immediate).launch {
             sessionFlow.collect()
diff --git a/core/uwb/uwb/src/androidTest/java/androidx/core/uwb/impl/UwbControllerSessionScopeImplTest.kt b/core/uwb/uwb/src/androidTest/java/androidx/core/uwb/impl/UwbControllerSessionScopeImplTest.kt
new file mode 100644
index 0000000..02a36c8
--- /dev/null
+++ b/core/uwb/uwb/src/androidTest/java/androidx/core/uwb/impl/UwbControllerSessionScopeImplTest.kt
@@ -0,0 +1,162 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.core.uwb.impl
+
+import androidx.core.uwb.RangingResult
+import androidx.core.uwb.UwbAddress
+import androidx.core.uwb.common.TestCommons.Companion.COMPLEX_CHANNEL
+import androidx.core.uwb.common.TestCommons.Companion.LOCAL_ADDRESS
+import androidx.core.uwb.common.TestCommons.Companion.NEIGHBOR_1
+import androidx.core.uwb.common.TestCommons.Companion.NEIGHBOR_2
+import androidx.core.uwb.common.TestCommons.Companion.RANGING_CAPABILITIES
+import androidx.core.uwb.common.TestCommons.Companion.RANGING_PARAMETERS
+import androidx.core.uwb.mock.TestUwbClient
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.cancellable
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.runBlocking
+import org.junit.Assert
+import org.junit.Test
+
+class UwbControllerSessionScopeImplTest {
+    private val uwbClient = TestUwbClient(
+        COMPLEX_CHANNEL, LOCAL_ADDRESS, RANGING_CAPABILITIES,
+        isAvailable = true,
+        isController = true
+    )
+    private val uwbClientSession = UwbClientSessionScopeImpl(
+        uwbClient,
+        androidx.core.uwb.RangingCapabilities(
+            RANGING_CAPABILITIES.supportsDistance(),
+            RANGING_CAPABILITIES.supportsAzimuthalAngle(),
+            RANGING_CAPABILITIES.supportsElevationAngle()
+        ),
+        UwbAddress(LOCAL_ADDRESS.address)
+    )
+    private val uwbControllerSession = UwbControllerSessionScopeImpl(
+        uwbClient,
+        androidx.core.uwb.RangingCapabilities(
+            RANGING_CAPABILITIES.supportsDistance(),
+            RANGING_CAPABILITIES.supportsAzimuthalAngle(),
+            RANGING_CAPABILITIES.supportsElevationAngle()
+        ),
+        UwbAddress(LOCAL_ADDRESS.address),
+        androidx.core.uwb.UwbComplexChannel(
+            COMPLEX_CHANNEL.channel,
+            COMPLEX_CHANNEL.preambleIndex)
+    )
+
+    private var rangingResult: RangingResult? = null
+    @Test
+    public fun testAddControlee_success() {
+        val job = startRanging()
+
+        // a non-null RangingResult should return from the TestUwbClient.
+        if (rangingResult != null) {
+            assertThat(rangingResult is RangingResult.RangingResultPosition).isTrue()
+            assertThat(rangingResult!!.device.address.address).isEqualTo(NEIGHBOR_1)
+        } else {
+            stopRanging(job)
+            Assert.fail()
+        }
+
+        runBlocking {
+            uwbControllerSession.addControlee(UwbAddress(NEIGHBOR_2))
+            delay(500)
+        }
+        assertThat(rangingResult is RangingResult.RangingResultPosition).isTrue()
+        assertThat(rangingResult!!.device.address.address).isEqualTo(NEIGHBOR_2)
+        stopRanging(job)
+    }
+
+    @Test
+    public fun testAddControlee_beforeStartingRanging() {
+        runBlocking {
+            var correctExceptionThrown = false
+            try {
+                uwbControllerSession.addControlee(UwbAddress(NEIGHBOR_2))
+            } catch (e: IllegalStateException) {
+                // IllegalStateException was thrown as expected
+                correctExceptionThrown = true
+            }
+            assertThat(correctExceptionThrown).isTrue()
+        }
+    }
+
+    @Test
+    public fun testRemoveControlee_success() {
+        val job = startRanging()
+
+        // a non-null RangingResult should return from the TestUwbClient.
+        if (rangingResult != null) {
+            assertThat(rangingResult is RangingResult.RangingResultPosition).isTrue()
+            assertThat(rangingResult!!.device.address.address).isEqualTo(NEIGHBOR_1)
+        } else {
+            stopRanging(job)
+            Assert.fail()
+        }
+
+        runBlocking {
+            uwbControllerSession.removeControlee(UwbAddress(NEIGHBOR_1))
+            delay(500)
+        }
+        assertThat(rangingResult is RangingResult.RangingResultPeerDisconnected).isTrue()
+        assertThat(rangingResult!!.device.address.address).isEqualTo(NEIGHBOR_1)
+        stopRanging(job)
+    }
+
+    @Test
+    public fun testRemoveControlee_beforeStartingRanging() {
+        runBlocking {
+            var correctExceptionThrown = false
+            try {
+                uwbControllerSession.removeControlee(UwbAddress(NEIGHBOR_2))
+            } catch (e: IllegalStateException) {
+                // IllegalStateException was thrown as expected
+                correctExceptionThrown = true
+            }
+            assertThat(correctExceptionThrown).isTrue()
+        }
+    }
+
+    private fun startRanging(): Job {
+        val sessionFlow = uwbControllerSession.prepareSession(RANGING_PARAMETERS)
+        val job = sessionFlow
+            .cancellable()
+            .onEach { rangingResult = it }
+            .launchIn(CoroutineScope(Dispatchers.Main.immediate))
+
+        runBlocking {
+            // wait for the coroutines for UWB to get launched.
+            delay(500)
+        }
+        return job
+    }
+
+    private fun stopRanging(job: Job) {
+        // cancel and wait for the job to terminate.
+        job.cancel()
+        runBlocking {
+            job.join()
+        }
+    }
+}
\ No newline at end of file
diff --git a/core/uwb/uwb/src/androidTest/java/androidx/core/uwb/mock/TestUwbClient.kt b/core/uwb/uwb/src/androidTest/java/androidx/core/uwb/mock/TestUwbClient.kt
index afe7418..c3f90ad 100644
--- a/core/uwb/uwb/src/androidTest/java/androidx/core/uwb/mock/TestUwbClient.kt
+++ b/core/uwb/uwb/src/androidTest/java/androidx/core/uwb/mock/TestUwbClient.kt
@@ -24,6 +24,7 @@
 import com.google.android.gms.nearby.uwb.RangingParameters
 import com.google.android.gms.nearby.uwb.RangingPosition
 import com.google.android.gms.nearby.uwb.RangingSessionCallback
+import com.google.android.gms.nearby.uwb.RangingSessionCallback.RangingSuspendedReason.STOP_RANGING_CALLED
 import com.google.android.gms.nearby.uwb.UwbAddress
 import com.google.android.gms.nearby.uwb.UwbClient
 import com.google.android.gms.nearby.uwb.UwbComplexChannel
@@ -38,7 +39,8 @@
     val complexChannel: UwbComplexChannel,
     val localAddress: UwbAddress,
     val rangingCapabilities: RangingCapabilities,
-    val isAvailable: Boolean
+    val isAvailable: Boolean,
+    private val isController: Boolean
 ) : UwbClient {
     var stopRangingCalled = false
         private set
@@ -52,6 +54,17 @@
         TODO("Not yet implemented")
     }
 
+    override fun addControlee(p0: UwbAddress): Task<Void> {
+        if (!isController) {
+            throw RuntimeException("Illegal api calls for controlee client.")
+        }
+        if (!startedRanging) {
+            throw ApiException(Status(UwbStatusCodes.INVALID_API_CALL))
+        }
+        callback.onRangingResult(UwbDevice.createForAddress(p0.address), rangingPosition)
+        return Tasks.forResult(null)
+    }
+
     override fun getComplexChannel(): Task<UwbComplexChannel> {
         return Tasks.forResult(complexChannel)
     }
@@ -68,6 +81,17 @@
         return Tasks.forResult(isAvailable)
     }
 
+    override fun removeControlee(p0: UwbAddress): Task<Void> {
+        if (!isController) {
+            throw RuntimeException("Illegal api calls for controlee client.")
+        }
+        if (!startedRanging) {
+            throw ApiException(Status(UwbStatusCodes.INVALID_API_CALL))
+        }
+        callback.onRangingSuspended(UwbDevice.createForAddress(p0.address), STOP_RANGING_CALLED)
+        return Tasks.forResult(null)
+    }
+
     override fun startRanging(
         parameters: RangingParameters,
         sessionCallback: RangingSessionCallback
@@ -76,8 +100,13 @@
             throw ApiException(Status(UwbStatusCodes.RANGING_ALREADY_STARTED))
         }
         callback = sessionCallback
-        val peer = parameters.peerDevices.first()
-        callback.onRangingResult(peer, rangingPosition)
+        if (isController) {
+            for (peer in parameters.peerDevices) {
+                callback.onRangingResult(peer, rangingPosition)
+            }
+        } else {
+            callback.onRangingResult(parameters.peerDevices.first(), rangingPosition)
+        }
         startedRanging = true
         return Tasks.forResult(null)
     }
diff --git a/core/uwb/uwb/src/main/java/androidx/core/uwb/UwbAddress.kt b/core/uwb/uwb/src/main/java/androidx/core/uwb/UwbAddress.kt
index f1db3ca..42f2900 100644
--- a/core/uwb/uwb/src/main/java/androidx/core/uwb/UwbAddress.kt
+++ b/core/uwb/uwb/src/main/java/androidx/core/uwb/UwbAddress.kt
@@ -25,7 +25,7 @@
  */
 class UwbAddress(val address: ByteArray) {
 
-    /** @throws an [IllegalArgumentException] if address is invalid. */
+    /** @throws [IllegalArgumentException] if address is invalid. */
     constructor(address: String) : this(BASE_16_SEPARATOR.decode(address))
 
     companion object {
diff --git a/core/uwb/uwb/src/main/java/androidx/core/uwb/UwbControllerSessionScope.kt b/core/uwb/uwb/src/main/java/androidx/core/uwb/UwbControllerSessionScope.kt
new file mode 100644
index 0000000..cb5d7fb
--- /dev/null
+++ b/core/uwb/uwb/src/main/java/androidx/core/uwb/UwbControllerSessionScope.kt
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.core.uwb
+
+/** Interface for controller client session that is established between nearby UWB devices. */
+interface UwbControllerSessionScope : UwbClientSessionScope {
+    /**
+     * The local device's complex channel which can be used for ranging.
+     *
+     * A complex channel can only be used for a single ranging session. After the ranging session
+     * is ended, a new channel will be allocated.
+     *
+     * Ranging session duration may also be limited to prevent channels from being used for too
+     * long. In this case, your ranging session would be suspended and clients would need to
+     * exchange the new channel with their peer before starting again.
+     */
+    val uwbComplexChannel: UwbComplexChannel
+
+    /**
+     * Dynamically adds a controlee to an active ranging session. The controlee to be added
+     * must be configured with the a set of parameters that can join the existing connection.
+     *
+     * @throws [IllegalStateException] if the ranging is inactive or if the ranging profile
+     * is that of a unicast profile.
+     *
+     * Otherwise, this method will return successfully, and clients are expected to handle either
+     * [RangingResult.RangingResultPosition] or [RangingResult.RangingResultPeerDisconnected] to
+     * listen for starts or failures.
+     */
+    suspend fun addControlee(address: UwbAddress)
+
+    /**
+     * Dynamically removes a controlee from an active ranging session.
+     *
+     * @throws [IllegalStateException] if the ranging is inactive, if the ranging profile is
+     * that of a unicast profile, or if the requested device is not being ranged to.
+     *
+     * @throws [androidx.core.uwb.exceptions.UwbSystemCallbackException] if the operation failed
+     * due to hardware or firmware issues.
+     *
+     * Otherwise, this method will return successfully, and clients are expected to handle
+     * [RangingResult.RangingResultPeerDisconnected] to listen for disconnects.
+     */
+    suspend fun removeControlee(address: UwbAddress)
+}
\ No newline at end of file
diff --git a/core/uwb/uwb/src/main/java/androidx/core/uwb/UwbManager.kt b/core/uwb/uwb/src/main/java/androidx/core/uwb/UwbManager.kt
index 208896cd..e666470 100644
--- a/core/uwb/uwb/src/main/java/androidx/core/uwb/UwbManager.kt
+++ b/core/uwb/uwb/src/main/java/androidx/core/uwb/UwbManager.kt
@@ -26,7 +26,7 @@
 interface UwbManager {
     companion object {
 
-        /** Creates a new UwbManager that is used for creating controlee client sessions. */
+        /** Creates a new UwbManager that is used for creating UWB client sessions. */
         @JvmStatic
         fun createInstance(context: Context): UwbManager {
             return UwbManagerImpl(context)
@@ -39,5 +39,22 @@
      * @throws [androidx.core.uwb.exceptions.UwbServiceNotAvailableException] if the UWB is turned off.
      * @throws [androidx.core.uwb.exceptions.UwbHardwareNotAvailableException] if the hardware is not available on the device.
      */
+    @Deprecated("Renamed to controleeSessionScope")
     suspend fun clientSessionScope(): UwbClientSessionScope
+
+    /**
+     * @return a new [UwbControleeSessionScope] that tracks the lifecycle of a UWB connection.
+     *
+     * @throws [androidx.core.uwb.exceptions.UwbServiceNotAvailableException] if the UWB is turned off.
+     * @throws [androidx.core.uwb.exceptions.UwbHardwareNotAvailableException] if the hardware is not available on the device.
+     */
+    suspend fun controleeSessionScope(): UwbControleeSessionScope
+
+    /**
+     * @return a new [UwbControllerSessionScope] that tracks the lifecycle of a UWB connection.
+     *
+     * @throws [androidx.core.uwb.exceptions.UwbServiceNotAvailableException] if the UWB is turned off.
+     * @throws [androidx.core.uwb.exceptions.UwbHardwareNotAvailableException] if the hardware is not available on the device.
+     */
+    suspend fun controllerSessionScope(): UwbControllerSessionScope
 }
\ No newline at end of file
diff --git a/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbControleeSessionScopeImpl.kt b/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbControleeSessionScopeImpl.kt
new file mode 100644
index 0000000..5fbabd0
--- /dev/null
+++ b/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbControleeSessionScopeImpl.kt
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.core.uwb.impl
+
+import androidx.core.uwb.RangingCapabilities
+import androidx.core.uwb.RangingParameters
+import androidx.core.uwb.RangingResult
+import androidx.core.uwb.UwbAddress
+import androidx.core.uwb.UwbControleeSessionScope
+import com.google.android.gms.nearby.uwb.UwbClient
+import kotlinx.coroutines.flow.Flow
+
+internal class UwbControleeSessionScopeImpl(
+    uwbClient: UwbClient,
+    override val rangingCapabilities: RangingCapabilities,
+    override val localAddress: UwbAddress
+) : UwbControleeSessionScope {
+    private val uwbClientSessionScope =
+        UwbClientSessionScopeImpl(uwbClient, rangingCapabilities, localAddress)
+
+    override fun prepareSession(parameters: RangingParameters): Flow<RangingResult> {
+        return uwbClientSessionScope.prepareSession(parameters)
+    }
+}
\ No newline at end of file
diff --git a/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbControllerSessionScopeImpl.kt b/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbControllerSessionScopeImpl.kt
new file mode 100644
index 0000000..65c3fc5
--- /dev/null
+++ b/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbControllerSessionScopeImpl.kt
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.core.uwb.impl
+
+import androidx.core.uwb.RangingCapabilities
+import androidx.core.uwb.RangingParameters
+import androidx.core.uwb.RangingResult
+import androidx.core.uwb.UwbAddress
+import androidx.core.uwb.UwbComplexChannel
+import androidx.core.uwb.UwbControllerSessionScope
+import androidx.core.uwb.exceptions.UwbSystemCallbackException
+import com.google.android.gms.common.api.ApiException
+import com.google.android.gms.nearby.uwb.UwbClient
+import com.google.android.gms.nearby.uwb.UwbStatusCodes
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.tasks.await
+
+internal class UwbControllerSessionScopeImpl(
+    private val uwbClient: UwbClient,
+    override val rangingCapabilities: RangingCapabilities,
+    override val localAddress: UwbAddress,
+    override val uwbComplexChannel: UwbComplexChannel
+) : UwbControllerSessionScope {
+    private val uwbClientSessionScope =
+        UwbClientSessionScopeImpl(uwbClient, rangingCapabilities, localAddress)
+
+    override suspend fun addControlee(address: UwbAddress) {
+        val uwbAddress = com.google.android.gms.nearby.uwb.UwbAddress(address.address)
+        try {
+            uwbClient.addControlee(uwbAddress).await()
+        } catch (e: ApiException) {
+            if (e.statusCode == UwbStatusCodes.INVALID_API_CALL) {
+                throw IllegalStateException("Please check that the ranging is active and the" +
+                    "ranging profile supports multi-device ranging.")
+            }
+        }
+    }
+
+    override suspend fun removeControlee(address: UwbAddress) {
+        val uwbAddress = com.google.android.gms.nearby.uwb.UwbAddress(address.address)
+        try {
+            uwbClient.removeControlee(uwbAddress).await()
+        } catch (e: ApiException) {
+            when (e.statusCode) {
+                UwbStatusCodes.INVALID_API_CALL ->
+                    throw IllegalStateException("Please check that the ranging is active and the" +
+                        "ranging profile supports multi-device ranging.")
+                UwbStatusCodes.UWB_SYSTEM_CALLBACK_FAILURE ->
+                    throw UwbSystemCallbackException("The operation failed due to hardware or " +
+                        "firmware issues.")
+            }
+        }
+    }
+
+    override fun prepareSession(parameters: RangingParameters): Flow<RangingResult> {
+        return uwbClientSessionScope.prepareSession(parameters)
+    }
+}
\ No newline at end of file
diff --git a/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbManagerImpl.kt b/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbManagerImpl.kt
index 08e5974..bbf9cec 100644
--- a/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbManagerImpl.kt
+++ b/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbManagerImpl.kt
@@ -20,6 +20,9 @@
 import androidx.core.uwb.RangingCapabilities
 import androidx.core.uwb.UwbAddress
 import androidx.core.uwb.UwbClientSessionScope
+import androidx.core.uwb.UwbComplexChannel
+import androidx.core.uwb.UwbControleeSessionScope
+import androidx.core.uwb.UwbControllerSessionScope
 import androidx.core.uwb.UwbManager
 import com.google.android.gms.common.api.ApiException
 import com.google.android.gms.nearby.Nearby
@@ -27,28 +30,51 @@
 import androidx.core.uwb.helper.checkSystemFeature
 import androidx.core.uwb.helper.handleApiException
 
-internal class UwbManagerImpl(val context: Context) : UwbManager {
+internal class UwbManagerImpl(private val context: Context) : UwbManager {
+    @Deprecated("Renamed to controleeSessionScope")
     override suspend fun clientSessionScope(): UwbClientSessionScope {
-        // Check whether UWB hardware is available on the device.
+        return createClientSessionScope(false)
+    }
+
+    override suspend fun controleeSessionScope(): UwbControleeSessionScope {
+        return createClientSessionScope(false) as UwbControleeSessionScope
+    }
+
+    override suspend fun controllerSessionScope(): UwbControllerSessionScope {
+        return createClientSessionScope(true) as UwbControllerSessionScope
+    }
+
+    private suspend fun createClientSessionScope(isController: Boolean): UwbClientSessionScope {
         checkSystemFeature(context)
-        val uwbClient = Nearby.getUwbControleeClient(context)
-        val localAddress: com.google.android.gms.nearby.uwb.UwbAddress
-        val rangingCapabilities: com.google.android.gms.nearby.uwb.RangingCapabilities
+        val uwbClient = if (isController)
+            Nearby.getUwbControllerClient(context) else Nearby.getUwbControleeClient(context)
         try {
-            localAddress = uwbClient.localAddress.await()
-            rangingCapabilities = uwbClient.rangingCapabilities.await()
+            val nearbyLocalAddress = uwbClient.localAddress.await()
+            val nearbyRangingCapabilities = uwbClient.rangingCapabilities.await()
+            val localAddress = UwbAddress(nearbyLocalAddress.address)
+            val rangingCapabilities = RangingCapabilities(
+                nearbyRangingCapabilities.supportsDistance(),
+                nearbyRangingCapabilities.supportsAzimuthalAngle(),
+                nearbyRangingCapabilities.supportsElevationAngle())
+            return if (isController) {
+                val uwbComplexChannel = uwbClient.complexChannel.await()
+                UwbControllerSessionScopeImpl(
+                    uwbClient,
+                    rangingCapabilities,
+                    localAddress,
+                    UwbComplexChannel(uwbComplexChannel.channel, uwbComplexChannel.preambleIndex)
+                )
+            } else {
+                UwbControleeSessionScopeImpl(
+                    uwbClient,
+                    rangingCapabilities,
+                    localAddress
+                )
+            }
         } catch (e: ApiException) {
             handleApiException(e)
             throw RuntimeException("Unexpected error. This indicates that the library is not " +
                 "up-to-date with the service backend.")
         }
-        return UwbClientSessionScopeImpl(
-            uwbClient,
-            RangingCapabilities(
-                rangingCapabilities.supportsDistance(),
-                rangingCapabilities.supportsAzimuthalAngle(),
-                rangingCapabilities.supportsElevationAngle()),
-            UwbAddress(localAddress.address)
-        )
     }
 }
\ No newline at end of file
diff --git a/datastore/datastore-preferences-core/api/current.txt b/datastore/datastore-preferences-core/api/current.txt
index 9e2de9f..f76fc6f 100644
--- a/datastore/datastore-preferences-core/api/current.txt
+++ b/datastore/datastore-preferences-core/api/current.txt
@@ -20,6 +20,7 @@
     method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> create(optional androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler, kotlin.jvm.functions.Function0<? extends java.io.File> produceFile);
     method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile);
     method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> create(androidx.datastore.core.Storage<androidx.datastore.preferences.core.Preferences> storage, androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler, java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.core.Preferences>> migrations, kotlinx.coroutines.CoroutineScope scope);
+    method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> createWithPath(androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler, java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.core.Preferences>> migrations, kotlinx.coroutines.CoroutineScope scope, kotlin.jvm.functions.Function0<okio.Path> produceFile);
     field public static final androidx.datastore.preferences.core.PreferenceDataStoreFactory INSTANCE;
   }
 
diff --git a/datastore/datastore-preferences-core/api/public_plus_experimental_current.txt b/datastore/datastore-preferences-core/api/public_plus_experimental_current.txt
index 9e2de9f..f76fc6f 100644
--- a/datastore/datastore-preferences-core/api/public_plus_experimental_current.txt
+++ b/datastore/datastore-preferences-core/api/public_plus_experimental_current.txt
@@ -20,6 +20,7 @@
     method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> create(optional androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler, kotlin.jvm.functions.Function0<? extends java.io.File> produceFile);
     method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile);
     method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> create(androidx.datastore.core.Storage<androidx.datastore.preferences.core.Preferences> storage, androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler, java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.core.Preferences>> migrations, kotlinx.coroutines.CoroutineScope scope);
+    method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> createWithPath(androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler, java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.core.Preferences>> migrations, kotlinx.coroutines.CoroutineScope scope, kotlin.jvm.functions.Function0<okio.Path> produceFile);
     field public static final androidx.datastore.preferences.core.PreferenceDataStoreFactory INSTANCE;
   }
 
diff --git a/datastore/datastore-preferences-core/api/restricted_current.txt b/datastore/datastore-preferences-core/api/restricted_current.txt
index 9e2de9f..f76fc6f 100644
--- a/datastore/datastore-preferences-core/api/restricted_current.txt
+++ b/datastore/datastore-preferences-core/api/restricted_current.txt
@@ -20,6 +20,7 @@
     method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> create(optional androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler, kotlin.jvm.functions.Function0<? extends java.io.File> produceFile);
     method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile);
     method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> create(androidx.datastore.core.Storage<androidx.datastore.preferences.core.Preferences> storage, androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler, java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.core.Preferences>> migrations, kotlinx.coroutines.CoroutineScope scope);
+    method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> createWithPath(androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler, java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.core.Preferences>> migrations, kotlinx.coroutines.CoroutineScope scope, kotlin.jvm.functions.Function0<okio.Path> produceFile);
     field public static final androidx.datastore.preferences.core.PreferenceDataStoreFactory INSTANCE;
   }
 
diff --git a/datastore/datastore-preferences-core/src/commonMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.kt b/datastore/datastore-preferences-core/src/commonMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.kt
index 5c5c269..82a8705 100644
--- a/datastore/datastore-preferences-core/src/commonMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.kt
+++ b/datastore/datastore-preferences-core/src/commonMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.kt
@@ -24,11 +24,12 @@
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.SupervisorJob
 import kotlin.jvm.JvmOverloads
+import okio.Path
 
 expect object PreferenceDataStoreFactory {
 
     /**
-     * Create an instance of SingleProcessDataStore. Never create more than one instance of
+     * Create an instance of [DataStore]. Never create more than one instance of
      * DataStore for a given file; doing so can break all DataStore functionality. You should
      * consider managing your DataStore instance as a singleton.
      *
@@ -53,6 +54,35 @@
         migrations: List<DataMigration<Preferences>> = listOf(),
         scope: CoroutineScope = CoroutineScope(ioDispatcher() + SupervisorJob()),
     ): DataStore<Preferences>
+
+    /**
+     * Create an instance of [DataStore] using an okio Path. Never create more than one
+     * instance of DataStore for a given file; doing so can break all DataStore functionality. You
+     * should consider managing your DataStore instance as a singleton.
+     *
+     * @param corruptionHandler The corruptionHandler is invoked if DataStore encounters a
+     * [CorruptionException] when attempting to read data. CorruptionExceptions are thrown by
+     * serializers when data cannot be de-serialized.
+     * @param migrations are run before any access to data can occur. Each producer and migration
+     * may be run more than once whether or not it already succeeded (potentially because another
+     * migration failed or a write to disk failed.)
+     * @param scope The scope in which IO operations and transform functions will execute.
+     * The function must return the same path every time. No two instances of PreferenceDataStore
+     * should act on the same file at the same time. The file must have the extension
+     * preferences_pb.
+     * @param produceFile Function which returns the file that the new DataStore will act on.
+     * The function must return the same path every time. No two instances of PreferenceDataStore
+     * should act on the same file at the same time. The file must have the extension
+     * preferences_pb. File will be created if it doesn't exist.
+     *
+     * @return a new DataStore instance with the provided configuration
+     */
+    public fun createWithPath(
+        corruptionHandler: ReplaceFileCorruptionHandler<Preferences>? = null,
+        migrations: List<DataMigration<Preferences>> = listOf(),
+        scope: CoroutineScope = CoroutineScope(ioDispatcher() + SupervisorJob()),
+        produceFile: () -> Path,
+    ): DataStore<Preferences>
 }
 
 internal class PreferenceDataStore(private val delegate: DataStore<Preferences>) :
diff --git a/datastore/datastore-preferences-core/src/commonMain/kotlin/androidx/datastore/preferences/core/Preferences.kt b/datastore/datastore-preferences-core/src/commonMain/kotlin/androidx/datastore/preferences/core/Preferences.kt
index 4ebd196..bb40dc3 100644
--- a/datastore/datastore-preferences-core/src/commonMain/kotlin/androidx/datastore/preferences/core/Preferences.kt
+++ b/datastore/datastore-preferences-core/src/commonMain/kotlin/androidx/datastore/preferences/core/Preferences.kt
@@ -344,7 +344,8 @@
  * @param transform block which accepts MutablePreferences that contains all the preferences
  * currently in DataStore. Changes to this MutablePreferences object will be persisted once
  * transform completes.
- * @throws IOException when an exception is encountered when writing data to disk
+ * @throws androidx.datastore.core.IOException when an exception is encountered when writing
+ * data to disk
  * @throws Exception when thrown by the transform block
  */
 
diff --git a/datastore/datastore-preferences-core/src/jvmMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.jvm.kt b/datastore/datastore-preferences-core/src/jvmMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.jvm.kt
index f54a2e4..d1bc635 100644
--- a/datastore/datastore-preferences-core/src/jvmMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.jvm.kt
+++ b/datastore/datastore-preferences-core/src/jvmMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.jvm.kt
@@ -28,6 +28,7 @@
 import kotlinx.coroutines.SupervisorJob
 import java.io.File
 import okio.FileSystem
+import okio.Path
 import okio.Path.Companion.toOkioPath
 
 /**
@@ -35,7 +36,7 @@
  */
 public actual object PreferenceDataStoreFactory {
     /**
-     * Create an instance of SingleProcessDataStore. Never create more than one instance of
+     * Create an instance of [DataStore]. Never create more than one instance of
      * DataStore for a given file; doing so can break all DataStore functionality. You should
      * consider managing your DataStore instance as a singleton.
      *
@@ -49,7 +50,7 @@
      * @param produceFile Function which returns the file that the new DataStore will act on.
      * The function must return the same path every time. No two instances of PreferenceDataStore
      * should act on the same file at the same time. The file must have the extension
-     * preferences_pb.
+     * preferences_pb. File will be created if it doesn't exist.
      *
      * @return a new DataStore instance with the provided configuration
      */
@@ -77,7 +78,7 @@
     }
 
     /**
-     * Create an instance of SingleProcessDataStore. Never create more than one instance of
+     * Create an instance of [DataStore]. Never create more than one instance of
      * DataStore for a given file; doing so can break all DataStore functionality. You should
      * consider managing your DataStore instance as a singleton.
      *
@@ -106,4 +107,38 @@
             scope = scope
         ))
     }
+
+    /**
+     * Create an instance of [DataStore] using an okio Path. Never create more than one
+     * instance of DataStore for a given file; doing so can break all DataStore functionality. You
+     * should consider managing your DataStore instance as a singleton.
+     *
+     * @param corruptionHandler The corruptionHandler is invoked if DataStore encounters a
+     * [CorruptionException] when attempting to read data. CorruptionExceptions are thrown by
+     * serializers when data cannot be de-serialized.
+     * @param migrations are run before any access to data can occur. Each producer and migration
+     * may be run more than once whether or not it already succeeded (potentially because another
+     * migration failed or a write to disk failed.)
+     * @param scope The scope in which IO operations and transform functions will execute.
+     * @param produceFile Function which returns the file that the new DataStore will act on.
+     * The function must return the same path every time. No two instances of PreferenceDataStore
+     * should act on the same file at the same time. The file must have the extension
+     * preferences_pb. File will be created if it doesn't exist.
+     *
+     * @return a new DataStore instance with the provided configuration
+     */
+    @JvmOverloads
+    public actual fun createWithPath(
+        corruptionHandler: ReplaceFileCorruptionHandler<Preferences>?,
+        migrations: List<DataMigration<Preferences>>,
+        scope: CoroutineScope,
+        produceFile: () -> Path
+    ): DataStore<Preferences> {
+        return create(
+            corruptionHandler,
+            migrations,
+            scope,
+            produceFile = { produceFile().toFile() }
+        )
+    }
 }
\ No newline at end of file
diff --git a/datastore/datastore-preferences-core/src/nativeMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.native.kt b/datastore/datastore-preferences-core/src/nativeMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.native.kt
index c3ee75d..74e553f2 100644
--- a/datastore/datastore-preferences-core/src/nativeMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.native.kt
+++ b/datastore/datastore-preferences-core/src/nativeMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.native.kt
@@ -23,14 +23,12 @@
 import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
 import androidx.datastore.core.okio.OkioStorage
 import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.SupervisorJob
 import okio.FileSystem
 import okio.Path
 
 actual object PreferenceDataStoreFactory {
     /**
-     * Create an instance of SingleProcessDataStore. Never create more than one instance of
+     * Create an instance of [DataStore]. Never create more than one instance of
      * DataStore for a given file; doing so can break all DataStore functionality. You should
      * consider managing your DataStore instance as a singleton.
      *
@@ -44,14 +42,14 @@
      * @param produceFile Function which returns the file that the new DataStore will act on.
      * The function must return the same path every time. No two instances of PreferenceDataStore
      * should act on the same file at the same time. The file must have the extension
-     * preferences_pb.
+     * preferences_pb. File will be created if it doesn't exist.
      *
      * @return a new DataStore instance with the provided configuration
      */
-    public fun create(
-        corruptionHandler: ReplaceFileCorruptionHandler<Preferences>? = null,
-        migrations: List<DataMigration<Preferences>> = listOf(),
-        scope: CoroutineScope = CoroutineScope(Dispatchers.Main + SupervisorJob()),
+    public actual fun createWithPath(
+        corruptionHandler: ReplaceFileCorruptionHandler<Preferences>?,
+        migrations: List<DataMigration<Preferences>>,
+        scope: CoroutineScope,
         produceFile: () -> Path
     ): DataStore<Preferences> {
         val delegate = create(
@@ -71,7 +69,7 @@
     }
 
     /**
-     * Create an instance of SingleProcessDataStore. Never create more than one instance of
+     * Create an instance of [DataStore]. Never create more than one instance of
      * DataStore for a given file; doing so can break all DataStore functionality. You should
      * consider managing your DataStore instance as a singleton.
      *
diff --git a/datastore/datastore-preferences-core/src/nativeTest/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactoryNativeTest.kt b/datastore/datastore-preferences-core/src/nativeTest/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactoryNativeTest.kt
index 7d49acc..a0a60f2 100644
--- a/datastore/datastore-preferences-core/src/nativeTest/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactoryNativeTest.kt
+++ b/datastore/datastore-preferences-core/src/nativeTest/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactoryNativeTest.kt
@@ -51,7 +51,7 @@
 
     @Test
     fun testNewInstance() = runTest {
-        val store = PreferenceDataStoreFactory.create(
+        val store = PreferenceDataStoreFactory.createWithPath(
             scope = dataStoreScope
         ) { testFile }
 
@@ -76,7 +76,7 @@
 
         val valueToReplace = preferencesOf(booleanKey to true)
 
-        val store = PreferenceDataStoreFactory.create(
+        val store = PreferenceDataStoreFactory.createWithPath(
             corruptionHandler = ReplaceFileCorruptionHandler<Preferences> {
                 valueToReplace
             },
@@ -111,7 +111,7 @@
             override suspend fun cleanUp() {}
         }
 
-        val store = PreferenceDataStoreFactory.create(
+        val store = PreferenceDataStoreFactory.createWithPath(
             migrations = listOf(migrateTo5, migratePlus1),
             scope = dataStoreScope
         ) { testFile }
@@ -122,7 +122,7 @@
     @Test
     fun testCantMutateInternalState() = runTest {
         val store =
-            PreferenceDataStoreFactory.create(scope = dataStoreScope) { testFile }
+            PreferenceDataStoreFactory.createWithPath(scope = dataStoreScope) { testFile }
 
         var mutableReference: MutablePreferences? = null
         store.edit {
diff --git a/development/build_log_simplifier/messages.ignore b/development/build_log_simplifier/messages.ignore
index 95b9e85..fa2c57b 100644
--- a/development/build_log_simplifier/messages.ignore
+++ b/development/build_log_simplifier/messages.ignore
@@ -165,7 +165,7 @@
 Configuration cache entry reused with [0-9]+ problems\.
 See the profiling report at: file://\$GRADLE_USER_HOME/daemon/.*/reports/profile/profile\-[0-9]+\-[0-9]+\-[0-9]+\-[0-9]+\-[0-9]+\-[0-9]+\.html
 Configuration cache entry reused\.
-Configuration cache entry stored with [0-9]+ problems\.
+Configuration cache entry stored with [0-9]+ problem.*
 [0-9]+ actionable tasks: [0-9]+ executed, [0-9]+ from cache
 Configuration cache entry stored\.
 See the profiling report at\: file\:\/\/\$OUT_DIR\/androidx\/build\/reports\/profile\/profile\-[0-9]+\-[0-9]+\-[0-9]+\-[0-9]+\-[0-9]+\-[0-9]+\.html
@@ -184,7 +184,7 @@
 # > Task :compose:material:material:icons:generator:zipHtmlResultsOfTest
 Html results of .* zipped into.*\.zip
 # b/230127926
-[0-9]+ problems were found storing the configuration cache, [0-9]+ of which seem unique\.
+[0-9]+ problem.* found storing the configuration cache.*
 \- Task `:[:A-Za-z0-9#\-]+` of type `org\.jetbrains\.kotlin\.gradle\.plugin\.mpp\.[A-Za-z0-9]+`: invocation of 'Task\.project' at execution time is unsupported\.
 # https://youtrack.jetbrains.com/issue/KT-52694/
 \- Task `:listTaskOutputs` of type `androidx\.build\.ListTaskOutputsTask`: invocation of 'Task\.project' at execution time is unsupported\.
@@ -288,10 +288,6 @@
 \$SUPPORT/emoji[0-9]+/emoji[0-9]+\-bundled/src/main/AndroidManifest\.xml:[0-9]+:[0-9]+\-[0-9]+:[0-9]+ Warning:
 # b/195025261
 To honour the JVM settings for this build a single\-use Daemon process will be forked.*
-# > Task :work:work-benchmark:processReleaseAndroidTestManifest
-[0-9]+ problems were found storing the configuration cache\.
-# > Task :car:app:app:generateProtocolApi
-\- Task `:car:app:app:generateProtocolApi` of type `GenerateProtocolApiTask`: invocation of 'Task\.project' at execution time is unsupported\.
 # > Tasks configureCMakeRelWithDebInfo or configureCMakeDebug
 C/C\+\+: Building ver\.\: [0-9]+\.[0-9]+\.[0-9]+
 C/C\+\+: Packaging for\: (amd\-[0-9]+|armhf\-[0-9]+|x86\-[0-9]+)
diff --git a/drawerlayout/drawerlayout/src/androidTest/AndroidManifest.xml b/drawerlayout/drawerlayout/src/androidTest/AndroidManifest.xml
index ee402d3..fd75a2f 100644
--- a/drawerlayout/drawerlayout/src/androidTest/AndroidManifest.xml
+++ b/drawerlayout/drawerlayout/src/androidTest/AndroidManifest.xml
@@ -17,7 +17,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android">
 
     <application
-            android:supportsRtl="true">
+            android:supportsRtl="true"
+            android:enableOnBackInvokedCallback="true">
         <activity
                 android:name="androidx.drawerlayout.widget.DrawerCustomThemeActivity"
                 android:theme="@style/CustomDrawerLayoutTheme"/>
diff --git a/health/health-connect-client/src/main/java/androidx/health/connect/client/PermissionController.kt b/health/health-connect-client/src/main/java/androidx/health/connect/client/PermissionController.kt
index 158d1c4..157fb39 100644
--- a/health/health-connect-client/src/main/java/androidx/health/connect/client/PermissionController.kt
+++ b/health/health-connect-client/src/main/java/androidx/health/connect/client/PermissionController.kt
@@ -37,8 +37,8 @@
      * @param permissions set of permissions interested to check if granted or not
      * @return set of granted permissions.
      *
-     * @throws RemoteException For any IPC transportation failures.
-     * @throws IOException For any disk I/O issues.
+     * @throws android.os.RemoteException For any IPC transportation failures.
+     * @throws java.io.IOException For any disk I/O issues.
      * @throws IllegalStateException If service is not available.
      */
     suspend fun getGrantedPermissions(permissions: Set<Permission>): Set<Permission>
@@ -46,8 +46,8 @@
     /**
      * Revokes all previously granted [Permission] by the user to the calling app.
      *
-     * @throws RemoteException For any IPC transportation failures.
-     * @throws IOException For any disk I/O issues.
+     * @throws android.os.RemoteException For any IPC transportation failures.
+     * @throws java.io.IOException For any disk I/O issues.
      * @throws IllegalStateException If service is not available.
      */
     suspend fun revokeAllPermissions()
diff --git a/health/health-connect-client/src/main/java/androidx/health/connect/client/records/CyclingPedalingCadenceRecord.kt b/health/health-connect-client/src/main/java/androidx/health/connect/client/records/CyclingPedalingCadenceRecord.kt
index 0c87da2..e574dfb 100644
--- a/health/health-connect-client/src/main/java/androidx/health/connect/client/records/CyclingPedalingCadenceRecord.kt
+++ b/health/health-connect-client/src/main/java/androidx/health/connect/client/records/CyclingPedalingCadenceRecord.kt
@@ -68,7 +68,7 @@
     }
 
     companion object {
-        private const val TYPE = "CyclingPedalingCadence"
+        private const val TYPE = "CyclingPedalingCadenceSeries"
         private const val RPM_FIELD = "rpm"
 
         /**
diff --git a/health/health-connect-client/src/main/java/androidx/health/connect/client/records/HeartRateRecord.kt b/health/health-connect-client/src/main/java/androidx/health/connect/client/records/HeartRateRecord.kt
index bd488fe..09facb6 100644
--- a/health/health-connect-client/src/main/java/androidx/health/connect/client/records/HeartRateRecord.kt
+++ b/health/health-connect-client/src/main/java/androidx/health/connect/client/records/HeartRateRecord.kt
@@ -62,7 +62,7 @@
     }
 
     companion object {
-        private const val HEART_RATE_TYPE_NAME = "HeartRate"
+        private const val HEART_RATE_TYPE_NAME = "HeartRateSeries"
         private const val BPM_FIELD_NAME = "bpm"
 
         /** Metric identifier to retrieve the average heart rate from [AggregationResult]. */
diff --git a/health/health-connect-client/src/main/java/androidx/health/connect/client/records/PowerRecord.kt b/health/health-connect-client/src/main/java/androidx/health/connect/client/records/PowerRecord.kt
index 8af59e1..87ae4df 100644
--- a/health/health-connect-client/src/main/java/androidx/health/connect/client/records/PowerRecord.kt
+++ b/health/health-connect-client/src/main/java/androidx/health/connect/client/records/PowerRecord.kt
@@ -69,7 +69,7 @@
     }
 
     companion object {
-        private const val TYPE = "Power"
+        private const val TYPE = "PowerSeries"
         private const val POWER_FIELD = "power"
 
         /**
diff --git a/health/health-connect-client/src/main/java/androidx/health/connect/client/records/SpeedRecord.kt b/health/health-connect-client/src/main/java/androidx/health/connect/client/records/SpeedRecord.kt
index e14bc6f..3794444 100644
--- a/health/health-connect-client/src/main/java/androidx/health/connect/client/records/SpeedRecord.kt
+++ b/health/health-connect-client/src/main/java/androidx/health/connect/client/records/SpeedRecord.kt
@@ -65,7 +65,7 @@
     }
 
     companion object {
-        private const val SPEED_TYPE_NAME = "Speed"
+        private const val SPEED_TYPE_NAME = "SpeedSeries"
         private const val SPEED_FIELD_NAME = "speed"
 
         /**
diff --git a/health/health-connect-client/src/main/java/androidx/health/connect/client/records/StepsCadenceRecord.kt b/health/health-connect-client/src/main/java/androidx/health/connect/client/records/StepsCadenceRecord.kt
index d7488b6..fe47b72 100644
--- a/health/health-connect-client/src/main/java/androidx/health/connect/client/records/StepsCadenceRecord.kt
+++ b/health/health-connect-client/src/main/java/androidx/health/connect/client/records/StepsCadenceRecord.kt
@@ -66,7 +66,7 @@
     }
 
     companion object {
-        private const val TYPE = "StepsCadence"
+        private const val TYPE = "StepsCadenceSeries"
         private const val RATE_FIELD = "rate"
 
         /**
diff --git a/health/health-connect-client/src/test/java/androidx/health/connect/client/impl/converters/aggregate/AggregateMetricConverterTest.kt b/health/health-connect-client/src/test/java/androidx/health/connect/client/impl/converters/aggregate/AggregateMetricConverterTest.kt
index e60f787..c14d010 100644
--- a/health/health-connect-client/src/test/java/androidx/health/connect/client/impl/converters/aggregate/AggregateMetricConverterTest.kt
+++ b/health/health-connect-client/src/test/java/androidx/health/connect/client/impl/converters/aggregate/AggregateMetricConverterTest.kt
@@ -15,9 +15,13 @@
  */
 package androidx.health.connect.client.impl.converters.aggregate
 
+import androidx.health.connect.client.records.CyclingPedalingCadenceRecord
 import androidx.health.connect.client.records.DistanceRecord
 import androidx.health.connect.client.records.ExerciseSessionRecord
 import androidx.health.connect.client.records.HeartRateRecord
+import androidx.health.connect.client.records.PowerRecord
+import androidx.health.connect.client.records.SpeedRecord
+import androidx.health.connect.client.records.StepsCadenceRecord
 import androidx.health.connect.client.records.StepsRecord
 import androidx.health.platform.client.proto.RequestProto
 import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -56,9 +60,41 @@
         assertThat(HeartRateRecord.MEASUREMENTS_COUNT.toProto())
             .isEqualTo(
                 RequestProto.AggregateMetricSpec.newBuilder()
-                    .setDataTypeName("HeartRate")
+                    .setDataTypeName("HeartRateSeries")
                     .setAggregationType("count")
                     .build()
             )
+        assertThat(SpeedRecord.SPEED_AVG.toProto())
+            .isEqualTo(
+                RequestProto.AggregateMetricSpec.newBuilder()
+                    .setDataTypeName("SpeedSeries")
+                    .setAggregationType("avg")
+                    .setFieldName("speed")
+                    .build()
+            )
+        assertThat(CyclingPedalingCadenceRecord.RPM_MAX.toProto())
+            .isEqualTo(
+                RequestProto.AggregateMetricSpec.newBuilder()
+                    .setDataTypeName("CyclingPedalingCadenceSeries")
+                    .setAggregationType("max")
+                    .setFieldName("rpm")
+                    .build()
+            )
+        assertThat(StepsCadenceRecord.RATE_MIN.toProto())
+            .isEqualTo(
+                RequestProto.AggregateMetricSpec.newBuilder()
+                    .setDataTypeName("StepsCadenceSeries")
+                    .setAggregationType("min")
+                    .setFieldName("rate")
+                    .build()
+            )
+        assertThat(PowerRecord.POWER_AVG.toProto())
+            .isEqualTo(
+                RequestProto.AggregateMetricSpec.newBuilder()
+                    .setDataTypeName("PowerSeries")
+                    .setAggregationType("avg")
+                    .setFieldName("power")
+                    .build()
+            )
     }
 }
diff --git a/health/health-connect-client/src/test/java/androidx/health/platform/client/impl/data/ProtoParcelableTest.kt b/health/health-connect-client/src/test/java/androidx/health/platform/client/impl/data/ProtoParcelableTest.kt
index dd49758..4738040 100644
--- a/health/health-connect-client/src/test/java/androidx/health/platform/client/impl/data/ProtoParcelableTest.kt
+++ b/health/health-connect-client/src/test/java/androidx/health/platform/client/impl/data/ProtoParcelableTest.kt
@@ -15,15 +15,16 @@
  */
 package androidx.health.platform.client.impl.data
 
+import android.os.Build
 import android.os.Parcel
 import android.os.Parcelable
 import androidx.health.platform.client.proto.ByteString
 import androidx.health.platform.client.proto.BytesValue
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import com.google.common.truth.Truth.assertThat
-import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.robolectric.annotation.Config
 
 @RunWith(AndroidJUnit4::class)
 class ProtoParcelableTest {
@@ -37,8 +38,8 @@
         assertThat(parcelAndRead(protoParcelable).proto).isEqualTo(protoParcelable.proto)
     }
 
-    @Ignore // b/238635208
     @Test
+    @Config(sdk = [Build.VERSION_CODES.P])
     fun storeInSharedMemory() {
         // Big enough that it will be stored in shared memory.
         val protoParcelable =
diff --git a/libraryversions.toml b/libraryversions.toml
index 1987046..9a84579 100644
--- a/libraryversions.toml
+++ b/libraryversions.toml
@@ -24,7 +24,7 @@
 COMPOSE_RUNTIME_TRACING = "1.0.0-alpha01"
 CONTENTPAGER = "1.1.0-alpha01"
 COORDINATORLAYOUT = "1.3.0-alpha01"
-CORE = "1.9.0-alpha05"
+CORE = "1.9.0-beta01"
 CORE_ANIMATION = "1.0.0-beta02"
 CORE_ANIMATION_TESTING = "1.0.0-beta01"
 CORE_APPDIGEST = "1.0.0-alpha01"
@@ -128,7 +128,7 @@
 WEAR_ONGOING = "1.1.0-alpha01"
 WEAR_PHONE_INTERACTIONS = "1.1.0-alpha04"
 WEAR_REMOTE_INTERACTIONS = "1.1.0-alpha01"
-WEAR_TILES = "1.1.0-beta02"
+WEAR_TILES = "1.1.0-rc01"
 WEAR_WATCHFACE = "1.2.0-alpha01"
 WEBKIT = "1.6.0-alpha01"
 WINDOW = "1.1.0-alpha04"
diff --git a/lint-checks/src/main/java/androidx/build/lint/AndroidXIssueRegistry.kt b/lint-checks/src/main/java/androidx/build/lint/AndroidXIssueRegistry.kt
index 3a50f64..9469d07 100644
--- a/lint-checks/src/main/java/androidx/build/lint/AndroidXIssueRegistry.kt
+++ b/lint-checks/src/main/java/androidx/build/lint/AndroidXIssueRegistry.kt
@@ -41,11 +41,8 @@
                 AndroidManifestServiceExportedDetector.ISSUE,
                 BanParcelableUsage.ISSUE,
                 BanConcurrentHashMap.ISSUE,
-
-                // Reenable after b/235251897 is resolved
-//                BanInappropriateExperimentalUsage.ISSUE,
-//                BanInappropriateExperimentalUsage.NULL_ANNOTATION_GROUP_ISSUE,
-
+                BanInappropriateExperimentalUsage.ISSUE,
+                BanInappropriateExperimentalUsage.NULL_ANNOTATION_GROUP_ISSUE,
                 BanInlineOptIn.ISSUE,
                 BanKeepAnnotation.ISSUE,
                 TargetApiAnnotationUsageDetector.ISSUE,
diff --git a/lint-checks/src/main/java/androidx/build/lint/BanInappropriateExperimentalUsage.kt b/lint-checks/src/main/java/androidx/build/lint/BanInappropriateExperimentalUsage.kt
index bc2a5b6..e29f6e2 100644
--- a/lint-checks/src/main/java/androidx/build/lint/BanInappropriateExperimentalUsage.kt
+++ b/lint-checks/src/main/java/androidx/build/lint/BanInappropriateExperimentalUsage.kt
@@ -356,13 +356,11 @@
          *         path, or `null` if [jarFilePath] doesn't contain the string "androidx".
          */
         internal fun getMavenCoordinatesFromPath(jarFilePath: String): LintModelMavenName? {
-            if (!jarFilePath.contains("androidx")) return null
-
             val pathParts = jarFilePath.split("/")
-
             val androidxIndex = pathParts.indexOf("androidx")
-            val groupId = pathParts[androidxIndex] + "." + pathParts[androidxIndex + 1]
+            if (androidxIndex == -1) return null
 
+            val groupId = pathParts[androidxIndex] + "." + pathParts[androidxIndex + 1]
             val artifactId = pathParts[androidxIndex + 2]
 
             val filename = pathParts.last()
diff --git a/media2/media2-player/src/androidTest/java/androidx/media2/player/MediaPlayer2Test.java b/media2/media2-player/src/androidTest/java/androidx/media2/player/MediaPlayer2Test.java
index d60bd4e..4f186c0 100644
--- a/media2/media2-player/src/androidTest/java/androidx/media2/player/MediaPlayer2Test.java
+++ b/media2/media2-player/src/androidTest/java/androidx/media2/player/MediaPlayer2Test.java
@@ -22,6 +22,7 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import static org.junit.Assume.assumeTrue;
 
 import android.content.pm.PackageManager;
 import android.content.res.AssetFileDescriptor;
@@ -646,6 +647,8 @@
     @Test
     @LargeTest
     public void videoSurfaceResetting() throws Exception {
+        // b/239017530
+        assumeTrue(Build.VERSION.SDK_INT != 29);
         final int tolerance = 150;
         final int audioLatencyTolerance = 1000;  /* covers audio path latency variability */
         final int seekPos = 1840;  // This is the I-frame position
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/InvalidateCallbackTracker.kt b/paging/paging-common/src/main/kotlin/androidx/paging/InvalidateCallbackTracker.kt
index 727fdf8..2d6393b 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/InvalidateCallbackTracker.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/InvalidateCallbackTracker.kt
@@ -71,12 +71,12 @@
         }
     }
 
-    internal fun invalidate() {
-        if (invalid) return
+    internal fun invalidate(): Boolean {
+        if (invalid) return false
 
         var callbacksToInvoke: List<T>?
         lock.withLock {
-            if (invalid) return
+            if (invalid) return false
 
             invalid = true
             callbacksToInvoke = callbacks.toList()
@@ -84,5 +84,6 @@
         }
 
         callbacksToInvoke?.forEach(callbackInvoker)
+        return true
     }
 }
\ No newline at end of file
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/PageFetcher.kt b/paging/paging-common/src/main/kotlin/androidx/paging/PageFetcher.kt
index 5997922..59130e8 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/PageFetcher.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/PageFetcher.kt
@@ -97,7 +97,9 @@
 
                 val initialKey: Key? = when (previousPagingState) {
                     null -> initialKey
-                    else -> pagingSource.getRefreshKey(previousPagingState)
+                    else -> pagingSource.getRefreshKey(previousPagingState).also {
+                        log(DEBUG) { "Refresh key $it returned from PagingSource $pagingSource" }
+                    }
                 }
 
                 previousGeneration?.snapshot?.close()
@@ -222,6 +224,7 @@
         pagingSource.registerInvalidatedCallback(::invalidate)
         previousPagingSource?.unregisterInvalidatedCallback(::invalidate)
         previousPagingSource?.invalidate() // Note: Invalidate is idempotent.
+        log(DEBUG) { "Generated new PagingSource $pagingSource" }
 
         return pagingSource
     }
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/PageFetcherSnapshot.kt b/paging/paging-common/src/main/kotlin/androidx/paging/PageFetcherSnapshot.kt
index 7520ffb..929da61 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/PageFetcherSnapshot.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/PageFetcherSnapshot.kt
@@ -41,7 +41,6 @@
 import kotlinx.coroutines.flow.conflate
 import kotlinx.coroutines.flow.consumeAsFlow
 import kotlinx.coroutines.flow.drop
-import kotlinx.coroutines.flow.first
 import kotlinx.coroutines.flow.firstOrNull
 import kotlinx.coroutines.flow.flowOf
 import kotlinx.coroutines.flow.map
@@ -223,6 +222,7 @@
                             hint.presentedItemsAfter * -1 > config.jumpThreshold
                     }
                 if (jumpHint != null) {
+                    log(DEBUG) { "Jump triggered on PagingSource $pagingSource by $jumpHint" }
                     jumpCallback()
                 }
             }
@@ -284,6 +284,9 @@
         stateHolder.withLock { state -> state.setLoading(REFRESH) }
 
         val params = loadParams(REFRESH, initialKey)
+
+        log(DEBUG) { "Start REFRESH with loadKey $initialKey on $pagingSource" }
+
         when (val result = pagingSource.load(params)) {
             is Page<Key, Value> -> {
                 // Atomically update load states + pages while still holding the mutex, otherwise
@@ -316,11 +319,15 @@
                 // correctly reflected in the insert event. Note that we only send the event if the
                 // insert was successfully applied in the case of cancellation due to page dropping.
                 if (insertApplied) {
+                    log(DEBUG) { loadResultLog(REFRESH, initialKey, result) }
+
                     stateHolder.withLock { state ->
                         with(state) {
                             pageEventCh.send(result.toPageEvent(REFRESH))
                         }
                     }
+                } else {
+                    log(VERBOSE) { loadResultLog(REFRESH, initialKey, null) }
                 }
 
                 // Launch any RemoteMediator boundary calls after applying initial insert.
@@ -340,11 +347,17 @@
                     }
                 }
             }
-            is LoadResult.Error -> stateHolder.withLock { state ->
-                val loadState = Error(result.throwable)
-                state.setError(loadType = REFRESH, error = loadState)
+            is LoadResult.Error -> {
+                log(VERBOSE) { loadResultLog(REFRESH, initialKey, result) }
+                stateHolder.withLock { state ->
+                    val loadState = Error(result.throwable)
+                    state.setError(loadType = REFRESH, error = loadState)
+                }
             }
-            is LoadResult.Invalid -> onInvalidLoad()
+            is LoadResult.Invalid -> {
+                log(VERBOSE) { loadResultLog(REFRESH, initialKey, result) }
+                onInvalidLoad()
+            }
         }
     }
 
@@ -407,6 +420,7 @@
         var endOfPaginationReached = false
         loop@ while (loadKey != null) {
             val params = loadParams(loadType, loadKey)
+            log(DEBUG) { "Start $loadType with loadKey $loadKey on $pagingSource" }
             val result: LoadResult<Key, Value> = pagingSource.load(params)
             when (result) {
                 is Page<Key, Value> -> {
@@ -434,7 +448,12 @@
                     }
 
                     // Break if insert was skipped due to cancellation
-                    if (!insertApplied) break@loop
+                    if (!insertApplied) {
+                        log(VERBOSE) { loadResultLog(loadType, loadKey, null) }
+                        break@loop
+                    }
+
+                    log(DEBUG) { loadResultLog(loadType, loadKey, result) }
 
                     itemsLoaded += result.data.size
 
@@ -447,6 +466,7 @@
                     }
                 }
                 is LoadResult.Error -> {
+                    log(VERBOSE) { loadResultLog(loadType, loadKey, result) }
                     stateHolder.withLock { state ->
                         val loadState = Error(result.throwable)
                         state.setError(loadType = loadType, error = loadState)
@@ -458,6 +478,7 @@
                     return
                 }
                 is LoadResult.Invalid -> {
+                    log(VERBOSE) { loadResultLog(loadType, loadKey, result) }
                     onInvalidLoad()
                     return
                 }
@@ -518,6 +539,18 @@
         }
     }
 
+    private fun loadResultLog(
+        loadType: LoadType,
+        loadKey: Key?,
+        result: LoadResult<Key, Value>?
+    ): String {
+        return if (result == null) {
+            "End $loadType with loadkey $loadKey. Load CANCELLED."
+        } else {
+            "End $loadType with loadKey $loadKey. Returned $result"
+        }
+    }
+
     private suspend fun PageFetcherSnapshotState<Key, Value>.setLoading(loadType: LoadType) {
         if (sourceLoadStates.get(loadType) != Loading) {
             sourceLoadStates.set(type = loadType, state = Loading)
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/PagingDataDiffer.kt b/paging/paging-common/src/main/kotlin/androidx/paging/PagingDataDiffer.kt
index f061f40..11a2522 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/PagingDataDiffer.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/PagingDataDiffer.kt
@@ -265,6 +265,7 @@
         lastAccessedIndexUnfulfilled = true
         lastAccessedIndex = index
 
+        log(VERBOSE) { "Accessing item index[$index]" }
         hintReceiver?.accessHint(presenter.accessHintForPresenterIndex(index))
         return presenter.get(index)
     }
@@ -298,6 +299,7 @@
      *  * [RemoteMediator.load] returning [RemoteMediator.MediatorResult.Error]
      */
     public fun retry() {
+        log(DEBUG) { "Retry signal received" }
         uiReceiver?.retry()
     }
 
@@ -318,6 +320,7 @@
      * @sample androidx.paging.samples.refreshSample
      */
     public fun refresh() {
+        log(DEBUG) { "Refresh signal received" }
         uiReceiver?.refresh()
     }
 
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/PagingSource.kt b/paging/paging-common/src/main/kotlin/androidx/paging/PagingSource.kt
index 84e22cf..8feda0d 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/PagingSource.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/PagingSource.kt
@@ -207,7 +207,13 @@
          */
         public data class Error<Key : Any, Value : Any>(
             val throwable: Throwable
-        ) : LoadResult<Key, Value>()
+        ) : LoadResult<Key, Value>() {
+            override fun toString(): String {
+                return """LoadResult.Error(
+                    |   throwable: $throwable
+                    |) """.trimMargin()
+            }
+        }
 
         /**
          * Invalid result object for [PagingSource.load]
@@ -225,7 +231,11 @@
          * Returning [Invalid] will trigger Paging to [invalidate] this [PagingSource] and
          * terminate any future attempts to [load] from this [PagingSource]
          */
-        public class Invalid<Key : Any, Value : Any> : LoadResult<Key, Value>()
+        public class Invalid<Key : Any, Value : Any> : LoadResult<Key, Value>() {
+            override fun toString(): String {
+                return "LoadResult.Invalid"
+            }
+        }
 
         /**
          * Success result object for [PagingSource.load].
@@ -283,6 +293,17 @@
                     "itemsAfter cannot be negative"
                 }
             }
+            override fun toString(): String {
+                return """LoadResult.Page(
+                    |   data size: ${data.size}
+                    |   first Item: ${data.firstOrNull()}
+                    |   last Item: ${data.lastOrNull()}
+                    |   nextKey: $nextKey
+                    |   prevKey: $prevKey
+                    |   itemsBefore: $itemsBefore
+                    |   itemsAfter: $itemsAfter
+                    |) """.trimMargin()
+            }
 
             public companion object {
                 public const val COUNT_UNDEFINED: Int = Int.MIN_VALUE
@@ -333,7 +354,9 @@
      * this method should have no effect.
      */
     public fun invalidate() {
-        invalidateCallbackTracker.invalidate()
+        if (invalidateCallbackTracker.invalidate()) {
+            log(DEBUG) { "Invalidated PagingSource $this" }
+        }
     }
 
     /**
diff --git a/room/OWNERS b/room/OWNERS
index 46a7ef4..d3aa3d9 100644
--- a/room/OWNERS
+++ b/room/OWNERS
@@ -3,5 +3,6 @@
 [email protected]
 [email protected]
 [email protected]
[email protected]
 
 per-file settings.gradle = [email protected]
diff --git a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/InternalXAnnotationValue.kt b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/InternalXAnnotationValue.kt
index 4315bee..12c6f0ef 100644
--- a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/InternalXAnnotationValue.kt
+++ b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/InternalXAnnotationValue.kt
@@ -57,8 +57,6 @@
         Kind.of(valueType)
     }
 
-    protected abstract val valueType: XType
-
     final override fun hasListValue() = valueType.isArray()
 
     /** Returns true if the value is an [XType] */
diff --git a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XAnnotationValue.kt b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XAnnotationValue.kt
index b85213b..8ca6c46 100644
--- a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XAnnotationValue.kt
+++ b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XAnnotationValue.kt
@@ -38,6 +38,15 @@
      */
     val value: Any?
 
+    /**
+     * Returns the type of this annotation value as declared in the annotation class.
+     *
+     * For Java sources, this will be the return type of the method that declares this annotation
+     * value. For Kotlin sources, this will be the constructor parameter type that declares this
+     * annotation value.
+     */
+    val valueType: XType
+
     /** Returns true if the value is an [XType] */
     fun hasTypeValue(): Boolean
 
diff --git a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/kotlin/JvmDescriptorUtils.kt b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/kotlin/JvmDescriptorUtils.kt
index 05f2e59..e74a6bb 100644
--- a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/kotlin/JvmDescriptorUtils.kt
+++ b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/kotlin/JvmDescriptorUtils.kt
@@ -196,7 +196,8 @@
 
     override fun visitNull(t: NullType, u: Unit): String = visitUnknown(t, u)
 
-    override fun visitError(t: ErrorType, u: Unit): String = visitUnknown(t, u)
+    override fun visitError(t: ErrorType, u: Unit): String =
+        throw TypeNotPresentException(t.toString(), null)
 
     override fun visitIntersection(t: IntersectionType, u: Unit) = t.descriptor()
 
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationValueTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationValueTest.kt
index db170d4..35799bf 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationValueTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationValueTest.kt
@@ -21,6 +21,11 @@
 import androidx.room.compiler.processing.util.compileFiles
 import androidx.room.compiler.processing.util.runProcessorTest
 import com.google.common.truth.Truth.assertThat
+import com.squareup.javapoet.ArrayTypeName
+import com.squareup.javapoet.ClassName
+import com.squareup.javapoet.ParameterizedTypeName
+import com.squareup.javapoet.TypeName
+import com.squareup.javapoet.WildcardTypeName
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
@@ -106,11 +111,14 @@
             ) as Source.KotlinSource
         ) { invocation ->
             fun checkSingleValue(annotationValue: XAnnotationValue, expectedValue: Boolean) {
+                assertThat(annotationValue.valueType.typeName).isEqualTo(TypeName.BOOLEAN)
                 assertThat(annotationValue.hasBooleanValue()).isTrue()
                 assertThat(annotationValue.asBoolean()).isEqualTo(expectedValue)
             }
 
             fun checkListValues(annotationValue: XAnnotationValue, vararg expectedValues: Boolean) {
+                assertThat(annotationValue.valueType.typeName)
+                    .isEqualTo(ArrayTypeName.of(TypeName.BOOLEAN))
                 assertThat(annotationValue.hasBooleanListValue()).isTrue()
                 // Check the list of values
                 assertThat(annotationValue.asBooleanList())
@@ -174,11 +182,14 @@
             ) as Source.KotlinSource
         ) { invocation ->
             fun checkSingleValue(annotationValue: XAnnotationValue, expectedValue: Int) {
+                assertThat(annotationValue.valueType.typeName).isEqualTo(TypeName.INT)
                 assertThat(annotationValue.hasIntValue()).isTrue()
                 assertThat(annotationValue.asInt()).isEqualTo(expectedValue)
             }
 
             fun checkListValues(annotationValue: XAnnotationValue, vararg expectedValues: Int) {
+                assertThat(annotationValue.valueType.typeName)
+                    .isEqualTo(ArrayTypeName.of(TypeName.INT))
                 assertThat(annotationValue.hasIntListValue()).isTrue()
                 // Check the list of values
                 assertThat(annotationValue.asIntList())
@@ -242,11 +253,14 @@
             ) as Source.KotlinSource
         ) { invocation ->
             fun checkSingleValue(annotationValue: XAnnotationValue, expectedValue: Short) {
+                assertThat(annotationValue.valueType.typeName).isEqualTo(TypeName.SHORT)
                 assertThat(annotationValue.hasShortValue()).isTrue()
                 assertThat(annotationValue.asShort()).isEqualTo(expectedValue)
             }
 
             fun checkListValues(annotationValue: XAnnotationValue, vararg expectedValues: Short) {
+                assertThat(annotationValue.valueType.typeName)
+                    .isEqualTo(ArrayTypeName.of(TypeName.SHORT))
                 assertThat(annotationValue.hasShortListValue()).isTrue()
                 // Check the list of values
                 assertThat(annotationValue.asShortList())
@@ -310,11 +324,14 @@
             ) as Source.KotlinSource
         ) { invocation ->
             fun checkSingleValue(annotationValue: XAnnotationValue, expectedValue: Long) {
+                assertThat(annotationValue.valueType.typeName).isEqualTo(TypeName.LONG)
                 assertThat(annotationValue.hasLongValue()).isTrue()
                 assertThat(annotationValue.asLong()).isEqualTo(expectedValue)
             }
 
             fun checkListValues(annotationValue: XAnnotationValue, vararg expectedValues: Long) {
+                assertThat(annotationValue.valueType.typeName)
+                    .isEqualTo(ArrayTypeName.of(TypeName.LONG))
                 assertThat(annotationValue.hasLongListValue()).isTrue()
                 // Check the list of values
                 assertThat(annotationValue.asLongList())
@@ -378,11 +395,14 @@
             ) as Source.KotlinSource
         ) { invocation ->
             fun checkSingleValue(annotationValue: XAnnotationValue, expectedValue: Float) {
+                assertThat(annotationValue.valueType.typeName).isEqualTo(TypeName.FLOAT)
                 assertThat(annotationValue.hasFloatValue()).isTrue()
                 assertThat(annotationValue.asFloat()).isEqualTo(expectedValue)
             }
 
             fun checkListValues(annotationValue: XAnnotationValue, vararg expectedValues: Float) {
+                assertThat(annotationValue.valueType.typeName)
+                    .isEqualTo(ArrayTypeName.of(TypeName.FLOAT))
                 assertThat(annotationValue.hasFloatListValue()).isTrue()
                 // Check the list of values
                 assertThat(annotationValue.asFloatList())
@@ -446,11 +466,14 @@
             ) as Source.KotlinSource
         ) { invocation ->
             fun checkSingleValue(annotationValue: XAnnotationValue, expectedValue: Double) {
+                assertThat(annotationValue.valueType.typeName).isEqualTo(TypeName.DOUBLE)
                 assertThat(annotationValue.hasDoubleValue()).isTrue()
                 assertThat(annotationValue.asDouble()).isEqualTo(expectedValue)
             }
 
             fun checkListValues(annotationValue: XAnnotationValue, vararg expectedValues: Double) {
+                assertThat(annotationValue.valueType.typeName)
+                    .isEqualTo(ArrayTypeName.of(TypeName.DOUBLE))
                 assertThat(annotationValue.hasDoubleListValue()).isTrue()
                 // Check the list of values
                 assertThat(annotationValue.asDoubleList())
@@ -514,11 +537,14 @@
             ) as Source.KotlinSource
         ) { invocation ->
             fun checkSingleValue(annotationValue: XAnnotationValue, expectedValue: Byte) {
+                assertThat(annotationValue.valueType.typeName).isEqualTo(TypeName.BYTE)
                 assertThat(annotationValue.hasByteValue()).isTrue()
                 assertThat(annotationValue.asByte()).isEqualTo(expectedValue)
             }
 
             fun checkListValues(annotationValue: XAnnotationValue, vararg expectedValues: Byte) {
+                assertThat(annotationValue.valueType.typeName)
+                    .isEqualTo(ArrayTypeName.of(TypeName.BYTE))
                 assertThat(annotationValue.hasByteListValue()).isTrue()
                 // Check the list of values
                 assertThat(annotationValue.asByteList())
@@ -582,11 +608,14 @@
             ) as Source.KotlinSource
         ) { invocation ->
             fun checkSingleValue(annotationValue: XAnnotationValue, expectedValue: Char) {
+                assertThat(annotationValue.valueType.typeName).isEqualTo(TypeName.CHAR)
                 assertThat(annotationValue.hasCharValue()).isTrue()
                 assertThat(annotationValue.asChar()).isEqualTo(expectedValue)
             }
 
             fun checkListValues(annotationValue: XAnnotationValue, vararg expectedValues: Char) {
+                assertThat(annotationValue.valueType.typeName)
+                    .isEqualTo(ArrayTypeName.of(TypeName.CHAR))
                 assertThat(annotationValue.hasCharListValue()).isTrue()
                 // Check the list of values
                 assertThat(annotationValue.asCharList())
@@ -649,12 +678,17 @@
                 """.trimIndent()
             ) as Source.KotlinSource
         ) { invocation ->
+            val stringTypeName = TypeName.get(String::class.java)
+
             fun checkSingleValue(annotationValue: XAnnotationValue, expectedValue: String) {
+                assertThat(annotationValue.valueType.typeName).isEqualTo(stringTypeName)
                 assertThat(annotationValue.hasStringValue()).isTrue()
                 assertThat(annotationValue.asString()).isEqualTo(expectedValue)
             }
 
             fun checkListValues(annotationValue: XAnnotationValue, vararg expectedValues: String) {
+                assertThat(annotationValue.valueType.typeName)
+                    .isEqualTo(ArrayTypeName.of(stringTypeName))
                 assertThat(annotationValue.hasStringListValue()).isTrue()
                 // Check the list of values
                 assertThat(annotationValue.asStringList())
@@ -719,12 +753,17 @@
                 """.trimIndent()
             ) as Source.KotlinSource
         ) { invocation ->
+            val myEnumTypeName = ClassName.get("", "MyEnum")
+
             fun checkSingleValue(annotationValue: XAnnotationValue, expectedValue: String) {
+                assertThat(annotationValue.valueType.typeName).isEqualTo(myEnumTypeName)
                 assertThat(annotationValue.hasEnumValue()).isTrue()
                 assertThat(annotationValue.asEnum().name).isEqualTo(expectedValue)
             }
 
             fun checkListValues(annotationValue: XAnnotationValue, vararg expectedValues: String) {
+                assertThat(annotationValue.valueType.typeName)
+                    .isEqualTo(ArrayTypeName.of(myEnumTypeName))
                 assertThat(annotationValue.hasEnumListValue()).isTrue()
                 // Check the list of values
                 assertThat(annotationValue.asEnumList().map { it.name })
@@ -793,12 +832,34 @@
                 """.trimIndent()
             ) as Source.KotlinSource
         ) { invocation ->
+            val classTypeName = ParameterizedTypeName.get(
+                ClassName.get(Class::class.java),
+                WildcardTypeName.subtypeOf(TypeName.OBJECT)
+            )
+            val kClassTypeName = ParameterizedTypeName.get(
+                ClassName.get(kotlin.reflect.KClass::class.java),
+                WildcardTypeName.subtypeOf(TypeName.OBJECT)
+            )
             fun checkSingleValue(annotationValue: XAnnotationValue, expectedValue: String) {
+                // TODO(bcorso): Consider making the value types match in this case.
+                if (!invocation.isKsp || (sourceKind == SourceKind.JAVA && !isPreCompiled)) {
+                    assertThat(annotationValue.valueType.typeName).isEqualTo(classTypeName)
+                } else {
+                    assertThat(annotationValue.valueType.typeName).isEqualTo(kClassTypeName)
+                }
                 assertThat(annotationValue.hasTypeValue()).isTrue()
                 assertThat(annotationValue.asType().typeElement?.name).isEqualTo(expectedValue)
             }
 
             fun checkListValues(annotationValue: XAnnotationValue, vararg expectedValues: String) {
+                // TODO(bcorso): Consider making the value types match in this case.
+                if (!invocation.isKsp || (sourceKind == SourceKind.JAVA && !isPreCompiled)) {
+                    assertThat(annotationValue.valueType.typeName)
+                        .isEqualTo(ArrayTypeName.of(classTypeName))
+                } else {
+                    assertThat(annotationValue.valueType.typeName)
+                        .isEqualTo(ArrayTypeName.of(kClassTypeName))
+                }
                 assertThat(annotationValue.hasTypeListValue()).isTrue()
                 // Check the list of values
                 assertThat(annotationValue.asTypeList().map { it.typeElement?.name })
@@ -865,13 +926,18 @@
                 """.trimIndent()
             ) as Source.KotlinSource
         ) { invocation ->
+            val aTypeName = ClassName.get("", "A")
+
             fun checkSingleValue(annotationValue: XAnnotationValue, expectedValue: String) {
+                assertThat(annotationValue.valueType.typeName).isEqualTo(aTypeName)
                 assertThat(annotationValue.hasAnnotationValue()).isTrue()
                 assertThat(annotationValue.asAnnotation().getAsString("value"))
                     .isEqualTo(expectedValue)
             }
 
             fun checkListValues(annotationValue: XAnnotationValue, vararg expectedValues: String) {
+                assertThat(annotationValue.valueType.typeName)
+                    .isEqualTo(ArrayTypeName.of(aTypeName))
                 assertThat(annotationValue.hasAnnotationListValue()).isTrue()
                 // Check the list of values
                 assertThat(annotationValue.asAnnotationList().map { it.getAsString("value") })
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt b/room/room-compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
index 033b762..a93964d 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
@@ -59,6 +59,8 @@
     val ROOM_DB_CONFIG: ClassName = ClassName.get(ROOM_PACKAGE, "DatabaseConfiguration")
     val INSERTION_ADAPTER: ClassName =
         ClassName.get(ROOM_PACKAGE, "EntityInsertionAdapter")
+    val UPSERTION_ADAPTER: ClassName =
+        ClassName.get(ROOM_PACKAGE, "EntityUpsertionAdapter")
     val DELETE_OR_UPDATE_ADAPTER: ClassName =
         ClassName.get(ROOM_PACKAGE, "EntityDeletionOrUpdateAdapter")
     val SHARED_SQLITE_STMT: ClassName =
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/processor/DaoProcessor.kt b/room/room-compiler/src/main/kotlin/androidx/room/processor/DaoProcessor.kt
index 104295d..f4f41f4 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/processor/DaoProcessor.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/processor/DaoProcessor.kt
@@ -45,7 +45,7 @@
     companion object {
         val PROCESSED_ANNOTATIONS = listOf(
             Insert::class, Delete::class, Query::class,
-            Update::class, RawQuery::class
+            Update::class, Upsert::class, RawQuery::class
         )
     }
 
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/processor/DatabaseProcessor.kt b/room/room-compiler/src/main/kotlin/androidx/room/processor/DatabaseProcessor.kt
index 8fcba1b..ffad3f1 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/processor/DatabaseProcessor.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/processor/DatabaseProcessor.kt
@@ -371,7 +371,7 @@
             }
         }
         daoMethods.forEach { daoMethod ->
-            daoMethod.dao.shortcutMethods.forEach { method ->
+            daoMethod.dao.deleteOrUpdateShortcutMethods.forEach { method ->
                 method.entities.forEach {
                     check(method.element, daoMethod.dao, it.value.entityTypeName)
                 }
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/processor/MethodProcessorDelegate.kt b/room/room-compiler/src/main/kotlin/androidx/room/processor/MethodProcessorDelegate.kt
index c500f7e..31bd866 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/processor/MethodProcessorDelegate.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/processor/MethodProcessorDelegate.kt
@@ -38,8 +38,7 @@
 import androidx.room.solver.shortcut.binder.CallableInsertMethodBinder.Companion.createInsertBinder
 import androidx.room.solver.shortcut.binder.CallableUpsertMethodBinder.Companion.createUpsertBinder
 import androidx.room.solver.shortcut.binder.DeleteOrUpdateMethodBinder
-import androidx.room.solver.shortcut.binder.InsertMethodBinder
-import androidx.room.solver.shortcut.binder.UpsertMethodBinder
+import androidx.room.solver.shortcut.binder.InsertOrUpsertMethodBinder
 import androidx.room.solver.transaction.binder.CoroutineTransactionMethodBinder
 import androidx.room.solver.transaction.binder.InstantTransactionMethodBinder
 import androidx.room.solver.transaction.binder.TransactionMethodBinder
@@ -89,14 +88,14 @@
     abstract fun findInsertMethodBinder(
         returnType: XType,
         params: List<ShortcutQueryParameter>
-    ): InsertMethodBinder
+    ): InsertOrUpsertMethodBinder
 
     abstract fun findDeleteOrUpdateMethodBinder(returnType: XType): DeleteOrUpdateMethodBinder
 
     abstract fun findUpsertMethodBinder(
         returnType: XType,
         params: List<ShortcutQueryParameter>
-    ): UpsertMethodBinder
+    ): InsertOrUpsertMethodBinder
 
     abstract fun findTransactionMethodBinder(
         callType: TransactionMethod.CallType
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt b/room/room-compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
index 0b9d0e4..7c08dd0 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
@@ -18,6 +18,7 @@
 
 import androidx.room.Delete
 import androidx.room.Insert
+import androidx.room.Upsert
 import androidx.room.Query
 import androidx.room.RawQuery
 import androidx.room.RewriteQueriesToDropUnusedColumns
@@ -42,6 +43,7 @@
     val MISSING_INSERT_ANNOTATION = "Insertion methods must be annotated with ${Insert::class.java}"
     val MISSING_DELETE_ANNOTATION = "Deletion methods must be annotated with ${Delete::class.java}"
     val MISSING_UPDATE_ANNOTATION = "Update methods must be annotated with ${Update::class.java}"
+    val MISSING_UPSERT_ANNOTATION = "Upsertion methods must be annotated with ${Upsert::class.java}"
     val MISSING_RAWQUERY_ANNOTATION = "RawQuery methods must be annotated with" +
         " ${RawQuery::class.java}"
     val INVALID_ON_CONFLICT_VALUE = "On conflict value must be one of @OnConflictStrategy values."
@@ -57,6 +59,8 @@
         " methods. It must be bound to a type through base Dao class."
     val CANNOT_USE_UNBOUND_GENERICS_IN_INSERTION_METHODS = "Cannot use unbound generics in" +
         " insertion methods. It must be bound to a type through base Dao class."
+    val CANNOT_USE_UNBOUND_GENERICS_IN_UPSERTION_METHODS = "Cannot use unbound generics in" +
+        " upsertion methods. It must be bound to a type through base Dao class."
     val CANNOT_USE_UNBOUND_GENERICS_IN_ENTITY_FIELDS = "Cannot use unbound fields in entities."
     val CANNOT_USE_UNBOUND_GENERICS_IN_DAO_CLASSES = "Cannot use unbound generics in Dao classes." +
         " If you are trying to create a base DAO, create a normal class, extend it with type" +
@@ -143,6 +147,9 @@
     val INSERTION_DOES_NOT_HAVE_ANY_PARAMETERS_TO_INSERT = "Method annotated with" +
         " @Insert but does not have any parameters to insert."
 
+    val UPSERTION_DOES_NOT_HAVE_ANY_PARAMETERS_TO_UPSERT = "Method annotated with" +
+        " @Upsert but does not have any parameters to insert or update."
+
     val DELETION_MISSING_PARAMS = "Method annotated with" +
         " @Delete but does not have any parameters to delete."
 
@@ -179,6 +186,8 @@
 
     val CANNOT_FIND_INSERT_RESULT_ADAPTER = "Not sure how to handle insert method's return type."
 
+    val CANNOT_FIND_UPSERT_RESULT_ADAPTER = "Not sure how to handle upsert method's return type."
+
     val UPDATE_MISSING_PARAMS = "Method annotated with" +
         " @Update but does not have any parameters to update."
 
@@ -774,6 +783,13 @@
         "(${primaryKeyNames.joinToString()}) needed to perform an INSERT. If your single " +
         "primary key is auto generated then the fields are optional."
 
+    fun missingPrimaryKeysInPartialEntityForUpsert(
+        partialEntityName: String,
+        primaryKeyNames: List<String>
+    ) = "The partial entity $partialEntityName is missing the primary key fields " +
+        "(${primaryKeyNames.joinToString()}) needed to perform an UPSERT. If your single " +
+        "primary key is auto generated then the fields are optional."
+
     fun missingRequiredColumnsInPartialEntity(
         partialEntityName: String,
         missingColumnNames: List<String>
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/processor/UpsertionMethodProcessor.kt b/room/room-compiler/src/main/kotlin/androidx/room/processor/UpsertionMethodProcessor.kt
index a586df6..7d87c5a 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/processor/UpsertionMethodProcessor.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/processor/UpsertionMethodProcessor.kt
@@ -16,15 +16,11 @@
 
 package androidx.room.processor
 
+import androidx.room.Upsert
 import androidx.room.compiler.processing.XMethodElement
 import androidx.room.compiler.processing.XType
-import androidx.room.solver.CodeGenScope
-import androidx.room.solver.shortcut.binder.UpsertMethodBinder
-import androidx.room.vo.ShortcutEntity
-import androidx.room.vo.ShortcutQueryParameter
 import androidx.room.vo.UpsertionMethod
-import com.squareup.javapoet.FieldSpec
-import com.squareup.javapoet.TypeSpec
+import androidx.room.vo.findFieldByColumnName
 
 class UpsertionMethodProcessor(
     baseContext: Context,
@@ -32,21 +28,68 @@
     val executableElement: XMethodElement
 ) {
     val context = baseContext.fork(executableElement)
-    class StubUpsertMethodBinder : UpsertMethodBinder(null) {
-        override fun convertAndReturn(
-            parameters: List<ShortcutQueryParameter>,
-            upsertionAdapters: Map<String, Pair<FieldSpec, TypeSpec>>,
-            dbField: FieldSpec,
-            scope: CodeGenScope
-        ) {}
-    }
     fun process(): UpsertionMethod {
+        val delegate = ShortcutMethodProcessor(context, containing, executableElement)
+
+        val annotation = delegate.extractAnnotation(
+            Upsert::class,
+            ProcessorErrors.MISSING_UPSERT_ANNOTATION
+        )
+
+        val returnType = delegate.extractReturnType()
+        val returnTypeName = returnType.typeName
+        context.checker.notUnbound(
+            returnTypeName, executableElement,
+            ProcessorErrors.CANNOT_USE_UNBOUND_GENERICS_IN_UPSERTION_METHODS
+        )
+
+        val (entities, params) = delegate.extractParams(
+            targetEntityType = annotation?.getAsType("entity"),
+            missingParamError = ProcessorErrors.UPSERTION_DOES_NOT_HAVE_ANY_PARAMETERS_TO_UPSERT,
+            onValidatePartialEntity = { entity, pojo ->
+                val missingPrimaryKeys = entity.primaryKey.fields.any {
+                    pojo.findFieldByColumnName(it.columnName) == null
+                }
+                context.checker.check(
+                    entity.primaryKey.autoGenerateId || !missingPrimaryKeys,
+                    executableElement,
+                    ProcessorErrors.missingPrimaryKeysInPartialEntityForUpsert(
+                        partialEntityName = pojo.typeName.toString(),
+                        primaryKeyNames = entity.primaryKey.fields.columnNames
+                    )
+                )
+
+                // Verify all non null columns without a default value are in the POJO otherwise
+                // the UPSERT will fail with a NOT NULL constraint.
+                val missingRequiredFields = (entity.fields - entity.primaryKey.fields).filter {
+                    it.nonNull && it.defaultValue == null &&
+                        pojo.findFieldByColumnName(it.columnName) == null
+                }
+                context.checker.check(
+                    missingRequiredFields.isEmpty(),
+                    executableElement,
+                    ProcessorErrors.missingRequiredColumnsInPartialEntity(
+                        partialEntityName = pojo.typeName.toString(),
+                        missingColumnNames = missingRequiredFields.map { it.columnName }
+                    )
+                )
+            }
+        )
+
+        val methodBinder = delegate.findUpsertMethodBinder(returnType, params)
+        // TODO: (b/240491114) Uncomment code below for UpsertMethodAdapter is implemented
+        /*context.checker.check(
+            methodBinder.adapter != null,
+            executableElement,
+            ProcessorErrors.CANNOT_FIND_UPSERT_RESULT_ADAPTER
+        )*/
+
         return UpsertionMethod(
             element = executableElement,
-            returnType = executableElement.returnType,
-            entities = emptyMap<String, ShortcutEntity>(),
-            parameters = emptyList<ShortcutQueryParameter>(),
-            methodBinder = StubUpsertMethodBinder()
+            returnType = returnType,
+            entities = entities,
+            parameters = params,
+            methodBinder = methodBinder
         )
     }
 }
\ No newline at end of file
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
index cc06a34..b7d3188 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
@@ -80,14 +80,12 @@
 import androidx.room.solver.query.result.SingleEntityQueryResultAdapter
 import androidx.room.solver.query.result.SingleNamedColumnRowAdapter
 import androidx.room.solver.shortcut.binder.DeleteOrUpdateMethodBinder
-import androidx.room.solver.shortcut.binder.InsertMethodBinder
-import androidx.room.solver.shortcut.binder.UpsertMethodBinder
+import androidx.room.solver.shortcut.binder.InsertOrUpsertMethodBinder
 import androidx.room.solver.shortcut.binderprovider.DeleteOrUpdateMethodBinderProvider
 import androidx.room.solver.shortcut.binderprovider.GuavaListenableFutureDeleteOrUpdateMethodBinderProvider
 import androidx.room.solver.shortcut.binderprovider.GuavaListenableFutureInsertMethodBinderProvider
 import androidx.room.solver.shortcut.binderprovider.GuavaListenableFutureUpsertMethodBinderProvider
-import androidx.room.solver.shortcut.binderprovider.InsertMethodBinderProvider
-import androidx.room.solver.shortcut.binderprovider.UpsertMethodBinderProvider
+import androidx.room.solver.shortcut.binderprovider.InsertOrUpsertMethodBinderProvider
 import androidx.room.solver.shortcut.binderprovider.InstantDeleteOrUpdateMethodBinderProvider
 import androidx.room.solver.shortcut.binderprovider.InstantInsertMethodBinderProvider
 import androidx.room.solver.shortcut.binderprovider.InstantUpsertMethodBinderProvider
@@ -225,8 +223,8 @@
             add(InstantPreparedQueryResultBinderProvider(context))
         }
 
-    val insertBinderProviders: List<InsertMethodBinderProvider> =
-        mutableListOf<InsertMethodBinderProvider>().apply {
+    val insertBinderProviders: List<InsertOrUpsertMethodBinderProvider> =
+        mutableListOf<InsertOrUpsertMethodBinderProvider>().apply {
             addAll(RxCallableInsertMethodBinderProvider.getAll(context))
             add(GuavaListenableFutureInsertMethodBinderProvider(context))
             add(InstantInsertMethodBinderProvider(context))
@@ -239,8 +237,8 @@
             add(InstantDeleteOrUpdateMethodBinderProvider(context))
         }
 
-    val upsertBinderProviders: List<UpsertMethodBinderProvider> =
-        mutableListOf<UpsertMethodBinderProvider>().apply {
+    val upsertBinderProviders: List<InsertOrUpsertMethodBinderProvider> =
+        mutableListOf<InsertOrUpsertMethodBinderProvider>().apply {
             addAll(RxCallableUpsertMethodBinderProvider.getAll(context))
             add(GuavaListenableFutureUpsertMethodBinderProvider(context))
             add(InstantUpsertMethodBinderProvider(context))
@@ -398,7 +396,7 @@
     fun findInsertMethodBinder(
         typeMirror: XType,
         params: List<ShortcutQueryParameter>
-    ): InsertMethodBinder {
+    ): InsertOrUpsertMethodBinder {
         return insertBinderProviders.first {
             it.matches(typeMirror)
         }.provide(typeMirror, params)
@@ -407,7 +405,7 @@
     fun findUpsertMethodBinder(
         typeMirror: XType,
         params: List<ShortcutQueryParameter>
-    ): UpsertMethodBinder {
+    ): InsertOrUpsertMethodBinder {
         return upsertBinderProviders.first {
             it.matches(typeMirror)
         }.provide(typeMirror, params)
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableInsertMethodBinder.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableInsertMethodBinder.kt
index c053354..e73004d 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableInsertMethodBinder.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableInsertMethodBinder.kt
@@ -36,7 +36,7 @@
     val typeArg: XType,
     val addStmntBlock: CodeBlock.Builder.(callableImpl: TypeSpec, dbField: FieldSpec) -> Unit,
     adapter: InsertMethodAdapter?
-) : InsertMethodBinder(adapter) {
+) : InsertOrUpsertMethodBinder(adapter) {
 
     companion object {
         fun createInsertBinder(
@@ -48,15 +48,15 @@
 
     override fun convertAndReturn(
         parameters: List<ShortcutQueryParameter>,
-        insertionAdapters: Map<String, Pair<FieldSpec, TypeSpec>>,
+        adapters: Map<String, Pair<FieldSpec, Any>>,
         dbField: FieldSpec,
         scope: CodeGenScope
     ) {
         val adapterScope = scope.fork()
         val callableImpl = CallableTypeSpecBuilder(typeArg.typeName) {
-            adapter?.createInsertionMethodBody(
+            adapter?.createMethodBody(
                 parameters = parameters,
-                insertionAdapters = insertionAdapters,
+                adapters = adapters,
                 dbField = dbField,
                 scope = adapterScope
             )
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableUpsertMethodBinder.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableUpsertMethodBinder.kt
index 37aa163..7040cc4 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableUpsertMethodBinder.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableUpsertMethodBinder.kt
@@ -36,7 +36,7 @@
     val typeArg: XType,
     val addStmntBlock: CodeBlock.Builder.(callableImpl: TypeSpec, dbField: FieldSpec) -> Unit,
     adapter: UpsertMethodAdapter?
-) : UpsertMethodBinder(adapter) {
+) : InsertOrUpsertMethodBinder(adapter) {
 
     companion object {
         fun createUpsertBinder(
@@ -48,7 +48,7 @@
 
     override fun convertAndReturn(
         parameters: List<ShortcutQueryParameter>,
-        upsertionAdapters: Map<String, Pair<FieldSpec, TypeSpec>>,
+        adapters: Map<String, Pair<FieldSpec, Any>>,
         dbField: FieldSpec,
         scope: CodeGenScope
     ) {
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InsertMethodBinder.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InsertMethodBinder.kt
deleted file mode 100644
index 2a6c3bc..0000000
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InsertMethodBinder.kt
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.room.solver.shortcut.binder
-
-import androidx.room.solver.CodeGenScope
-import androidx.room.solver.shortcut.result.InsertMethodAdapter
-import androidx.room.vo.ShortcutQueryParameter
-import com.squareup.javapoet.FieldSpec
-import com.squareup.javapoet.TypeSpec
-
-/**
- * Connects the insert method, the database and the [InsertMethodAdapter].
- *
- * The default implementation is [InstantInsertMethodBinder] that executes the insert synchronously.
- * If the insert is deferred, rather than synchronously, alternatives implementations can be
- * implemented using this interface (e.g. RxJava, coroutines etc).
- */
-abstract class InsertMethodBinder(val adapter: InsertMethodAdapter?) {
-
-    /**
-     * Received the insert method parameters, the insertion adapters and generations the code that
-     * runs the insert and returns the result.
-     *
-     * For example, for the DAO method:
-     * ```
-     * @Insert
-     * fun addPublishers(vararg publishers: Publisher): List<Long>
-     * ```
-     * The following code will be generated:
-     *
-     * ```
-     * __db.beginTransaction();
-     * try {
-     *  List<Long> _result = __insertionAdapterOfPublisher.insertAndReturnIdsList(publishers);
-     *  __db.setTransactionSuccessful();
-     *  return _result;
-     * } finally {
-     *  __db.endTransaction();
-     * }
-     * ```
-     */
-    abstract fun convertAndReturn(
-        parameters: List<ShortcutQueryParameter>,
-        insertionAdapters: Map<String, Pair<FieldSpec, TypeSpec>>,
-        dbField: FieldSpec,
-        scope: CodeGenScope
-    )
-}
\ No newline at end of file
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/UpsertMethodBinder.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InsertOrUpsertMethodBinder.kt
similarity index 73%
rename from room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/UpsertMethodBinder.kt
rename to room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InsertOrUpsertMethodBinder.kt
index 9ec0168..f909b2a 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/UpsertMethodBinder.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InsertOrUpsertMethodBinder.kt
@@ -16,19 +16,21 @@
 
 package androidx.room.solver.shortcut.binder
 
+import androidx.room.solver.shortcut.result.InsertOrUpsertMethodAdapter
 import androidx.room.solver.CodeGenScope
+import androidx.room.solver.shortcut.result.InsertMethodAdapter
 import androidx.room.solver.shortcut.result.UpsertMethodAdapter
 import androidx.room.vo.ShortcutQueryParameter
 import com.squareup.javapoet.FieldSpec
-import com.squareup.javapoet.TypeSpec
+
 /**
- * Connects the upsert method, the database and the [UpsertMethodAdapter].
+ * Connects the insert and upsert method, the database and the [InsertMethodAdapter] or [UpsertMethodAdapter].
  */
-abstract class UpsertMethodBinder(val adapter: UpsertMethodAdapter?) {
+abstract class InsertOrUpsertMethodBinder(val adapter: InsertOrUpsertMethodAdapter?) {
 
     /**
-     * Received the upsert method parameters, the upsertion adapters and generations the code that
-     * runs the upsert and returns the result.
+     * Received an insert or upsert method parameters, their adapters and generations the code that
+     * runs the insert or upsert and returns the result.
      *
      * For example, for the DAO method:
      * ```
@@ -50,7 +52,7 @@
      */
     abstract fun convertAndReturn(
         parameters: List<ShortcutQueryParameter>,
-        upsertionAdapters: Map<String, Pair<FieldSpec, TypeSpec>>,
+        adapters: Map<String, Pair<FieldSpec, Any>>,
         dbField: FieldSpec,
         scope: CodeGenScope
     )
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantInsertMethodBinder.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantInsertMethodBinder.kt
index b808080..ac4c6cd 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantInsertMethodBinder.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantInsertMethodBinder.kt
@@ -22,25 +22,25 @@
 import androidx.room.vo.ShortcutQueryParameter
 import androidx.room.writer.DaoWriter
 import com.squareup.javapoet.FieldSpec
-import com.squareup.javapoet.TypeSpec
 
 /**
  * Binder that knows how to write instant (blocking) insert methods.
  */
-class InstantInsertMethodBinder(adapter: InsertMethodAdapter?) : InsertMethodBinder(adapter) {
+class InstantInsertMethodBinder(adapter: InsertMethodAdapter?) :
+    InsertOrUpsertMethodBinder(adapter) {
 
     override fun convertAndReturn(
         parameters: List<ShortcutQueryParameter>,
-        insertionAdapters: Map<String, Pair<FieldSpec, TypeSpec>>,
+        adapters: Map<String, Pair<FieldSpec, Any>>,
         dbField: FieldSpec,
         scope: CodeGenScope
     ) {
         scope.builder().apply {
             addStatement("$N.assertNotSuspendingTransaction()", DaoWriter.dbField)
         }
-        adapter?.createInsertionMethodBody(
+        adapter?.createMethodBody(
             parameters = parameters,
-            insertionAdapters = insertionAdapters,
+            adapters = adapters,
             dbField = dbField,
             scope = scope
         )
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantUpsertMethodBinder.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantUpsertMethodBinder.kt
index 06860f7..2043db9 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantUpsertMethodBinder.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantUpsertMethodBinder.kt
@@ -22,16 +22,16 @@
 import androidx.room.vo.ShortcutQueryParameter
 import androidx.room.writer.DaoWriter
 import com.squareup.javapoet.FieldSpec
-import com.squareup.javapoet.TypeSpec
 
 /**
  * Binder that knows how to write instant (blocking) upsert methods.
  */
-class InstantUpsertMethodBinder(adapter: UpsertMethodAdapter?) : UpsertMethodBinder(adapter) {
+class InstantUpsertMethodBinder(adapter: UpsertMethodAdapter?) :
+    InsertOrUpsertMethodBinder(adapter) {
 
     override fun convertAndReturn(
         parameters: List<ShortcutQueryParameter>,
-        upsertionAdapters: Map<String, Pair<FieldSpec, TypeSpec>>,
+        adapters: Map<String, Pair<FieldSpec, Any>>,
         dbField: FieldSpec,
         scope: CodeGenScope
     ) {
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/GuavaListenableFutureInsertMethodBinderProvider.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/GuavaListenableFutureInsertMethodBinderProvider.kt
index 1b3e17a..d7b7864 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/GuavaListenableFutureInsertMethodBinderProvider.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/GuavaListenableFutureInsertMethodBinderProvider.kt
@@ -25,7 +25,7 @@
 import androidx.room.processor.Context
 import androidx.room.processor.ProcessorErrors
 import androidx.room.solver.shortcut.binder.CallableInsertMethodBinder.Companion.createInsertBinder
-import androidx.room.solver.shortcut.binder.InsertMethodBinder
+import androidx.room.solver.shortcut.binder.InsertOrUpsertMethodBinder
 import androidx.room.vo.ShortcutQueryParameter
 
 /**
@@ -33,7 +33,7 @@
  */
 class GuavaListenableFutureInsertMethodBinderProvider(
     private val context: Context
-) : InsertMethodBinderProvider {
+) : InsertOrUpsertMethodBinderProvider {
 
     private val hasGuavaRoom by lazy {
         context.processingEnv.findTypeElement(RoomGuavaTypeNames.GUAVA_ROOM) != null
@@ -46,7 +46,7 @@
     override fun provide(
         declared: XType,
         params: List<ShortcutQueryParameter>
-    ): InsertMethodBinder {
+    ): InsertOrUpsertMethodBinder {
         if (!hasGuavaRoom) {
             context.logger.e(ProcessorErrors.MISSING_ROOM_GUAVA_ARTIFACT)
         }
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/GuavaListenableFutureUpsertMethodBinderProvider.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/GuavaListenableFutureUpsertMethodBinderProvider.kt
index 8f8cee0..ab55632 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/GuavaListenableFutureUpsertMethodBinderProvider.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/GuavaListenableFutureUpsertMethodBinderProvider.kt
@@ -25,7 +25,7 @@
 import androidx.room.processor.Context
 import androidx.room.processor.ProcessorErrors
 import androidx.room.solver.shortcut.binder.CallableUpsertMethodBinder.Companion.createUpsertBinder
-import androidx.room.solver.shortcut.binder.UpsertMethodBinder
+import androidx.room.solver.shortcut.binder.InsertOrUpsertMethodBinder
 import androidx.room.vo.ShortcutQueryParameter
 
 /**
@@ -33,7 +33,7 @@
  */
 class GuavaListenableFutureUpsertMethodBinderProvider(
     private val context: Context
-) : UpsertMethodBinderProvider {
+) : InsertOrUpsertMethodBinderProvider {
 
     private val hasGuavaRoom by lazy {
         context.processingEnv.findTypeElement(RoomGuavaTypeNames.GUAVA_ROOM) != null
@@ -46,7 +46,7 @@
     override fun provide(
         declared: XType,
         params: List<ShortcutQueryParameter>
-    ): UpsertMethodBinder {
+    ): InsertOrUpsertMethodBinder {
         if (!hasGuavaRoom) {
             context.logger.e(ProcessorErrors.MISSING_ROOM_GUAVA_ARTIFACT)
         }
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/InsertMethodBinderProvider.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/InsertOrUpsertMethodBinderProvider.kt
similarity index 70%
rename from room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/InsertMethodBinderProvider.kt
rename to room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/InsertOrUpsertMethodBinderProvider.kt
index 2ef53c7..e9ab381 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/InsertMethodBinderProvider.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/InsertOrUpsertMethodBinderProvider.kt
@@ -17,21 +17,21 @@
 package androidx.room.solver.shortcut.binderprovider
 
 import androidx.room.compiler.processing.XType
-import androidx.room.solver.shortcut.binder.InsertMethodBinder
+import androidx.room.solver.shortcut.binder.InsertOrUpsertMethodBinder
 import androidx.room.vo.ShortcutQueryParameter
 
 /**
- * Provider for insert method binders.
+ * Provider for insert and upsert method binders.
  */
-interface InsertMethodBinderProvider {
+interface InsertOrUpsertMethodBinderProvider {
 
     /**
-     * Check whether the [XType] can be handled by the [InsertMethodBinder]
+     * Check whether the [XType] can be handled by the [InsertOrUpsertMethodBinder]
      */
     fun matches(declared: XType): Boolean
 
     /**
-     * Provider of [InsertMethodBinder], based on the [XType] and the list of parameters
+     * Provider of [InsertOrUpsertMethodBinder], based on the [XType] and the list of parameters
      */
-    fun provide(declared: XType, params: List<ShortcutQueryParameter>): InsertMethodBinder
+    fun provide(declared: XType, params: List<ShortcutQueryParameter>): InsertOrUpsertMethodBinder
 }
\ No newline at end of file
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/InstantInsertMethodBinderProvider.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/InstantInsertMethodBinderProvider.kt
index 90261c3..37e14d9 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/InstantInsertMethodBinderProvider.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/InstantInsertMethodBinderProvider.kt
@@ -18,21 +18,22 @@
 
 import androidx.room.compiler.processing.XType
 import androidx.room.processor.Context
-import androidx.room.solver.shortcut.binder.InsertMethodBinder
+import androidx.room.solver.shortcut.binder.InsertOrUpsertMethodBinder
 import androidx.room.solver.shortcut.binder.InstantInsertMethodBinder
 import androidx.room.vo.ShortcutQueryParameter
 
 /**
  * Provider for instant (blocking) insert method binder.
  */
-class InstantInsertMethodBinderProvider(private val context: Context) : InsertMethodBinderProvider {
+class InstantInsertMethodBinderProvider(private val context: Context) :
+    InsertOrUpsertMethodBinderProvider {
 
     override fun matches(declared: XType) = true
 
     override fun provide(
         declared: XType,
         params: List<ShortcutQueryParameter>
-    ): InsertMethodBinder {
+    ): InsertOrUpsertMethodBinder {
         return InstantInsertMethodBinder(
             context.typeAdapterStore.findInsertAdapter(declared, params)
         )
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/InstantUpsertMethodBinderProvider.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/InstantUpsertMethodBinderProvider.kt
index 4a3ef91..6f4e8c9 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/InstantUpsertMethodBinderProvider.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/InstantUpsertMethodBinderProvider.kt
@@ -18,21 +18,22 @@
 
 import androidx.room.compiler.processing.XType
 import androidx.room.processor.Context
-import androidx.room.solver.shortcut.binder.UpsertMethodBinder
+import androidx.room.solver.shortcut.binder.InsertOrUpsertMethodBinder
 import androidx.room.solver.shortcut.binder.InstantUpsertMethodBinder
 import androidx.room.vo.ShortcutQueryParameter
 
 /**
  * Provider for instant (blocking) upsert method binder.
  */
-class InstantUpsertMethodBinderProvider(private val context: Context) : UpsertMethodBinderProvider {
+class InstantUpsertMethodBinderProvider(private val context: Context) :
+    InsertOrUpsertMethodBinderProvider {
 
     override fun matches(declared: XType) = true
 
     override fun provide(
         declared: XType,
         params: List<ShortcutQueryParameter>
-    ): UpsertMethodBinder {
+    ): InsertOrUpsertMethodBinder {
         return InstantUpsertMethodBinder(
             context.typeAdapterStore.findUpsertAdapter(declared, params)
         )
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/RxCallableInsertMethodBinderProvider.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/RxCallableInsertMethodBinderProvider.kt
index 7f8dfa2..2ccc42a 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/RxCallableInsertMethodBinderProvider.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/RxCallableInsertMethodBinderProvider.kt
@@ -23,7 +23,7 @@
 import androidx.room.processor.Context
 import androidx.room.solver.RxType
 import androidx.room.solver.shortcut.binder.CallableInsertMethodBinder.Companion.createInsertBinder
-import androidx.room.solver.shortcut.binder.InsertMethodBinder
+import androidx.room.solver.shortcut.binder.InsertOrUpsertMethodBinder
 import androidx.room.vo.ShortcutQueryParameter
 
 /**
@@ -32,7 +32,7 @@
 open class RxCallableInsertMethodBinderProvider internal constructor(
     val context: Context,
     private val rxType: RxType
-) : InsertMethodBinderProvider {
+) : InsertOrUpsertMethodBinderProvider {
 
     /**
      * [Single] and [Maybe] are generics but [Completable] is not so each implementation of this
@@ -50,7 +50,7 @@
     override fun provide(
         declared: XType,
         params: List<ShortcutQueryParameter>
-    ): InsertMethodBinder {
+    ): InsertOrUpsertMethodBinder {
         val typeArg = extractTypeArg(declared)
         val adapter = context.typeAdapterStore.findInsertAdapter(typeArg, params)
         return createInsertBinder(typeArg, adapter) { callableImpl, _ ->
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/RxCallableUpsertMethodBinderProvider.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/RxCallableUpsertMethodBinderProvider.kt
index df1911e..21ce3fb 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/RxCallableUpsertMethodBinderProvider.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/RxCallableUpsertMethodBinderProvider.kt
@@ -23,7 +23,7 @@
 import androidx.room.processor.Context
 import androidx.room.solver.RxType
 import androidx.room.solver.shortcut.binder.CallableUpsertMethodBinder
-import androidx.room.solver.shortcut.binder.UpsertMethodBinder
+import androidx.room.solver.shortcut.binder.InsertOrUpsertMethodBinder
 import androidx.room.vo.ShortcutQueryParameter
 
 /**
@@ -32,7 +32,7 @@
 open class RxCallableUpsertMethodBinderProvider internal constructor(
     val context: Context,
     private val rxType: RxType
-) : UpsertMethodBinderProvider {
+) : InsertOrUpsertMethodBinderProvider {
 
     /**
      * [Single] and [Maybe] are generics but [Completable] is not so each implementation of this
@@ -50,7 +50,7 @@
     override fun provide(
         declared: XType,
         params: List<ShortcutQueryParameter>
-    ): UpsertMethodBinder {
+    ): InsertOrUpsertMethodBinder {
         val typeArg = extractTypeArg(declared)
         val adapter = context.typeAdapterStore.findUpsertAdapter(typeArg, params)
         return CallableUpsertMethodBinder.createUpsertBinder(typeArg, adapter) { callableImpl, _ ->
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/UpsertMethodBinderProvider.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/UpsertMethodBinderProvider.kt
deleted file mode 100644
index 0858f92..0000000
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/UpsertMethodBinderProvider.kt
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.room.solver.shortcut.binderprovider
-
-import androidx.room.compiler.processing.XType
-import androidx.room.solver.shortcut.binder.UpsertMethodBinder
-import androidx.room.vo.ShortcutQueryParameter
-
-/**
- * Provider for upsert method binders.
- */
-interface UpsertMethodBinderProvider {
-
-    /**
-     * Check whether the [XType] can be handled by the [UpsertMethodBinder]
-     */
-    fun matches(declared: XType): Boolean
-
-    /**
-     * Provider of [UpsertMethodBinder], based on the [XType] and the list of parameters
-     */
-    fun provide(declared: XType, params: List<ShortcutQueryParameter>): UpsertMethodBinder
-}
\ No newline at end of file
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/InsertMethodAdapter.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/InsertMethodAdapter.kt
index ad230db..c910e02 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/InsertMethodAdapter.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/InsertMethodAdapter.kt
@@ -33,12 +33,12 @@
 import com.squareup.javapoet.FieldSpec
 import com.squareup.javapoet.ParameterizedTypeName
 import com.squareup.javapoet.TypeName
-import com.squareup.javapoet.TypeSpec
 
 /**
  * Class that knows how to generate an insert method body.
  */
-class InsertMethodAdapter private constructor(private val insertionType: InsertionType) {
+class InsertMethodAdapter private constructor(private val insertionType: InsertionType) :
+    InsertOrUpsertMethodAdapter() {
     companion object {
         fun create(
             returnType: XType,
@@ -117,9 +117,9 @@
         }
     }
 
-    fun createInsertionMethodBody(
+    override fun createMethodBody(
         parameters: List<ShortcutQueryParameter>,
-        insertionAdapters: Map<String, Pair<FieldSpec, TypeSpec>>,
+        adapters: Map<String, Pair<FieldSpec, Any>>,
         dbField: FieldSpec,
         scope: CodeGenScope
     ) {
@@ -138,7 +138,7 @@
 
             beginControlFlow("try").apply {
                 parameters.forEach { param ->
-                    val insertionAdapter = insertionAdapters[param.name]?.first
+                    val insertionAdapter = adapters[param.name]?.first
                     if (needsResultVar) {
                         // if it has more than 1 parameter, we would've already printed the error
                         // so we don't care about re-declaring the variable here
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/InsertOrUpsertMethodAdapter.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/InsertOrUpsertMethodAdapter.kt
new file mode 100644
index 0000000..2eeba8b
--- /dev/null
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/InsertOrUpsertMethodAdapter.kt
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.room.solver.shortcut.result
+
+import androidx.room.solver.CodeGenScope
+import androidx.room.vo.ShortcutQueryParameter
+import com.squareup.javapoet.FieldSpec
+
+/**
+ * Abstract class for insert and update method adapters.
+ */
+abstract class InsertOrUpsertMethodAdapter {
+    abstract fun createMethodBody(
+        parameters: List<ShortcutQueryParameter>,
+        adapters: Map<String, Pair<FieldSpec, Any>>,
+        dbField: FieldSpec,
+        scope: CodeGenScope
+    )
+}
\ No newline at end of file
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/UpsertMethodAdapter.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/UpsertMethodAdapter.kt
index a27512f..e45ccea 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/UpsertMethodAdapter.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/UpsertMethodAdapter.kt
@@ -16,4 +16,16 @@
 
 package androidx.room.solver.shortcut.result
 
-class UpsertMethodAdapter
\ No newline at end of file
+import androidx.room.solver.CodeGenScope
+import androidx.room.vo.ShortcutQueryParameter
+import com.squareup.javapoet.FieldSpec
+
+class UpsertMethodAdapter : InsertOrUpsertMethodAdapter() {
+    override fun createMethodBody(
+        parameters: List<ShortcutQueryParameter>,
+        adapters: Map<String, Pair<FieldSpec, Any>>,
+        dbField: FieldSpec,
+        scope: CodeGenScope
+    ) {
+    }
+}
\ No newline at end of file
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/vo/Dao.kt b/room/room-compiler/src/main/kotlin/androidx/room/vo/Dao.kt
index aab6986..f328947 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/vo/Dao.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/vo/Dao.kt
@@ -48,7 +48,7 @@
 
     val typeName: ClassName by lazy { element.className }
 
-    val shortcutMethods: List<ShortcutMethod> by lazy {
+    val deleteOrUpdateShortcutMethods: List<DeleteOrUpdateShortcutMethod> by lazy {
         deletionMethods + updateMethods
     }
 
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/vo/ShortcutMethod.kt b/room/room-compiler/src/main/kotlin/androidx/room/vo/DeleteOrUpdateShortcutMethod.kt
similarity index 95%
rename from room/room-compiler/src/main/kotlin/androidx/room/vo/ShortcutMethod.kt
rename to room/room-compiler/src/main/kotlin/androidx/room/vo/DeleteOrUpdateShortcutMethod.kt
index dc4c618..0d04901 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/vo/ShortcutMethod.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/vo/DeleteOrUpdateShortcutMethod.kt
@@ -22,7 +22,7 @@
 /**
  * Base class for shortcut methods in @DAO.
  */
-abstract class ShortcutMethod(
+abstract class DeleteOrUpdateShortcutMethod(
     val element: XMethodElement,
     val entities: Map<String, ShortcutEntity>,
     val parameters: List<ShortcutQueryParameter>,
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/vo/DeletionMethod.kt b/room/room-compiler/src/main/kotlin/androidx/room/vo/DeletionMethod.kt
index 0d4dbe9..1973273 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/vo/DeletionMethod.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/vo/DeletionMethod.kt
@@ -23,4 +23,4 @@
     entities: Map<String, ShortcutEntity>,
     parameters: List<ShortcutQueryParameter>,
     methodBinder: DeleteOrUpdateMethodBinder?
-) : ShortcutMethod(element, entities, parameters, methodBinder)
+) : DeleteOrUpdateShortcutMethod(element, entities, parameters, methodBinder)
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/vo/ShortcutMethod.kt b/room/room-compiler/src/main/kotlin/androidx/room/vo/InsertOrUpsertShortcutMethod.kt
similarity index 74%
copy from room/room-compiler/src/main/kotlin/androidx/room/vo/ShortcutMethod.kt
copy to room/room-compiler/src/main/kotlin/androidx/room/vo/InsertOrUpsertShortcutMethod.kt
index dc4c618..b4ae888 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/vo/ShortcutMethod.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/vo/InsertOrUpsertShortcutMethod.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright 2017 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.
@@ -15,16 +15,17 @@
  */
 
 package androidx.room.vo
-
 import androidx.room.compiler.processing.XMethodElement
-import androidx.room.solver.shortcut.binder.DeleteOrUpdateMethodBinder
+import androidx.room.compiler.processing.XType
+import androidx.room.solver.shortcut.binder.InsertOrUpsertMethodBinder
 
 /**
  * Base class for shortcut methods in @DAO.
  */
-abstract class ShortcutMethod(
+abstract class InsertOrUpsertShortcutMethod(
     val element: XMethodElement,
     val entities: Map<String, ShortcutEntity>,
+    val returnType: XType,
     val parameters: List<ShortcutQueryParameter>,
-    val methodBinder: DeleteOrUpdateMethodBinder?
-)
+    val methodBinder: InsertOrUpsertMethodBinder?
+)
\ No newline at end of file
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/vo/InsertionMethod.kt b/room/room-compiler/src/main/kotlin/androidx/room/vo/InsertionMethod.kt
index 2260329..9e5cbca3 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/vo/InsertionMethod.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/vo/InsertionMethod.kt
@@ -19,13 +19,13 @@
 import androidx.room.OnConflictStrategy
 import androidx.room.compiler.processing.XMethodElement
 import androidx.room.compiler.processing.XType
-import androidx.room.solver.shortcut.binder.InsertMethodBinder
+import androidx.room.solver.shortcut.binder.InsertOrUpsertMethodBinder
 
-data class InsertionMethod(
-    val element: XMethodElement,
+class InsertionMethod(
+    element: XMethodElement,
     @OnConflictStrategy val onConflict: Int,
-    val entities: Map<String, ShortcutEntity>,
-    val returnType: XType,
-    val parameters: List<ShortcutQueryParameter>,
-    val methodBinder: InsertMethodBinder
-)
\ No newline at end of file
+    entities: Map<String, ShortcutEntity>,
+    returnType: XType,
+    parameters: List<ShortcutQueryParameter>,
+    methodBinder: InsertOrUpsertMethodBinder
+) : InsertOrUpsertShortcutMethod(element, entities, returnType, parameters, methodBinder)
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/vo/ShortcutQueryParameter.kt b/room/room-compiler/src/main/kotlin/androidx/room/vo/ShortcutQueryParameter.kt
index daac19d..1df9af3 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/vo/ShortcutQueryParameter.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/vo/ShortcutQueryParameter.kt
@@ -20,7 +20,7 @@
 import androidx.room.compiler.processing.XVariableElement
 
 /**
- * Parameters used in DAO methods that are annotated with Insert, Delete, Update.
+ * Parameters used in DAO methods that are annotated with Insert, Delete, Update. and Upsert
  */
 data class ShortcutQueryParameter(
     val element: XVariableElement,
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/vo/UpdateMethod.kt b/room/room-compiler/src/main/kotlin/androidx/room/vo/UpdateMethod.kt
index 28be8f7..bbcc6fa 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/vo/UpdateMethod.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/vo/UpdateMethod.kt
@@ -26,4 +26,4 @@
     parameters: List<ShortcutQueryParameter>,
     methodBinder: DeleteOrUpdateMethodBinder?,
     @OnConflictStrategy val onConflictStrategy: Int
-) : ShortcutMethod(element, entities, parameters, methodBinder)
+) : DeleteOrUpdateShortcutMethod(element, entities, parameters, methodBinder)
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/vo/UpsertionMethod.kt b/room/room-compiler/src/main/kotlin/androidx/room/vo/UpsertionMethod.kt
index fd9d44f..76cc0fd 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/vo/UpsertionMethod.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/vo/UpsertionMethod.kt
@@ -18,12 +18,12 @@
 
 import androidx.room.compiler.processing.XMethodElement
 import androidx.room.compiler.processing.XType
-import androidx.room.solver.shortcut.binder.UpsertMethodBinder
+import androidx.room.solver.shortcut.binder.InsertOrUpsertMethodBinder
 
-data class UpsertionMethod(
-    val element: XMethodElement,
-    val entities: Map<String, ShortcutEntity>,
-    val returnType: XType,
-    val parameters: List<ShortcutQueryParameter>,
-    val methodBinder: UpsertMethodBinder
-    )
\ No newline at end of file
+class UpsertionMethod(
+    element: XMethodElement,
+    entities: Map<String, ShortcutEntity>,
+    returnType: XType,
+    parameters: List<ShortcutQueryParameter>,
+    methodBinder: InsertOrUpsertMethodBinder
+    ) : InsertOrUpsertShortcutMethod(element, entities, returnType, parameters, methodBinder)
\ No newline at end of file
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/writer/DaoWriter.kt b/room/room-compiler/src/main/kotlin/androidx/room/writer/DaoWriter.kt
index 14073bf..3b97e6a 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/writer/DaoWriter.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/writer/DaoWriter.kt
@@ -45,7 +45,7 @@
 import androidx.room.vo.RawQueryMethod
 import androidx.room.vo.ReadQueryMethod
 import androidx.room.vo.ShortcutEntity
-import androidx.room.vo.ShortcutMethod
+import androidx.room.vo.DeleteOrUpdateShortcutMethod
 import androidx.room.vo.TransactionMethod
 import androidx.room.vo.UpdateMethod
 import androidx.room.vo.WriteQueryMethod
@@ -117,9 +117,14 @@
         val preparedQueries = groupedPreparedQueries[false] ?: emptyList()
         // queries that must be rebuilt every single time
         val oneOffPreparedQueries = groupedPreparedQueries[true] ?: emptyList()
-        val shortcutMethods = createInsertionMethods() +
-            createDeletionMethods() + createUpdateMethods() + createTransactionMethods() +
-            createPreparedQueries(preparedQueries) + createUpsertMethods()
+        val shortcutMethods = buildList {
+            addAll(createInsertionMethods())
+            addAll(createDeletionMethods())
+            addAll(createUpdateMethods())
+            addAll(createTransactionMethods())
+            addAll(createPreparedQueries(preparedQueries))
+            addAll(createUpsertMethods())
+        }
 
         builder.apply {
             addOriginatingElement(dbElement)
@@ -389,9 +394,10 @@
 
         val scope = CodeGenScope(this)
 
-        method.methodBinder.convertAndReturn(
+        // TODO b/240491383 Remove nullability from methodBinders for convertAndReturn
+        method.methodBinder?.convertAndReturn(
             parameters = method.parameters,
-            insertionAdapters = insertionAdapters,
+            adapters = insertionAdapters,
             dbField = dbField,
             scope = scope
         )
@@ -419,7 +425,7 @@
         }
     }
 
-    private fun <T : ShortcutMethod> createShortcutMethods(
+    private fun <T : DeleteOrUpdateShortcutMethod> createShortcutMethods(
         methods: List<T>,
         methodPrefix: String,
         implCallback: (T, ShortcutEntity) -> TypeSpec
@@ -450,7 +456,7 @@
     }
 
     private fun createDeleteOrUpdateMethodBody(
-        method: ShortcutMethod,
+        method: DeleteOrUpdateShortcutMethod,
         adapters: Map<String, Pair<FieldSpec, TypeSpec>>
     ): CodeBlock {
         if (adapters.isEmpty() || method.methodBinder == null) {
@@ -474,7 +480,13 @@
     private fun createUpsertMethods(): List<PreparedStmtQuery> {
         return dao.upsertionMethods
             .map { upsertionMethod ->
-                val fields = emptyMap<String, Pair<FieldSpec, TypeSpec>>()
+                val entities = upsertionMethod.entities
+                val fields = entities.mapValues {
+                    val spec = getOrCreateField(UpsertionAdapterField(it.value))
+                    val impl = EntityUpsertionAdapterWriter.create(it.value)
+                        .createConcrete(it.value, this@DaoWriter, dbField.name)
+                    spec to impl
+                }
                 val methodImpl = overrideWithoutAnnotations(
                     upsertionMethod.element,
                     declaredDao
@@ -487,7 +499,7 @@
 
     private fun createUpsertionMethodBody(
         method: UpsertionMethod,
-        upsertionAdapters: Map<String, Pair<FieldSpec, TypeSpec>>
+        upsertionAdapters: Map<String, Pair<FieldSpec, CodeBlock>>
     ): CodeBlock {
         if (upsertionAdapters.isEmpty()) {
             return CodeBlock.builder().build()
@@ -495,9 +507,10 @@
 
         val scope = CodeGenScope(this)
 
-        method.methodBinder.convertAndReturn(
+        // TODO b/240491383 Remove nullability from methodBinders for convertAndReturn
+        method.methodBinder?.convertAndReturn(
             parameters = method.parameters,
-            upsertionAdapters = upsertionAdapters,
+            adapters = upsertionAdapters,
             dbField = dbField,
             scope = scope
         )
@@ -594,7 +607,7 @@
      * @param methodImpl The body of the query method implementation.
      */
     data class PreparedStmtQuery(
-        val fields: Map<String, Pair<FieldSpec, TypeSpec>>,
+        val fields: Map<String, Pair<FieldSpec, Any>>,
         val methodImpl: MethodSpec
     ) {
         companion object {
@@ -642,6 +655,23 @@
         }
     }
 
+    class UpsertionAdapterField(
+        val shortcutEntity: ShortcutEntity
+    ) : SharedFieldSpec(
+        baseName = "upsertionAdapterOf${shortcutEntityFieldNamePart(shortcutEntity)}",
+        type = ParameterizedTypeName.get(
+            RoomTypeNames.UPSERTION_ADAPTER, shortcutEntity.pojo.typeName
+        )
+    ) {
+        override fun getUniqueKey(): String {
+            return "${shortcutEntity.pojo.typeName}-${shortcutEntity.entityTypeName}"
+        }
+
+        override fun prepare(writer: ClassWriter, builder: FieldSpec.Builder) {
+            builder.addModifiers(PRIVATE, FINAL)
+        }
+    }
+
     class PreparedStatementField(val method: QueryMethod) : SharedFieldSpec(
         "preparedStmtOf${method.element.jvmName.capitalize(Locale.US)}",
         RoomTypeNames.SHARED_SQLITE_STMT
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/writer/EntityUpsertionAdapterWriter.kt b/room/room-compiler/src/main/kotlin/androidx/room/writer/EntityUpsertionAdapterWriter.kt
new file mode 100644
index 0000000..f5af1db
--- /dev/null
+++ b/room/room-compiler/src/main/kotlin/androidx/room/writer/EntityUpsertionAdapterWriter.kt
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.room.writer
+
+import androidx.room.ext.L
+import androidx.room.ext.RoomTypeNames
+import androidx.room.ext.T
+import androidx.room.vo.Pojo
+import androidx.room.vo.ShortcutEntity
+import com.squareup.javapoet.CodeBlock
+import com.squareup.javapoet.ParameterizedTypeName
+
+// TODO b/240736981 need to implement the writer's test
+class EntityUpsertionAdapterWriter private constructor(
+    val tableName: String,
+    val pojo: Pojo
+) {
+    companion object {
+        fun create(entity: ShortcutEntity): EntityUpsertionAdapterWriter {
+            return EntityUpsertionAdapterWriter(
+                tableName = entity.tableName,
+                pojo = entity.pojo
+            )
+        }
+    }
+
+    fun createConcrete(
+        entity: ShortcutEntity,
+        classWriter: ClassWriter,
+        dbParam: String
+    ): CodeBlock {
+        @Suppress("RemoveSingleExpressionStringTemplate")
+        val upsertionAdapter = ParameterizedTypeName.get(
+            RoomTypeNames.UPSERTION_ADAPTER, pojo.typeName
+        )
+        val insertionHelper = EntityInsertionAdapterWriter.create(entity, "")
+            .createAnonymous(classWriter, dbParam)
+        val updateHelper = EntityUpdateAdapterWriter.create(entity, "")
+            .createAnonymous(classWriter, dbParam)
+        return CodeBlock.builder().add("new $T($L, $L)",
+            upsertionAdapter, insertionHelper, updateHelper
+        ).build()
+    }
+}
\ No newline at end of file
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/processor/ShortcutMethodProcessorTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/processor/DeleteOrUpdateShortcutMethodProcessorTest.kt
similarity index 99%
rename from room/room-compiler/src/test/kotlin/androidx/room/processor/ShortcutMethodProcessorTest.kt
rename to room/room-compiler/src/test/kotlin/androidx/room/processor/DeleteOrUpdateShortcutMethodProcessorTest.kt
index bbf5cbe..db69a38 100644
--- a/room/room-compiler/src/test/kotlin/androidx/room/processor/ShortcutMethodProcessorTest.kt
+++ b/room/room-compiler/src/test/kotlin/androidx/room/processor/DeleteOrUpdateShortcutMethodProcessorTest.kt
@@ -32,7 +32,7 @@
 import androidx.room.ext.RxJava2TypeNames
 import androidx.room.ext.RxJava3TypeNames
 import androidx.room.testing.context
-import androidx.room.vo.ShortcutMethod
+import androidx.room.vo.DeleteOrUpdateShortcutMethod
 import com.squareup.javapoet.ArrayTypeName
 import com.squareup.javapoet.ClassName
 import com.squareup.javapoet.ParameterizedTypeName
@@ -45,7 +45,7 @@
 /**
  * Base test class for shortcut methods.
  */
-abstract class ShortcutMethodProcessorTest<out T : ShortcutMethod>(
+abstract class DeleteOrUpdateShortcutMethodProcessorTest<out T : DeleteOrUpdateShortcutMethod>(
     val annotation: KClass<out Annotation>
 ) {
     companion object {
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/processor/DeletionMethodProcessorTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/processor/DeletionMethodProcessorTest.kt
index d1c4ae8..f7184dd 100644
--- a/room/room-compiler/src/test/kotlin/androidx/room/processor/DeletionMethodProcessorTest.kt
+++ b/room/room-compiler/src/test/kotlin/androidx/room/processor/DeletionMethodProcessorTest.kt
@@ -26,7 +26,8 @@
 
 @Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN")
 @RunWith(JUnit4::class)
-class DeletionMethodProcessorTest : ShortcutMethodProcessorTest<DeletionMethod>(Delete::class) {
+class DeletionMethodProcessorTest :
+    DeleteOrUpdateShortcutMethodProcessorTest<DeletionMethod>(Delete::class) {
     override fun invalidReturnTypeError(): String = CANNOT_FIND_DELETE_RESULT_ADAPTER
 
     override fun noParamsError(): String = DELETION_MISSING_PARAMS
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/processor/InsertOrUpsertShortcutMethodProcessorTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/processor/InsertOrUpsertShortcutMethodProcessorTest.kt
new file mode 100644
index 0000000..93b83a8
--- /dev/null
+++ b/room/room-compiler/src/test/kotlin/androidx/room/processor/InsertOrUpsertShortcutMethodProcessorTest.kt
@@ -0,0 +1,802 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.room.processor
+
+import COMMON
+import androidx.room.Dao
+import androidx.room.compiler.processing.XMethodElement
+import androidx.room.compiler.processing.XType
+import androidx.room.compiler.processing.XTypeElement
+import androidx.room.compiler.processing.util.Source
+import androidx.room.compiler.processing.util.XTestInvocation
+import androidx.room.compiler.processing.util.runProcessorTest
+import androidx.room.ext.CommonTypeNames
+import androidx.room.testing.context
+import androidx.room.vo.InsertOrUpsertShortcutMethod
+import com.squareup.javapoet.ClassName
+import com.squareup.javapoet.TypeName
+import kotlin.reflect.KClass
+import com.google.common.truth.Truth.assertThat
+import com.squareup.javapoet.ArrayTypeName
+import com.squareup.javapoet.ParameterizedTypeName
+import org.junit.Test
+
+/**
+ * Base test class for insert and upsert methods.
+ */
+abstract class InsertOrUpsertShortcutMethodProcessorTest <out T : InsertOrUpsertShortcutMethod>(
+    val annotation: KClass<out Annotation>
+) {
+    companion object {
+        const val DAO_PREFIX = """
+                package foo.bar;
+                import androidx.room.*;
+                import java.util.*;
+                @Dao
+                abstract class MyClass {
+                """
+        const val DAO_PREFIX_KT = """
+                package foo.bar
+                import androidx.room.*
+                import java.util.*
+                import io.reactivex.*
+                io.reactivex.rxjava3.core.*
+                androidx.lifecycle.*
+                com.google.common.util.concurrent.*
+                org.reactivestreams.*
+                kotlinx.coroutines.flow.*
+
+                @Dao
+                abstract class MyClass {
+                """
+        const val DAO_SUFFIX = "}"
+        val USER_TYPE_NAME: TypeName = COMMON.USER_TYPE_NAME
+        val USERNAME_TYPE_NAME: TypeName = ClassName.get("foo.bar", "Username")
+        val BOOK_TYPE_NAME: TypeName = ClassName.get("foo.bar", "Book")
+    }
+
+    @Test
+    fun readNoParams() {
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}
+                abstract public void foo();
+                """
+        ) { insertionUpsertion, invocation ->
+
+            assertThat(insertionUpsertion.element.jvmName).isEqualTo("foo")
+            assertThat(insertionUpsertion.parameters.size).isEqualTo(0)
+            assertThat(insertionUpsertion.returnType.typeName).isEqualTo(TypeName.VOID)
+            assertThat(insertionUpsertion.entities.size).isEqualTo(0)
+            invocation.assertCompilationResult {
+                hasErrorContaining(noParamsError())
+            }
+        }
+    }
+
+    @Test
+    fun notAnEntity() {
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}
+                abstract public void foo(NotAnEntity notValid);
+                """
+        ) { insertionUpsertion, invocation ->
+            assertThat(insertionUpsertion.element.jvmName).isEqualTo("foo")
+            assertThat(insertionUpsertion.parameters.size).isEqualTo(1)
+            assertThat(insertionUpsertion.entities.size).isEqualTo(0)
+            invocation.assertCompilationResult {
+                hasErrorContaining(
+                    ProcessorErrors.CANNOT_FIND_ENTITY_FOR_SHORTCUT_QUERY_PARAMETER
+                )
+            }
+        }
+    }
+
+    abstract fun noParamsError(): String
+
+    @Test
+    fun single() {
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}
+                abstract public long foo(User user);
+                """
+        ) { insertionUpsertion, _ ->
+
+            assertThat(insertionUpsertion.element.jvmName).isEqualTo("foo")
+            assertThat(insertionUpsertion.parameters.size).isEqualTo(1)
+
+            val param = insertionUpsertion.parameters.first()
+            assertThat(param.type.typeName)
+                .isEqualTo(USER_TYPE_NAME)
+
+            assertThat(param.pojoType?.typeName)
+                .isEqualTo(USER_TYPE_NAME)
+
+            assertThat(insertionUpsertion.entities["user"]?.isPartialEntity)
+                .isEqualTo(false)
+
+            assertThat(insertionUpsertion.entities["user"]?.pojo?.typeName)
+                .isEqualTo(ClassName.get("foo.bar", "User") as TypeName)
+
+            assertThat(insertionUpsertion.returnType.typeName)
+                .isEqualTo(TypeName.LONG)
+        }
+    }
+    @Test
+    fun two() {
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}
+                abstract public void foo(User u1, User u2);
+                """
+        ) { insertionUpsertion, _ ->
+            assertThat(insertionUpsertion.element.jvmName).isEqualTo("foo")
+
+            assertThat(insertionUpsertion.parameters.size).isEqualTo(2)
+            insertionUpsertion.parameters.forEach {
+                assertThat(it.type.typeName).isEqualTo(USER_TYPE_NAME)
+                assertThat(it.pojoType?.typeName).isEqualTo(USER_TYPE_NAME)
+            }
+            assertThat(insertionUpsertion.entities.size)
+                .isEqualTo(2)
+
+            assertThat(insertionUpsertion.entities["u1"]?.pojo?.typeName)
+                .isEqualTo(USER_TYPE_NAME)
+
+            assertThat(insertionUpsertion.entities["u2"]?.pojo?.typeName)
+                .isEqualTo(USER_TYPE_NAME)
+
+            assertThat(insertionUpsertion.parameters.map { it.name })
+                .isEqualTo(listOf("u1", "u2"))
+
+            assertThat(insertionUpsertion.returnType.typeName)
+                .isEqualTo(TypeName.VOID)
+        }
+    }
+
+    @Test
+    fun list() {
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}
+                abstract public List<Long> insertUsers(List<User> users);
+                """
+        ) { insertionUpsertion, _ ->
+            assertThat(insertionUpsertion.element.jvmName).isEqualTo("insertUsers")
+            assertThat(insertionUpsertion.parameters.size).isEqualTo(1)
+            val param = insertionUpsertion.parameters.first()
+            assertThat(param.type.typeName)
+                .isEqualTo(
+                    ParameterizedTypeName.get(
+                        ClassName.get("java.util", "List"),
+                        USER_TYPE_NAME
+                    ) as TypeName
+                )
+
+            assertThat(param.pojoType?.typeName)
+                .isEqualTo(USER_TYPE_NAME)
+
+            assertThat(insertionUpsertion.entities.size).isEqualTo(1)
+
+            assertThat(insertionUpsertion.entities["users"]?.pojo?.typeName)
+                .isEqualTo(USER_TYPE_NAME)
+
+            assertThat(insertionUpsertion.returnType.typeName)
+                .isEqualTo(
+                    ParameterizedTypeName.get(
+                        ClassName.get("java.util", "List"),
+                        ClassName.get("java.lang", "Long")
+                    ) as TypeName
+                )
+        }
+    }
+
+    @Test
+    fun array() {
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}
+                abstract public void insertUsers(User[] users);
+                """
+        ) { insertionUpsertion, _ ->
+            assertThat(insertionUpsertion.element.jvmName).isEqualTo("insertUsers")
+            assertThat(insertionUpsertion.parameters.size).isEqualTo(1)
+            val param = insertionUpsertion.parameters.first()
+            assertThat(param.type.typeName)
+                .isEqualTo(ArrayTypeName.of(COMMON.USER_TYPE_NAME) as TypeName)
+
+            assertThat(insertionUpsertion.entities.size).isEqualTo(1)
+
+            assertThat(insertionUpsertion.entities["users"]?.pojo?.typeName)
+                .isEqualTo(USER_TYPE_NAME)
+
+            assertThat(insertionUpsertion.returnType.typeName)
+                .isEqualTo(TypeName.VOID)
+        }
+    }
+
+    @Test
+    fun set() {
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}
+                abstract public void insertUsers(Set<User> users);
+                """
+        ) { insertionUpsertion, _ ->
+            assertThat(insertionUpsertion.element.jvmName).isEqualTo("insertUsers")
+            assertThat(insertionUpsertion.parameters.size).isEqualTo(1)
+            val param = insertionUpsertion.parameters.first()
+            assertThat(param.type.typeName)
+                .isEqualTo(
+                    ParameterizedTypeName.get(
+                        ClassName.get("java.util", "Set"),
+                        COMMON.USER_TYPE_NAME
+                    ) as TypeName
+                )
+
+            assertThat(insertionUpsertion.entities.size).isEqualTo(1)
+
+            assertThat(insertionUpsertion.entities["users"]?.pojo?.typeName)
+                .isEqualTo(USER_TYPE_NAME)
+
+            assertThat(insertionUpsertion.returnType.typeName).isEqualTo(TypeName.VOID)
+        }
+    }
+
+    @Test
+    fun queue() {
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}
+                abstract public void insertUsers(Queue<User> users);
+                """
+        ) { insertionUpsertion, _ ->
+            assertThat(insertionUpsertion.element.jvmName).isEqualTo("insertUsers")
+            assertThat(insertionUpsertion.parameters.size).isEqualTo(1)
+            val param = insertionUpsertion.parameters.first()
+            assertThat(param.type.typeName)
+                .isEqualTo(
+                    ParameterizedTypeName.get(
+                        ClassName.get("java.util", "Queue"),
+                        USER_TYPE_NAME
+                    ) as TypeName
+                )
+
+            assertThat(insertionUpsertion.entities.size).isEqualTo(1)
+
+            assertThat(insertionUpsertion.entities["users"]?.pojo?.typeName)
+                .isEqualTo(USER_TYPE_NAME)
+
+            assertThat(insertionUpsertion.returnType.typeName).isEqualTo(TypeName.VOID)
+        }
+    }
+
+    @Test
+    fun iterable() {
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}
+                abstract public void insert(Iterable<User> users);
+                """
+        ) { insertionUpsertion, _ ->
+            assertThat(insertionUpsertion.element.jvmName).isEqualTo("insert")
+            assertThat(insertionUpsertion.parameters.size).isEqualTo(1)
+            val param = insertionUpsertion.parameters.first()
+            assertThat(param.type.typeName)
+                .isEqualTo(
+                    ParameterizedTypeName.get(
+                        ClassName.get("java.lang", "Iterable"),
+                        USER_TYPE_NAME
+                    ) as TypeName
+                )
+
+            assertThat(insertionUpsertion.entities.size).isEqualTo(1)
+
+            assertThat(insertionUpsertion.entities["users"]?.pojo?.typeName)
+                .isEqualTo(USER_TYPE_NAME)
+
+            assertThat(insertionUpsertion.returnType.typeName).isEqualTo(TypeName.VOID)
+        }
+    }
+
+    @Test
+    fun customCollection() {
+        singleInsertUpsertShortcutMethod(
+            """
+                static class MyList<Irrelevant, Item> extends ArrayList<Item> {}
+                @${annotation.java.canonicalName}
+                abstract public void insert(MyList<String, User> users);
+                """
+        ) { insertionUpsertion, _ ->
+            assertThat(insertionUpsertion.element.jvmName).isEqualTo("insert")
+            assertThat(insertionUpsertion.parameters.size).isEqualTo(1)
+            val param = insertionUpsertion.parameters.first()
+            assertThat(param.type.typeName)
+                .isEqualTo(
+                    ParameterizedTypeName.get(
+                        ClassName.get("foo.bar", "MyClass.MyList"),
+                        CommonTypeNames.STRING, USER_TYPE_NAME
+                    ) as TypeName
+                )
+
+            assertThat(insertionUpsertion.entities.size).isEqualTo(1)
+
+            assertThat(insertionUpsertion.entities["users"]?.pojo?.typeName)
+                .isEqualTo(USER_TYPE_NAME)
+
+            assertThat(insertionUpsertion.returnType.typeName).isEqualTo(TypeName.VOID)
+        }
+    }
+
+    @Test
+    fun differentTypes() {
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}
+                abstract public void foo(User u1, Book b1);
+                """
+        ) { insertionUpsertion, _ ->
+            assertThat(insertionUpsertion.parameters.size).isEqualTo(2)
+            assertThat(insertionUpsertion.parameters[0].type.typeName.toString())
+                .isEqualTo("foo.bar.User")
+
+            assertThat(insertionUpsertion.parameters[1].type.typeName.toString())
+                .isEqualTo("foo.bar.Book")
+
+            assertThat(insertionUpsertion.parameters.map { it.name }).isEqualTo(listOf("u1", "b1"))
+
+            assertThat(insertionUpsertion.returnType.typeName).isEqualTo(TypeName.VOID)
+
+            assertThat(insertionUpsertion.entities.size).isEqualTo(2)
+
+            assertThat(insertionUpsertion.entities["u1"]?.pojo?.typeName)
+                .isEqualTo(USER_TYPE_NAME)
+
+            assertThat(insertionUpsertion.entities["b1"]?.pojo?.typeName)
+                .isEqualTo(BOOK_TYPE_NAME)
+        }
+    }
+
+    // TODO: Add in the return type tests when upsertionMethodAdapter is implemented
+    @Test
+    fun targetEntitySingle() {
+        val usernameSource = Source.java(
+            "foo.bar.Username",
+            """
+            package foo.bar;
+            import androidx.room.*;
+
+            public class Username {
+                int uid;
+                String name;
+                @ColumnInfo(name = "ageColumn")
+                int age;
+            }
+            """
+        )
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}(entity = User.class)
+                abstract public long foo(Username username);
+            """,
+            additionalSources = listOf(usernameSource)
+        ) { insertionUpsertion, _ ->
+            assertThat(insertionUpsertion.element.jvmName).isEqualTo("foo")
+            assertThat(insertionUpsertion.parameters.size).isEqualTo(1)
+
+            val param = insertionUpsertion.parameters.first()
+
+            assertThat(param.type.typeName).isEqualTo(USERNAME_TYPE_NAME)
+
+            assertThat(param.pojoType?.typeName).isEqualTo(USERNAME_TYPE_NAME)
+
+            assertThat(insertionUpsertion.entities.size).isEqualTo(1)
+
+            assertThat(insertionUpsertion.entities["username"]?.isPartialEntity)
+                .isEqualTo(true)
+
+            assertThat(insertionUpsertion.entities["username"]?.entityTypeName)
+                .isEqualTo(USER_TYPE_NAME)
+
+            assertThat(insertionUpsertion.entities["username"]?.pojo?.typeName)
+                .isEqualTo(USERNAME_TYPE_NAME)
+        }
+    }
+
+    @Test
+    fun targetEntitySameAsPojo() {
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}(entity = User.class)
+                abstract public long foo(User user);
+            """
+        ) { _, _ ->
+        }
+    }
+
+    @Test
+    fun targetEntityTwo() {
+        val usernameSource = Source.java(
+            "foo.bar.Username",
+            """
+            package foo.bar;
+            import androidx.room.*;
+
+            public class Username {
+                int uid;
+                String name;
+                @ColumnInfo(name = "ageColumn")
+                int age;
+            }
+            """
+        )
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}(entity = User.class)
+                abstract public void foo(Username usernameA, Username usernameB);
+            """,
+            additionalSources = listOf(usernameSource)
+        ) { _, _ ->
+        }
+    }
+
+    @Test
+    fun targetEntityMissingRequiredColumn() {
+        val usernameSource = Source.java(
+            "foo.bar.Username",
+            """
+            package foo.bar;
+            import androidx.room.*;
+
+            public class Username {
+                int uid;
+                String name;
+            }
+            """
+        )
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}(entity = User.class)
+                abstract public void foo(Username username);
+            """,
+            additionalSources = listOf(usernameSource)
+        ) { _, invocation ->
+            invocation.assertCompilationResult {
+                hasErrorContaining(
+                    ProcessorErrors.missingRequiredColumnsInPartialEntity(
+                        partialEntityName = USERNAME_TYPE_NAME.toString(),
+                        missingColumnNames = listOf("ageColumn")
+                    )
+                )
+            }
+        }
+    }
+
+    @Test
+    fun targetEntityColumnDefaultValue() {
+        val petNameSource = Source.java(
+            "foo.bar.PetName",
+            """
+            package foo.bar;
+            import androidx.room.*;
+
+            public class PetName {
+                @ColumnInfo(name = "name")
+                String string;
+            }
+            """
+        )
+        val petSource = Source.java(
+            "foo.bar.Pet",
+            """
+            package foo.bar;
+            import androidx.room.*;
+
+            @Entity
+            public class Pet {
+                @PrimaryKey(autoGenerate = true)
+                int petId;
+                String name;
+                @ColumnInfo(defaultValue = "0")
+                int age;
+            }
+            """
+        )
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}(entity = Pet.class)
+                abstract public long foo(PetName petName);
+            """,
+            additionalSources = listOf(petNameSource, petSource)
+        ) { _, _ ->
+        }
+    }
+
+    @Test
+    fun targetEntityMissingPrimaryKey() {
+        val petNameSource = Source.java(
+            "foo.bar.PetName",
+            """
+            package foo.bar;
+            import androidx.room.*;
+
+            public class PetName {
+                @ColumnInfo(name = "name")
+                String string;
+            }
+            """
+        )
+        val petSource = Source.java(
+            "foo.bar.Pet",
+            """
+            package foo.bar;
+            import androidx.room.*;
+
+            @Entity
+            public class Pet {
+                @PrimaryKey
+                int petId;
+                String name;
+            }
+            """
+        )
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}(entity = Pet.class)
+                abstract public long foo(PetName petName);
+            """,
+            additionalSources = listOf(petNameSource, petSource)
+        ) { _, invocation ->
+            invocation.assertCompilationResult {
+                hasErrorContaining(missingPrimaryKey(
+                    "foo.bar.PetName",
+                    listOf("petId"))
+                )
+            }
+        }
+    }
+
+    abstract fun missingPrimaryKey(partialEntityName: String, primaryKeyName: List<String>):
+        String
+
+    @Test
+    fun targetEntityAutoGeneratedPrimaryKey() {
+        val petNameSource = Source.java(
+            "foo.bar.PetName",
+            """
+            package foo.bar;
+            import androidx.room.*;
+
+            public class PetName {
+                @ColumnInfo(name = "name")
+                String string;
+            }
+            """
+        )
+        val petSource = Source.java(
+            "foo.bar.Pet",
+            """
+            package foo.bar;
+            import androidx.room.*;
+
+            @Entity
+            public class Pet {
+                @PrimaryKey(autoGenerate = true)
+                int petId;
+                String name;
+            }
+            """
+        )
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}(entity = Pet.class)
+                abstract public long foo(PetName petName);
+            """,
+            additionalSources = listOf(petNameSource, petSource)
+        ) { _, _ ->
+        }
+    }
+
+    @Test
+    fun targetEntityExtraColumn() {
+        val usernameSource = Source.java(
+            "foo.bar.Username",
+            """
+            package foo.bar;
+            import androidx.room.*;
+
+            public class Username {
+                int uid;
+                String name;
+                long extraField;
+            }
+            """
+        )
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}(entity = User.class)
+                abstract public long foo(Username username);
+            """,
+            additionalSources = listOf(usernameSource)
+        ) { _, invocation ->
+            invocation.assertCompilationResult {
+                hasErrorContaining(
+                    ProcessorErrors.cannotFindAsEntityField("foo.bar.User")
+                )
+            }
+        }
+    }
+
+    @Test
+    fun targetEntityExtraColumnIgnored() {
+        val usernameSource = Source.java(
+            "foo.bar.Username",
+            """
+            package foo.bar;
+            import androidx.room.*;
+
+            public class Username {
+                int uid;
+                String name;
+                @ColumnInfo(name = "ageColumn")
+                int age;
+                @Ignore
+                long extraField;
+            }
+            """
+        )
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}(entity = User.class)
+                abstract public long foo(Username username);
+            """,
+            additionalSources = listOf(usernameSource)
+        ) { _, _ ->
+        }
+    }
+
+    @Test
+    fun targetEntityWithEmbedded() {
+        val usernameSource = Source.java(
+            "foo.bar.Username",
+            """
+            package foo.bar;
+            import androidx.room.*;
+
+            public class Username {
+                int uid;
+                @Embedded
+                Fullname name;
+                @ColumnInfo(name = "ageColumn")
+                int age;
+            }
+            """
+        )
+        val fullnameSource = Source.java(
+            "foo.bar.Fullname",
+            """
+            package foo.bar;
+            import androidx.room.*;
+
+            public class Fullname {
+                @ColumnInfo(name = "name")
+                String firstName;
+                String lastName;
+            }
+            """
+        )
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}(entity = User.class)
+                abstract public long foo(Username username);
+            """,
+            additionalSources = listOf(usernameSource, fullnameSource)
+        ) { _, _ ->
+        }
+    }
+
+    @Test
+    fun targetEntityWithRelation() {
+        val userPetsSource = Source.java(
+            "foo.bar.UserPets",
+            """
+            package foo.bar;
+            import androidx.room.*;
+            import java.util.List;
+
+            public class UserPets {
+                int uid;
+                @Relation(parentColumn = "uid", entityColumn = "ownerId")
+                List<Pet> pets;
+            }
+            """
+        )
+        val petSource = Source.java(
+            "foo.bar.Pet",
+            """
+            package foo.bar;
+            import androidx.room.*;
+
+            @Entity
+            public class Pet {
+                @PrimaryKey
+                int petId;
+                int ownerId;
+            }
+            """
+        )
+        singleInsertUpsertShortcutMethod(
+            """
+                @${annotation.java.canonicalName}(entity = User.class)
+                abstract public long foo(UserPets userPets);
+                """,
+            additionalSources = listOf(userPetsSource, petSource)
+        ) { _, invocation ->
+            invocation.assertCompilationResult {
+                hasErrorContaining(
+                    ProcessorErrors.INVALID_RELATION_IN_PARTIAL_ENTITY
+                )
+            }
+        }
+    }
+
+    abstract fun process(
+        baseContext: Context,
+        containing: XType,
+        executableElement: XMethodElement
+    ): T
+
+    fun singleInsertUpsertShortcutMethod(
+        vararg input: String,
+        additionalSources: List<Source> = emptyList(),
+        handler: (T, XTestInvocation) -> Unit
+    ) {
+        val inputSource = Source.java(
+            "foo.bar.MyClass",
+            DAO_PREFIX + input.joinToString("\n") + DAO_SUFFIX
+        )
+        val commonSources = listOf(
+            COMMON.USER, COMMON.BOOK, COMMON.NOT_AN_ENTITY, COMMON.RX2_COMPLETABLE,
+            COMMON.RX2_MAYBE, COMMON.RX2_SINGLE, COMMON.RX3_COMPLETABLE,
+            COMMON.RX3_MAYBE, COMMON.RX3_SINGLE
+        )
+
+        runProcessorTest(
+            sources = commonSources + additionalSources + inputSource
+        ) { invocation ->
+            val (owner, methods) = invocation.roundEnv
+                .getElementsAnnotatedWith(Dao::class.qualifiedName!!)
+                .filterIsInstance<XTypeElement>()
+                .map {
+                    Pair(
+                        it,
+                        it.getAllMethods().filter {
+                            it.hasAnnotation(annotation)
+                        }.toList()
+                    )
+                }.first { it.second.isNotEmpty() }
+            val processed = process(
+                baseContext = invocation.context,
+                containing = owner.type,
+                executableElement = methods.first()
+            )
+            handler(processed, invocation)
+        }
+    }
+}
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/processor/InsertionMethodProcessorTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/processor/InsertionMethodProcessorTest.kt
index ffa2e8fa..7891b39 100644
--- a/room/room-compiler/src/test/kotlin/androidx/room/processor/InsertionMethodProcessorTest.kt
+++ b/room/room-compiler/src/test/kotlin/androidx/room/processor/InsertionMethodProcessorTest.kt
@@ -415,7 +415,8 @@
                 abstract public $type foo(User user);
                 """
             ) { insertion, invocation ->
-                assertThat(insertion.methodBinder.adapter, `is`(nullValue()))
+                // TODO: (b/240491383) remove methodBinder nullability
+                assertThat(insertion.methodBinder?.adapter, `is`(nullValue()))
                 invocation.assertCompilationResult {
                     hasErrorContaining(
                         ProcessorErrors.CANNOT_FIND_INSERT_RESULT_ADAPTER
@@ -440,7 +441,8 @@
                 abstract public $type foo(User user);
                 """
             ) { insertion, invocation ->
-                assertThat(insertion.methodBinder.adapter, `is`(nullValue()))
+                // TODO: (b/240491383) remove methodBinder nullability
+                assertThat(insertion.methodBinder?.adapter, `is`(nullValue()))
                 invocation.assertCompilationResult {
                     hasErrorContaining(
                         ProcessorErrors.CANNOT_FIND_INSERT_RESULT_ADAPTER
@@ -464,7 +466,8 @@
                 abstract public $type foo(User... user);
                 """
             ) { insertion, invocation ->
-                assertThat(insertion.methodBinder.adapter, `is`(nullValue()))
+                // TODO: (b/240491383) remove methodBinder nullability
+                assertThat(insertion.methodBinder?.adapter, `is`(nullValue()))
                 invocation.assertCompilationResult {
                     hasErrorContaining(
                         ProcessorErrors.CANNOT_FIND_INSERT_RESULT_ADAPTER
@@ -488,7 +491,8 @@
                 abstract public $type foo(User user1, User user2);
                 """
             ) { insertion, invocation ->
-                assertThat(insertion.methodBinder.adapter, `is`(nullValue()))
+                // TODO: (b/240491383) remove methodBinder nullability
+                assertThat(insertion.methodBinder?.adapter, `is`(nullValue()))
                 invocation.assertCompilationResult {
                     hasErrorContaining(
                         ProcessorErrors.CANNOT_FIND_INSERT_RESULT_ADAPTER
@@ -563,7 +567,7 @@
                 abstract public ${pair.first} foo(User$dots user);
                 """
             ) { insertion, _ ->
-                assertThat(insertion.methodBinder.adapter, `is`(notNullValue()))
+                assertThat(insertion.methodBinder?.adapter, `is`(notNullValue()))
             }
         }
     }
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/processor/NewInsertionMethodProcessorTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/processor/NewInsertionMethodProcessorTest.kt
new file mode 100644
index 0000000..2f1b27f
--- /dev/null
+++ b/room/room-compiler/src/test/kotlin/androidx/room/processor/NewInsertionMethodProcessorTest.kt
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.room.processor
+
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.compiler.processing.XMethodElement
+import androidx.room.compiler.processing.XType
+import androidx.room.processor.ProcessorErrors.INSERTION_DOES_NOT_HAVE_ANY_PARAMETERS_TO_INSERT
+import androidx.room.vo.InsertionMethod
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+// TODO: Rename NewInsertionMethodProcessorTest.kt to InsertionMethodProcessorTest (remove old file)
+
+@Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN")
+@RunWith(JUnit4::class)
+class NewInsertionMethodProcessorTest :
+    InsertOrUpsertShortcutMethodProcessorTest<InsertionMethod>(Insert::class) {
+    override fun noParamsError(): String = INSERTION_DOES_NOT_HAVE_ANY_PARAMETERS_TO_INSERT
+
+    override fun missingPrimaryKey(partialEntityName: String, primaryKeyName: List<String>):
+    String {
+        return ProcessorErrors.missingPrimaryKeysInPartialEntityForInsert(
+            partialEntityName,
+            primaryKeyName
+        )
+    }
+
+    @Test
+    fun onConflict_Default() {
+        singleInsertUpsertShortcutMethod(
+            """
+                @Insert
+                abstract public void foo(User user);
+                """
+        ) { insertion, _ ->
+            assertThat(insertion.onConflict).isEqualTo(OnConflictStrategy.ABORT)
+        }
+    }
+
+    @Test
+    fun onConflict_Invalid() {
+        singleInsertUpsertShortcutMethod(
+            """
+                @Insert(onConflict = -1)
+                abstract public void foo(User user);
+                """
+        ) { _, invocation ->
+            invocation.assertCompilationResult {
+                hasErrorContaining(
+                    ProcessorErrors.INVALID_ON_CONFLICT_VALUE
+                )
+            }
+        }
+    }
+
+    @Test
+    fun onConflict_EachValue() {
+        listOf(
+            Pair("NONE", 0),
+            Pair("REPLACE", 1),
+            Pair("ROLLBACK", 2),
+            Pair("ABORT", 3),
+            Pair("FAIL", 4),
+            Pair("IGNORE", 5)
+        ).forEach { pair ->
+            singleInsertUpsertShortcutMethod(
+                """
+                @Insert(onConflict=OnConflictStrategy.${pair.first})
+                abstract public void foo(User user);
+                """
+            ) { insertion, _ ->
+                assertThat(insertion.onConflict).isEqualTo(pair.second)
+            }
+        }
+    }
+
+    override fun process(
+        baseContext: Context,
+        containing: XType,
+        executableElement: XMethodElement
+    ): InsertionMethod {
+        return InsertionMethodProcessor(baseContext, containing, executableElement).process()
+    }
+}
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/processor/UpdateMethodProcessorTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/processor/UpdateMethodProcessorTest.kt
index e2a264a..9a2d2c1 100644
--- a/room/room-compiler/src/test/kotlin/androidx/room/processor/UpdateMethodProcessorTest.kt
+++ b/room/room-compiler/src/test/kotlin/androidx/room/processor/UpdateMethodProcessorTest.kt
@@ -31,7 +31,8 @@
 
 @Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN")
 @RunWith(JUnit4::class)
-class UpdateMethodProcessorTest : ShortcutMethodProcessorTest<UpdateMethod>(Update::class) {
+class UpdateMethodProcessorTest :
+    DeleteOrUpdateShortcutMethodProcessorTest<UpdateMethod>(Update::class) {
     override fun invalidReturnTypeError(): String = CANNOT_FIND_UPDATE_RESULT_ADAPTER
 
     override fun noParamsError(): String = UPDATE_MISSING_PARAMS
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/processor/UpsertionMethodProcessorTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/processor/UpsertionMethodProcessorTest.kt
new file mode 100644
index 0000000..4370d53
--- /dev/null
+++ b/room/room-compiler/src/test/kotlin/androidx/room/processor/UpsertionMethodProcessorTest.kt
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.room.processor
+
+import androidx.room.Upsert
+import androidx.room.compiler.processing.XMethodElement
+import androidx.room.compiler.processing.XType
+import androidx.room.processor.ProcessorErrors.UPSERTION_DOES_NOT_HAVE_ANY_PARAMETERS_TO_UPSERT
+import androidx.room.vo.UpsertionMethod
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+@Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN")
+@RunWith(JUnit4::class)
+class UpsertionMethodProcessorTest :
+    InsertOrUpsertShortcutMethodProcessorTest<UpsertionMethod>(Upsert::class) {
+    override fun noParamsError(): String = UPSERTION_DOES_NOT_HAVE_ANY_PARAMETERS_TO_UPSERT
+
+    override fun missingPrimaryKey(partialEntityName: String, primaryKeyName: List<String>):
+        String {
+        return ProcessorErrors.missingPrimaryKeysInPartialEntityForUpsert(
+            partialEntityName,
+            primaryKeyName
+        )
+    }
+
+    override fun process(
+        baseContext: Context,
+        containing: XType,
+        executableElement: XMethodElement
+    ): UpsertionMethod {
+        return UpsertionMethodProcessor(baseContext, containing, executableElement).process()
+    }
+}
diff --git a/room/room-guava/lint-baseline.xml b/room/room-guava/lint-baseline.xml
index a342987..02cd583 100644
--- a/room/room-guava/lint-baseline.xml
+++ b/room/room-guava/lint-baseline.xml
@@ -2,33 +2,6 @@
 <issues format="6" by="lint 7.4.0-alpha08" type="baseline" client="gradle" dependencies="false" name="AGP (7.4.0-alpha08)" variant="all" version="7.4.0-alpha08">
 
     <issue
-        id="LambdaLast"
-        message="Functional interface parameters (such as parameter 1, &quot;callable&quot;, in androidx.room.guava.GuavaRoom.createListenableFuture) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions"
-        errorLine1="            final boolean releaseQuery) {"
-        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/room/guava/GuavaRoom.java"/>
-    </issue>
-
-    <issue
-        id="LambdaLast"
-        message="Functional interface parameters (such as parameter 2, &quot;callable&quot;, in androidx.room.guava.GuavaRoom.createListenableFuture) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions"
-        errorLine1="            final boolean releaseQuery) {"
-        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/room/guava/GuavaRoom.java"/>
-    </issue>
-
-    <issue
-        id="LambdaLast"
-        message="Functional interface parameters (such as parameter 3, &quot;callable&quot;, in androidx.room.guava.GuavaRoom.createListenableFuture) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions"
-        errorLine1="            final @Nullable CancellationSignal cancellationSignal) {"
-        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/room/guava/GuavaRoom.java"/>
-    </issue>
-
-    <issue
         id="UnknownNullness"
         message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
         errorLine1="    public static &lt;T> ListenableFuture&lt;T> createListenableFuture("
diff --git a/room/room-guava/src/main/java/androidx/room/guava/GuavaRoom.java b/room/room-guava/src/main/java/androidx/room/guava/GuavaRoom.java
index 97e8e91..8a00a05 100644
--- a/room/room-guava/src/main/java/androidx/room/guava/GuavaRoom.java
+++ b/room/room-guava/src/main/java/androidx/room/guava/GuavaRoom.java
@@ -53,6 +53,7 @@
      *             RoomSQLiteQuery, boolean, CancellationSignal)}
      */
     @Deprecated
+    @SuppressLint("LambdaLast")
     public static <T> ListenableFuture<T> createListenableFuture(
             final Callable<T> callable,
             final RoomSQLiteQuery query,
@@ -69,6 +70,7 @@
      *             RoomSQLiteQuery, boolean, CancellationSignal)}
      */
     @Deprecated
+    @SuppressLint("LambdaLast")
     public static <T> ListenableFuture<T> createListenableFuture(
             final RoomDatabase roomDatabase,
             final Callable<T> callable,
@@ -98,6 +100,7 @@
      * {@link RoomDatabase}'s {@link java.util.concurrent.Executor}.
      */
     @NonNull
+    @SuppressLint("LambdaLast")
     public static <T> ListenableFuture<T> createListenableFuture(
             final @NonNull RoomDatabase roomDatabase,
             final boolean inTransaction,
diff --git a/room/room-runtime/lint-baseline.xml b/room/room-runtime/lint-baseline.xml
index 3868fd8..57ff4ba 100644
--- a/room/room-runtime/lint-baseline.xml
+++ b/room/room-runtime/lint-baseline.xml
@@ -3,321 +3,6 @@
 
     <issue
         id="NewApi"
-        message="Call requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        autoClosingRoomOpenHelper.writableDatabase"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperFactoryTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        autoClosingRoomOpenHelper.writableDatabase"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperFactoryTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        autoClosingRoomOpenHelper.writableDatabase"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperFactoryTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        autoClosingRoomOpenHelper.writableDatabase"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperFactoryTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        val db = autoClosingRoomOpenHelper.writableDatabase"
-        errorLine2="                                           ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperFactoryTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        val db = autoClosingRoomOpenHelper.writableDatabase"
-        errorLine2="                                           ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperFactoryTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="                .writableDatabase.query(&quot;select * from nonexistanttable&quot;)"
-        errorLine2="                 ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="                .writableDatabase.query(&quot;select * from nonexistanttable&quot;)"
-        errorLine2="                 ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        autoClosingRoomOpenHelper.writableDatabase.execSQL(&quot;create table user (idk int)&quot;)"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        autoClosingRoomOpenHelper.writableDatabase.execSQL(&quot;create table user (idk int)&quot;)"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="            autoClosingRoomOpenHelper.writableDatabase.query(&quot;select * from user&quot;)"
-        errorLine2="                                      ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="            autoClosingRoomOpenHelper.writableDatabase.query(&quot;select * from user&quot;)"
-        errorLine2="                                      ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        autoClosingRoomOpenHelper.writableDatabase.beginTransaction()"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        autoClosingRoomOpenHelper.writableDatabase.beginTransaction()"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        autoClosingRoomOpenHelper.writableDatabase.endTransaction()"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        autoClosingRoomOpenHelper.writableDatabase.endTransaction()"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 24 (current min is 16): `getWritableDatabase`"
-        errorLine1="        assertThat(autoClosingRoomOpenHelper.writableDatabase.isWriteAheadLoggingEnabled).isTrue()"
-        errorLine2="                                             ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 16): `getWritableDatabase`"
-        errorLine1="        assertThat(autoClosingRoomOpenHelper.writableDatabase.isWriteAheadLoggingEnabled).isTrue()"
-        errorLine2="                                             ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 24 (current min is 16): `getWritableDatabase`"
-        errorLine1="        assertThat(autoClosingRoomOpenHelper.writableDatabase.isWriteAheadLoggingEnabled).isTrue()"
-        errorLine2="                                             ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 16): `getWritableDatabase`"
-        errorLine1="        assertThat(autoClosingRoomOpenHelper.writableDatabase.isWriteAheadLoggingEnabled).isTrue()"
-        errorLine2="                                             ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="            autoClosingRoomOpenHelper.writableDatabase.enableWriteAheadLogging()"
-        errorLine2="                                      ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="            autoClosingRoomOpenHelper.writableDatabase.enableWriteAheadLogging()"
-        errorLine2="                                      ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 16 (current min is 14): `disableWriteAheadLogging`"
-        errorLine1="            autoClosingRoomOpenHelper.writableDatabase.disableWriteAheadLogging()"
-        errorLine2="                                                       ~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="            autoClosingRoomOpenHelper.writableDatabase.disableWriteAheadLogging()"
-        errorLine2="                                      ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="            autoClosingRoomOpenHelper.writableDatabase.disableWriteAheadLogging()"
-        errorLine2="                                      ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        autoClosingRoomOpenHelper.writableDatabase"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        autoClosingRoomOpenHelper.writableDatabase"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        autoClosingRoomOpenHelper.writableDatabase"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        autoClosingRoomOpenHelper.writableDatabase"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        val db = autoClosingRoomOpenHelper.writableDatabase"
-        errorLine2="                                           ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        val db = autoClosingRoomOpenHelper.writableDatabase"
-        errorLine2="                                           ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        val db = autoClosingRoomOpenHelper.writableDatabase"
-        errorLine2="                                           ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        val db = autoClosingRoomOpenHelper.writableDatabase"
-        errorLine2="                                           ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        val db = autoClosingRoomOpenHelper.writableDatabase"
-        errorLine2="                                           ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 24 (current min is 14): `getWritableDatabase`"
-        errorLine1="        val db = autoClosingRoomOpenHelper.writableDatabase"
-        errorLine2="                                           ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
         message="Call requires API level 21 (current min is 14): `java.util.Locale#forLanguageTag`"
         errorLine1="        Locale.setDefault(Locale.forLanguageTag(&quot;tr-TR&quot;))"
         errorLine2="                                 ~~~~~~~~~~~~~~">
@@ -325,31 +10,4 @@
             file="src/test/java/androidx/room/InvalidationTrackerTest.kt"/>
     </issue>
 
-    <issue
-        id="NewApi"
-        message="Call requires API level 26 (current min is 14): `java.lang.Process#waitFor`"
-        errorLine1="                val exited = it.waitFor(5, TimeUnit.SECONDS)"
-        errorLine2="                                ~~~~~~~">
-        <location
-            file="src/test/java/androidx/room/SQLiteCopyOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Call requires API level 26 (current min is 14): `java.lang.ProcessBuilder#redirectOutput`"
-        errorLine1="            .redirectOutput(ProcessBuilder.Redirect.INHERIT)"
-        errorLine2="             ~~~~~~~~~~~~~~">
-        <location
-            file="src/test/java/androidx/room/SQLiteCopyOpenHelperTest.kt"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Field requires API level 26 (current min is 14): `java.lang.ProcessBuilder.Redirect#INHERIT`"
-        errorLine1="            .redirectOutput(ProcessBuilder.Redirect.INHERIT)"
-        errorLine2="                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/test/java/androidx/room/SQLiteCopyOpenHelperTest.kt"/>
-    </issue>
-
 </issues>
diff --git a/room/room-runtime/src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperFactoryTest.kt b/room/room-runtime/src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperFactoryTest.kt
index 49e4225..d4684a4 100644
--- a/room/room-runtime/src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperFactoryTest.kt
+++ b/room/room-runtime/src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperFactoryTest.kt
@@ -17,7 +17,9 @@
 package androidx.room
 
 import android.content.Context
+import android.os.Build
 import android.os.Build.VERSION_CODES.JELLY_BEAN
+import androidx.annotation.RequiresApi
 import androidx.sqlite.db.SupportSQLiteDatabase
 import androidx.sqlite.db.SupportSQLiteOpenHelper
 import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
@@ -50,6 +52,7 @@
         )
     }
 
+    @RequiresApi(Build.VERSION_CODES.N)
     @Test
     public fun testCallbacksCalled() {
         val autoClosingRoomOpenHelperFactory =
@@ -108,6 +111,7 @@
         }
     }
 
+    @RequiresApi(Build.VERSION_CODES.N)
     @Test
     public fun testDatabaseIsOpenForSlowCallbacks() {
         val autoClosingRoomOpenHelperFactory =
diff --git a/room/room-runtime/src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt b/room/room-runtime/src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt
index 5d186f5..f9400d2 100644
--- a/room/room-runtime/src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt
+++ b/room/room-runtime/src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt
@@ -20,6 +20,7 @@
 import android.database.Cursor
 import android.database.sqlite.SQLiteException
 import android.os.Build
+import androidx.annotation.RequiresApi
 import androidx.sqlite.db.SupportSQLiteDatabase
 import androidx.sqlite.db.SupportSQLiteOpenHelper
 import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
@@ -79,6 +80,7 @@
         )
     }
 
+    @RequiresApi(Build.VERSION_CODES.N)
     @Test
     public fun testQueryFailureDecrementsRefCount() {
         val autoClosingRoomOpenHelper = getAutoClosingRoomOpenHelper()
@@ -91,6 +93,7 @@
         assertThat(autoClosingRoomOpenHelper.autoCloser.refCountForTest).isEqualTo(0)
     }
 
+    @RequiresApi(Build.VERSION_CODES.N)
     @Test
     public fun testCursorKeepsDbAlive() {
         val autoClosingRoomOpenHelper = getAutoClosingRoomOpenHelper()
@@ -103,6 +106,7 @@
         assertThat(autoClosingRoomOpenHelper.autoCloser.refCountForTest).isEqualTo(0)
     }
 
+    @RequiresApi(Build.VERSION_CODES.N)
     @Test
     public fun testTransactionKeepsDbAlive() {
         val autoClosingRoomOpenHelper = getAutoClosingRoomOpenHelper()
@@ -112,6 +116,7 @@
         assertThat(autoClosingRoomOpenHelper.autoCloser.refCountForTest).isEqualTo(0)
     }
 
+    @RequiresApi(Build.VERSION_CODES.N)
     @Test
     @SdkSuppress(minSdkVersion = Build.VERSION_CODES.JELLY_BEAN)
     public fun enableWriteAheadLogging_onOpenHelper() {
@@ -125,6 +130,7 @@
         assertThat(autoClosingRoomOpenHelper.writableDatabase.isWriteAheadLoggingEnabled).isTrue()
     }
 
+    @RequiresApi(Build.VERSION_CODES.N)
     @Test
     public fun testEnableWriteAheadLogging_onSupportSqliteDatabase_throwsUnsupportedOperation() {
         val autoClosingRoomOpenHelper = getAutoClosingRoomOpenHelper()
@@ -138,6 +144,7 @@
         }
     }
 
+    @RequiresApi(Build.VERSION_CODES.N)
     @FlakyTest(bugId = 190607416)
     @Test
     public fun testOnOpenCalledOnEachOpen() {
@@ -168,6 +175,7 @@
         assertThat(countingCallback.onCreateCalls).isEqualTo(1)
     }
 
+    @RequiresApi(Build.VERSION_CODES.N)
     @Test
     public fun testStatementReturnedByCompileStatement_doesntKeepDatabaseOpen() {
         val autoClosingRoomOpenHelper = getAutoClosingRoomOpenHelper()
@@ -182,6 +190,7 @@
         assertThat(autoClosingRoomOpenHelper.autoCloser.refCountForTest).isEqualTo(0)
     }
 
+    @RequiresApi(Build.VERSION_CODES.N)
     @Test
     public fun testStatementReturnedByCompileStatement_reOpensDatabase() {
         val autoClosingRoomOpenHelper = getAutoClosingRoomOpenHelper()
@@ -203,6 +212,7 @@
         assertThat(autoClosingRoomOpenHelper.autoCloser.refCountForTest).isEqualTo(0)
     }
 
+    @RequiresApi(Build.VERSION_CODES.N)
     @Test
     public fun testStatementReturnedByCompileStatement_worksWithBinds() {
         val autoClosingRoomOpenHelper = getAutoClosingRoomOpenHelper()
diff --git a/room/room-runtime/src/test/java/androidx/room/SQLiteCopyOpenHelperTest.kt b/room/room-runtime/src/test/java/androidx/room/SQLiteCopyOpenHelperTest.kt
index 7c81e4e..b1b2124 100644
--- a/room/room-runtime/src/test/java/androidx/room/SQLiteCopyOpenHelperTest.kt
+++ b/room/room-runtime/src/test/java/androidx/room/SQLiteCopyOpenHelperTest.kt
@@ -18,6 +18,8 @@
 
 import android.content.Context
 import android.content.res.AssetManager
+import android.os.Build
+import androidx.annotation.RequiresApi
 import androidx.sqlite.db.SupportSQLiteDatabase
 import androidx.sqlite.db.SupportSQLiteOpenHelper
 import org.junit.Assert.assertEquals
@@ -119,6 +121,7 @@
         assertEquals(1, getAndIncrementAccessCount(copyFile))
     }
 
+    @RequiresApi(Build.VERSION_CODES.O)
     @Ignore("b/166632825 test is flaky")
     @Test
     fun singleCopy_multiProcess() {
@@ -253,6 +256,7 @@
     }
 
     // Spawns a new Java process to perform a copy using the open helper.
+    @RequiresApi(Build.VERSION_CODES.O)
     private fun spawnCopyProcess(copyFromFile: File): Process {
         val home = checkNotNull(System.getProperty("java.home")) {
             "cannot read java.home from system properties."
diff --git a/room/room-rxjava2/lint-baseline.xml b/room/room-rxjava2/lint-baseline.xml
index bf4c0c5..1bf3531 100644
--- a/room/room-rxjava2/lint-baseline.xml
+++ b/room/room-rxjava2/lint-baseline.xml
@@ -2,15 +2,6 @@
 <issues format="6" by="lint 7.4.0-alpha08" type="baseline" client="gradle" dependencies="false" name="AGP (7.4.0-alpha08)" variant="all" version="7.4.0-alpha08">
 
     <issue
-        id="PrivateConstructorForUtilityClass"
-        message="Utility class is missing private constructor"
-        errorLine1="public class RxRoom {"
-        errorLine2="             ~~~~~~">
-        <location
-            file="src/main/java/androidx/room/RxRoom.java"/>
-    </issue>
-
-    <issue
         id="UnknownNullness"
         message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://developer.android.com/kotlin/interop#nullability_annotations"
         errorLine1="    public EmptyResultSetException(String message) {"
diff --git a/room/room-rxjava2/src/main/java/androidx/room/RxRoom.java b/room/room-rxjava2/src/main/java/androidx/room/RxRoom.java
index 5a3e52d..a0c6293 100644
--- a/room/room-rxjava2/src/main/java/androidx/room/RxRoom.java
+++ b/room/room-rxjava2/src/main/java/androidx/room/RxRoom.java
@@ -16,6 +16,8 @@
 
 package androidx.room;
 
+import android.annotation.SuppressLint;
+
 import androidx.annotation.RestrictTo;
 
 import java.util.Set;
@@ -43,6 +45,7 @@
 /**
  * Helper class to add RxJava2 support to Room.
  */
+@SuppressLint("PrivateConstructorForUtilityClass")
 @SuppressWarnings("WeakerAccess")
 public class RxRoom {
     /**
diff --git a/test/ext/junit-gtest/src/main/cpp/gtest_wrapper.cpp b/test/ext/junit-gtest/src/main/cpp/gtest_wrapper.cpp
index a992de9..0935e93 100644
--- a/test/ext/junit-gtest/src/main/cpp/gtest_wrapper.cpp
+++ b/test/ext/junit-gtest/src/main/cpp/gtest_wrapper.cpp
@@ -119,7 +119,8 @@
 
         virtual void OnTestPartResult(const testing::TestPartResult &testPartResult) override {
           if (!testPartResult.passed()) {
-            mCurrentTestError << "\n" << testPartResult.file_name() << ":" << testPartResult.line_number()
+            const char* file_name = testPartResult.file_name() != nullptr ? testPartResult.file_name() : "unknown file";
+            mCurrentTestError << "\n" << file_name << ":" << testPartResult.line_number()
                               << "\n" << testPartResult.message() << "\n";
           }
         }
diff --git a/test/integration-tests/junit-gtest-test/src/androidTest/java/androidx/test/ext/junitgtesttest/GtestRunnerTest.kt b/test/integration-tests/junit-gtest-test/src/androidTest/java/androidx/test/ext/junitgtesttest/GtestRunnerTest.kt
index ac842ad..2d694aa 100644
--- a/test/integration-tests/junit-gtest-test/src/androidTest/java/androidx/test/ext/junitgtesttest/GtestRunnerTest.kt
+++ b/test/integration-tests/junit-gtest-test/src/androidTest/java/androidx/test/ext/junitgtesttest/GtestRunnerTest.kt
@@ -47,7 +47,9 @@
     @Test
     fun runsTheTest() {
         runner.run(runNotifier)
-        assertThat(runListener.failures.single().message.normalizeWhitespace()).contains(
+        assertThat(runListener.failures).hasSize(2)
+        val adderFailure = runListener.failures[0]
+        assertThat(adderFailure.message.normalizeWhitespace()).contains(
             """
                 Expected equality of these values:
                 42
@@ -55,6 +57,14 @@
                 Which is: 43
             """.normalizeWhitespace()
         )
+
+        val uncaughtExceptionFailure = runListener.failures[1]
+        assertThat(uncaughtExceptionFailure.message.normalizeWhitespace()).contains(
+            """
+                unknown file:-1
+                Unknown C++ exception thrown in the test body.
+            """.normalizeWhitespace()
+        )
     }
 
     @Test
@@ -63,7 +73,10 @@
         assertThat(runListener.descriptions.map { it.displayName }).isEqualTo(
             listOf(
                 "adder_pass(androidx.test.ext.junitgtesttest.GtestRunnerTest\$NativeTests)",
-                "foo_fail(androidx.test.ext.junitgtesttest.GtestRunnerTest\$NativeTests)")
+                "foo_fail(androidx.test.ext.junitgtesttest.GtestRunnerTest\$NativeTests)",
+                "JUnitNotifyingListener_handles_null_file_names(androidx.test.ext.junitgtesttest." +
+                    "GtestRunnerTest\$NativeTests)"
+            )
 
         )
     }
diff --git a/test/integration-tests/junit-gtest-test/src/main/cpp/CMakeLists.txt b/test/integration-tests/junit-gtest-test/src/main/cpp/CMakeLists.txt
index 6163455..f88adb0 100644
--- a/test/integration-tests/junit-gtest-test/src/main/cpp/CMakeLists.txt
+++ b/test/integration-tests/junit-gtest-test/src/main/cpp/CMakeLists.txt
@@ -13,6 +13,7 @@
 add_library(apptest
         SHARED
         app_test.cpp
+        gtest_wrapper_test.cpp
         )
 
 target_link_libraries(apptest
diff --git a/test/integration-tests/junit-gtest-test/src/main/cpp/gtest_wrapper_test.cpp b/test/integration-tests/junit-gtest-test/src/main/cpp/gtest_wrapper_test.cpp
new file mode 100644
index 0000000..d4f7268
--- /dev/null
+++ b/test/integration-tests/junit-gtest-test/src/main/cpp/gtest_wrapper_test.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "gtest/gtest.h"
+
+TEST(JUnitNotifyingListener, handles_null_file_names) {
+    throw "this should not crash the test runner";
+}
\ No newline at end of file
diff --git a/test/uiautomator/integration-tests/testapp/src/androidTest/java/androidx/test/uiautomator/testapp/UiObject2Tests.java b/test/uiautomator/integration-tests/testapp/src/androidTest/java/androidx/test/uiautomator/testapp/UiObject2Tests.java
index e8de38b..a25c616 100644
--- a/test/uiautomator/integration-tests/testapp/src/androidTest/java/androidx/test/uiautomator/testapp/UiObject2Tests.java
+++ b/test/uiautomator/integration-tests/testapp/src/androidTest/java/androidx/test/uiautomator/testapp/UiObject2Tests.java
@@ -28,6 +28,7 @@
 import android.graphics.Rect;
 import android.view.ViewConfiguration;
 
+import androidx.test.core.app.ApplicationProvider;
 import androidx.test.filters.SdkSuppress;
 import androidx.test.uiautomator.By;
 import androidx.test.uiautomator.Direction;
@@ -558,47 +559,34 @@
     public void testSwipe() {
         launchTestActivity(UiObject2TestSwipeActivity.class);
 
-        // Avoid touching too close to the edges.
-        UiObject2 scrollView = mDevice.findObject(By.res(TEST_APP, "horizontal_scroll_view"));
-        scrollView.setGestureMargin(SCROLL_MARGIN);
+        UiObject2 swipeRegion = mDevice.findObject(By.res(TEST_APP, "swipe_region"));
+        swipeRegion.setGestureMargin(SCROLL_MARGIN);
 
-        // Initially at top left corner.
-        assertTrue(mDevice.hasObject(By.res(TEST_APP, "top_text")));
-        assertFalse(mDevice.hasObject(By.res(TEST_APP, "right_text")));
+        swipeRegion.swipe(Direction.LEFT, 0.5f);
+        assertEquals("swipe_left", swipeRegion.getText());
 
-        // Swipe left to right bound (5000px) within one swipe.
-        scrollView.swipe(Direction.LEFT, 1.0f);
-        assertFalse(mDevice.hasObject(By.res(TEST_APP, "top_text")));
-        assertTrue(mDevice.hasObject(By.res(TEST_APP, "right_text")));
+        swipeRegion.swipe(Direction.RIGHT, 1.0f);
+        assertEquals("swipe_right", swipeRegion.getText());
 
-        // Swipe right back to left bound (0px) within one swipe.
-        scrollView.swipe(Direction.RIGHT, 1.0f);
-        assertTrue(mDevice.hasObject(By.res(TEST_APP, "top_text")));
-        assertFalse(mDevice.hasObject(By.res(TEST_APP, "right_text")));
+        swipeRegion.swipe(Direction.UP, 0.5f, 1000);
+        assertEquals("swipe_up", swipeRegion.getText());
 
-        // Swipe up to bottom bound (5000px) within one swipe.
-        scrollView.swipe(Direction.UP, 1.0f, 10000);
-        assertFalse(mDevice.hasObject(By.res(TEST_APP, "top_text")));
-        assertTrue(mDevice.hasObject(By.res(TEST_APP, "bottom_text")));
-
-        // Swipe down back to top bound (0px) within one swipe.
-        scrollView.swipe(Direction.DOWN, 1.0f, 10000);
-        assertTrue(mDevice.hasObject(By.res(TEST_APP, "top_text")));
-        assertFalse(mDevice.hasObject(By.res(TEST_APP, "bottom_text")));
+        swipeRegion.swipe(Direction.DOWN, 1.0f, 1000);
+        assertEquals("swipe_down", swipeRegion.getText());
     }
 
     @Test
     public void testSwipe_throwsIllegalArgumentException() {
         launchTestActivity(UiObject2TestSwipeActivity.class);
 
-        UiObject2 scrollView = mDevice.findObject(By.res(TEST_APP, "horizontal_scroll_view"));
+        UiObject2 swipeRegion = mDevice.findObject(By.res(TEST_APP, "swipe_region"));
 
         assertThrows("Percent must be between 0.0f and 1.0f", IllegalArgumentException.class,
-                () -> scrollView.swipe(Direction.UP, 10.0f));
+                () -> swipeRegion.swipe(Direction.UP, 10.0f));
         assertThrows("Percent must be between 0.0f and 1.0f", IllegalArgumentException.class,
-                () -> scrollView.swipe(Direction.UP, -10.0f));
+                () -> swipeRegion.swipe(Direction.UP, -10.0f));
         assertThrows("Speed cannot be negative", IllegalArgumentException.class,
-                () -> scrollView.swipe(Direction.UP, 1.0f, -10));
+                () -> swipeRegion.swipe(Direction.UP, 1.0f, -10));
     }
 
     @Test
@@ -655,6 +643,56 @@
     }
 
     @Test
+    public void testFling_direction() {
+        launchTestActivity(UiObject2TestFlingActivity.class);
+
+        // Avoid touching too close to the edges.
+        UiObject2 flingRegion = mDevice.findObject(By.res(TEST_APP, "fling_region"));
+        flingRegion.setGestureMargin(SCROLL_MARGIN);
+
+        // No fling yet.
+        assertEquals("no_fling", flingRegion.getText());
+
+        while (flingRegion.fling(Direction.LEFT)) {
+            // Continue until left bound.
+        }
+        assertEquals("fling_left", flingRegion.getText());
+    }
+
+    @Test
+    public void testFling_directionAndSpeed() {
+        launchTestActivity(UiObject2TestFlingActivity.class);
+
+        // Avoid touching too close to the edges.
+        UiObject2 flingRegion = mDevice.findObject(By.res(TEST_APP, "fling_region"));
+        flingRegion.setGestureMargin(SCROLL_MARGIN);
+
+        // No fling yet.
+        assertEquals("no_fling", flingRegion.getText());
+
+        while (flingRegion.fling(Direction.UP, 5000)) {
+            // Continue until up bound.
+        }
+        assertEquals("fling_up", flingRegion.getText());
+    }
+
+    @Test
+    public void testFling_throwsIllegalArgumentException() {
+        launchTestActivity(UiObject2TestFlingActivity.class);
+
+        UiObject2 flingRegion = mDevice.findObject(By.res(TEST_APP, "fling_region"));
+
+        int speed =
+                ViewConfiguration.get(
+                        ApplicationProvider.getApplicationContext()).getScaledMinimumFlingVelocity()
+                        / 2;
+
+        assertThrows("Speed is less than the minimum fling velocity",
+                IllegalArgumentException.class,
+                () -> flingRegion.fling(Direction.DOWN, speed));
+    }
+
+    @Test
     public void testSetGestureMargin() {
         launchTestActivity(UiObject2TestPinchActivity.class);
 
@@ -722,14 +760,6 @@
         assertEquals("new_text", object.getText());
     }
 
-    /* TODO(b/235841473): Implement these tests
-    public void testFling() {}
-
-    public void testWaitForExists() {}
-
-    public void testWaitForGone() {}
-    */
-
     /* Helper method to get a point inside the object. */
     private Point getPointInsideBounds(UiObject2 obj) {
         Rect objBounds = obj.getVisibleBounds();
diff --git a/test/uiautomator/integration-tests/testapp/src/androidTest/java/androidx/test/uiautomator/testapp/UntilTest.java b/test/uiautomator/integration-tests/testapp/src/androidTest/java/androidx/test/uiautomator/testapp/UntilTest.java
index 61d537b..badd1b0 100644
--- a/test/uiautomator/integration-tests/testapp/src/androidTest/java/androidx/test/uiautomator/testapp/UntilTest.java
+++ b/test/uiautomator/integration-tests/testapp/src/androidTest/java/androidx/test/uiautomator/testapp/UntilTest.java
@@ -31,7 +31,11 @@
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
-/** Integration tests for {@link Until}. */
+/**
+ * Integration tests for {@link Until}, and related methods like
+ * {@link UiDevice#wait(SearchCondition, long)} and
+ * {@link UiObject2#wait(UiObject2Condition, long)}.
+ */
 @LargeTest
 public class UntilTest extends BaseTest {
 
diff --git a/test/uiautomator/integration-tests/testapp/src/main/AndroidManifest.xml b/test/uiautomator/integration-tests/testapp/src/main/AndroidManifest.xml
index b0af640..4b8365f 100644
--- a/test/uiautomator/integration-tests/testapp/src/main/AndroidManifest.xml
+++ b/test/uiautomator/integration-tests/testapp/src/main/AndroidManifest.xml
@@ -101,6 +101,13 @@
                 <action android:name="android.intent.action.MAIN" />
             </intent-filter>
         </activity>
+        <activity android:name=".UiObject2TestFlingActivity"
+            android:exported="true"
+            android:theme="@android:style/Theme.Holo.NoActionBar">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+            </intent-filter>
+        </activity>
         <activity android:name=".UiObject2TestIsEnabledActivity"
             android:exported="true"
             android:theme="@android:style/Theme.Holo.NoActionBar">
diff --git a/test/uiautomator/integration-tests/testapp/src/main/java/androidx/test/uiautomator/testapp/UiObject2TestFlingActivity.java b/test/uiautomator/integration-tests/testapp/src/main/java/androidx/test/uiautomator/testapp/UiObject2TestFlingActivity.java
new file mode 100644
index 0000000..8408cf4
--- /dev/null
+++ b/test/uiautomator/integration-tests/testapp/src/main/java/androidx/test/uiautomator/testapp/UiObject2TestFlingActivity.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.test.uiautomator.testapp;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.GestureDetector;
+import android.view.GestureDetector.SimpleOnGestureListener;
+import android.view.MotionEvent;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+
+public class UiObject2TestFlingActivity extends Activity {
+
+    private GestureDetector mGestureDetector;
+
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        setContentView(R.layout.uiobject2_testfling_activity);
+
+        TextView flingRegion = findViewById(R.id.fling_region);
+
+        mGestureDetector = new GestureDetector(this, new SimpleOnGestureListener() {
+            @Override
+            public boolean onFling(MotionEvent e1, MotionEvent e2, float vX, float vY) {
+                // Fling has an opposite direction of swipe.
+                boolean horizontal = Math.abs(vX) > Math.abs(vY);
+                if (horizontal) {
+                    flingRegion.setText(vX > 0 ? "fling_left" : "fling_right");
+                } else {
+                    flingRegion.setText(vY > 0 ? "fling_up" : "fling_down");
+                }
+
+                return true;
+            }
+        });
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        return mGestureDetector.onTouchEvent(event);
+    }
+}
diff --git a/test/uiautomator/integration-tests/testapp/src/main/java/androidx/test/uiautomator/testapp/UiObject2TestSwipeActivity.java b/test/uiautomator/integration-tests/testapp/src/main/java/androidx/test/uiautomator/testapp/UiObject2TestSwipeActivity.java
index 2f92cb5..ed36e65 100644
--- a/test/uiautomator/integration-tests/testapp/src/main/java/androidx/test/uiautomator/testapp/UiObject2TestSwipeActivity.java
+++ b/test/uiautomator/integration-tests/testapp/src/main/java/androidx/test/uiautomator/testapp/UiObject2TestSwipeActivity.java
@@ -18,15 +18,43 @@
 
 import android.app.Activity;
 import android.os.Bundle;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+import android.widget.TextView;
 
 import androidx.annotation.Nullable;
 
 public class UiObject2TestSwipeActivity extends Activity {
 
+    private GestureDetector mGestureDetector;
+
     @Override
     public void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
         setContentView(R.layout.uiobject2_testswipe_activity);
+
+        TextView swipeRegion = findViewById(R.id.swipe_region);
+
+        mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
+            @Override
+            public boolean onFling(MotionEvent e1, MotionEvent e2, float vX, float vY) {
+                // Swipe is using the same logic as fling, except that their directions are
+                // opposite under the same finger movement.
+                boolean horizontal = Math.abs(vX) > Math.abs(vY);
+                if (horizontal) {
+                    swipeRegion.setText(vX < 0 ? "swipe_left" : "swipe_right");
+                } else {
+                    swipeRegion.setText(vY < 0 ? "swipe_up" : "swipe_down");
+                }
+
+                return true;
+            }
+        });
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        return mGestureDetector.onTouchEvent(event);
     }
 }
diff --git a/test/uiautomator/integration-tests/testapp/src/main/res/layout/uiobject2_testfling_activity.xml b/test/uiautomator/integration-tests/testapp/src/main/res/layout/uiobject2_testfling_activity.xml
new file mode 100644
index 0000000..30ef223
--- /dev/null
+++ b/test/uiautomator/integration-tests/testapp/src/main/res/layout/uiobject2_testfling_activity.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    tools:context=".UiObject2TestFlingActivity">
+
+    <TextView
+        android:id="@+id/fling_region"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center"
+        android:text="no_fling" />
+
+</LinearLayout>
diff --git a/test/uiautomator/integration-tests/testapp/src/main/res/layout/uiobject2_testswipe_activity.xml b/test/uiautomator/integration-tests/testapp/src/main/res/layout/uiobject2_testswipe_activity.xml
index b9acb26..9da8334 100644
--- a/test/uiautomator/integration-tests/testapp/src/main/res/layout/uiobject2_testswipe_activity.xml
+++ b/test/uiautomator/integration-tests/testapp/src/main/res/layout/uiobject2_testswipe_activity.xml
@@ -20,45 +20,11 @@
     android:orientation="vertical"
     tools:context=".UiObject2TestSwipeActivity">
 
-    <HorizontalScrollView
-        android:id="@+id/horizontal_scroll_view"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content">
-
-        <ScrollView
-            android:id="@+id/vertical_scroll_view"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content">
-
-            <RelativeLayout
-                android:layout_width="5000px"
-                android:layout_height="5000px">
-
-                <TextView
-                    android:id="@+id/top_text"
-                    android:layout_width="wrap_content"
-                    android:layout_height="50px"
-                    android:layout_alignParentTop="true"
-                    android:text="This is the top" />
-
-                <TextView
-                    android:id="@+id/bottom_text"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_alignParentBottom="true"
-                    android:text="This is the bottom" />
-
-                <TextView
-                    android:id="@+id/right_text"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_alignParentRight="true"
-                    android:text="This is the right" />
-
-            </RelativeLayout>
-
-        </ScrollView>
-
-    </HorizontalScrollView>
+    <TextView
+        android:id="@+id/swipe_region"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center"
+        android:text="no_swipe" />
 
 </LinearLayout>
diff --git a/text/text/src/main/java/androidx/compose/ui/text/android/TextLayout.kt b/text/text/src/main/java/androidx/compose/ui/text/android/TextLayout.kt
index a0c1bdb..05883d7a 100644
--- a/text/text/src/main/java/androidx/compose/ui/text/android/TextLayout.kt
+++ b/text/text/src/main/java/androidx/compose/ui/text/android/TextLayout.kt
@@ -17,6 +17,7 @@
 
 import android.graphics.Canvas
 import android.graphics.Path
+import android.graphics.RectF
 import android.text.BoringLayout
 import android.text.Layout
 import android.text.Spanned
@@ -269,13 +270,23 @@
 
     fun getLineLeft(lineIndex: Int): Float = layout.getLineLeft(lineIndex)
 
+    /**
+     * Return the horizontal leftmost position of the line in pixels.
+     */
     fun getLineRight(lineIndex: Int): Float = layout.getLineRight(lineIndex)
 
+    /**
+     * Return the vertical position of the top of the line in pixels. If the line is equal to the
+     * line count, returns the bottom of the last line.
+     */
     fun getLineTop(line: Int): Float {
         val top = layout.getLineTop(line).toFloat()
         return top + if (line == 0) 0 else topPadding
     }
 
+    /**
+     * Return the vertical position of the bottom of the line in pixels.
+     */
     fun getLineBottom(line: Int): Float {
         return topPadding +
             layout.getLineBottom(line).toFloat() +
@@ -290,6 +301,9 @@
      */
     fun getLineAscent(line: Int): Float = layout.getLineAscent(line).toFloat()
 
+    /**
+     * Return the vertical position of the baseline of the line in pixels.
+     */
     fun getLineBaseline(line: Int): Float = topPadding + layout.getLineBaseline(line).toFloat()
 
     /**
@@ -302,10 +316,21 @@
 
     fun getLineHeight(lineIndex: Int): Float = getLineBottom(lineIndex) - getLineTop(lineIndex)
 
+    /**
+     * Return the width of the line in pixels.
+     */
     fun getLineWidth(lineIndex: Int): Float = layout.getLineWidth(lineIndex)
 
+    /**
+     * Return the text offset at the beginning of the line. If the line is equal to the line count,
+     * returns the length of the text.
+     */
     fun getLineStart(lineIndex: Int): Int = layout.getLineStart(lineIndex)
 
+    /**
+     * Return the text offset at the end of the line. If the line is equal to the line count,
+     * returns the length of the text.
+     */
     fun getLineEnd(lineIndex: Int): Int =
         if (layout.getEllipsisStart(lineIndex) == 0) { // no ellipsis
             layout.getLineEnd(lineIndex)
@@ -316,6 +341,10 @@
             layout.text.length
         }
 
+    /**
+     * Return the text offset after the last visible character on the specified line. For example
+     * whitespaces are not counted as visible characters.
+     */
     fun getLineVisibleEnd(lineIndex: Int): Int =
         if (layout.getEllipsisStart(lineIndex) == 0) { // no ellipsis
             layout.getLineVisibleEnd(lineIndex)
@@ -453,6 +482,44 @@
         }
     }
 
+    /**
+     * Returns the bounding box as Rect of the character for given character offset.
+     */
+    fun getBoundingBox(offset: Int): RectF {
+        // Although this function shares its core logic with [fillBoundingBoxes], there is no
+        // need to use a [HorizontalPositionCache]. Hence, [getBoundingBox] runs the same algorithm
+        // without using the cache. Any core logic change here or in [fillBoundingBoxes] should
+        // be reflected on the other.
+        val line = getLineForOffset(offset)
+        val lineTop = getLineTop(line)
+        val lineBottom = getLineBottom(line)
+
+        val isLtrLine = getParagraphDirection(line) == Layout.DIR_LEFT_TO_RIGHT
+        val isRtlChar = layout.isRtlCharAt(offset)
+
+        val left: Float
+        val right: Float
+        when {
+            isLtrLine && !isRtlChar -> {
+                left = getPrimaryHorizontal(offset, upstream = false)
+                right = getPrimaryHorizontal(offset + 1, upstream = true)
+            }
+            isLtrLine && isRtlChar -> {
+                right = getSecondaryHorizontal(offset, upstream = false)
+                left = getSecondaryHorizontal(offset + 1, upstream = true)
+            }
+            isRtlChar -> {
+                right = getPrimaryHorizontal(offset, upstream = false)
+                left = getPrimaryHorizontal(offset + 1, upstream = true)
+            }
+            else -> {
+                left = getSecondaryHorizontal(offset, upstream = false)
+                right = getSecondaryHorizontal(offset + 1, upstream = true)
+            }
+        }
+        return RectF(left, lineTop, right, lineBottom)
+    }
+
     fun paint(canvas: Canvas) {
         if (topPadding != 0) {
             canvas.translate(0f, topPadding.toFloat())
diff --git a/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/ScalingLazyListLayoutInfoTest.kt b/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/ScalingLazyListLayoutInfoTest.kt
index a6fbf74..f409c67 100644
--- a/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/ScalingLazyListLayoutInfoTest.kt
+++ b/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/ScalingLazyListLayoutInfoTest.kt
@@ -38,7 +38,6 @@
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.dp
 import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.FlakyTest
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.CoroutineScope
@@ -49,6 +48,7 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import kotlin.math.roundToInt
+import org.junit.Ignore
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
@@ -69,7 +69,7 @@
         }
     }
 
-    @FlakyTest // b/235531540
+    @Ignore("Awaiting fix for b/236217874")
     @Test
     fun visibleItemsAreCorrect() {
         lateinit var state: ScalingLazyListState
diff --git a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/ToggleChip.kt b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/ToggleChip.kt
index 7da5bcb..00c7412 100644
--- a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/ToggleChip.kt
+++ b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/ToggleChip.kt
@@ -191,17 +191,17 @@
                 label = label,
                 secondaryLabel = secondaryLabel,
             )
+            Spacer(
+                modifier = Modifier.size(
+                    ToggleChipDefaults.ToggleControlSpacing
+                )
+            )
             Box(
                 modifier = Modifier
                     .align(Alignment.CenterVertically)
-                    .width(36.dp)
+                    .width(24.dp)
                     .wrapContentWidth(align = Alignment.End)
             ) {
-                Spacer(
-                    modifier = Modifier.size(
-                        ToggleChipDefaults.ToggleControlSpacing
-                    )
-                )
                 CompositionLocalProvider(
                     LocalContentColor provides
                         colors.toggleControlColor(
diff --git a/work/work-runtime/src/main/java/androidx/work/package-info.java b/work/work-runtime/src/main/java/androidx/work/package-info.java
index ae4557b..6b589c7 100644
--- a/work/work-runtime/src/main/java/androidx/work/package-info.java
+++ b/work/work-runtime/src/main/java/androidx/work/package-info.java
@@ -54,9 +54,9 @@
  * <p>
  * <b>WorkManager and its Interactions with the OS</b>
  * <p>
- * WorkManager {@code BroadcastReceiver}s to monitor {@link androidx.work.Constraints} on devices
- * before API 23.  The BroadcastReceivers are disabled on API 23 and up.  In particular, WorkManager
- * listens to the following {@code Intent}s:
+ * WorkManager uses {@code BroadcastReceiver}s to monitor {@link androidx.work.Constraints} on
+ * devices before API 23.  The BroadcastReceivers are disabled on API 23 and up.  In particular,
+ * WorkManager listens to the following {@code Intent}s:
  * <p><ul>
  *     <li>{@code android.intent.action.ACTION_POWER_CONNECTED}</li>
  *     <li>{@code android.intent.action.ACTION_POWER_DISCONNECTED}</li>