diff --git a/annotation/annotation-experimental/api/current.txt b/annotation/annotation-experimental/api/current.txt
index 03452a5..ad5d811 100644
--- a/annotation/annotation-experimental/api/current.txt
+++ b/annotation/annotation-experimental/api/current.txt
@@ -12,8 +12,6 @@
   }
 
   public enum RequiresOptIn.Level {
-    method public static androidx.annotation.RequiresOptIn.Level valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.annotation.RequiresOptIn.Level[] values();
     enum_constant public static final androidx.annotation.RequiresOptIn.Level ERROR;
     enum_constant public static final androidx.annotation.RequiresOptIn.Level WARNING;
   }
@@ -28,8 +26,6 @@
   }
 
   @Deprecated public enum Experimental.Level {
-    method @Deprecated public static androidx.annotation.experimental.Experimental.Level valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method @Deprecated public static androidx.annotation.experimental.Experimental.Level[] values();
     enum_constant @Deprecated public static final androidx.annotation.experimental.Experimental.Level ERROR;
     enum_constant @Deprecated public static final androidx.annotation.experimental.Experimental.Level WARNING;
   }
diff --git a/annotation/annotation-experimental/api/restricted_current.txt b/annotation/annotation-experimental/api/restricted_current.txt
index 03452a5..ad5d811 100644
--- a/annotation/annotation-experimental/api/restricted_current.txt
+++ b/annotation/annotation-experimental/api/restricted_current.txt
@@ -12,8 +12,6 @@
   }
 
   public enum RequiresOptIn.Level {
-    method public static androidx.annotation.RequiresOptIn.Level valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.annotation.RequiresOptIn.Level[] values();
     enum_constant public static final androidx.annotation.RequiresOptIn.Level ERROR;
     enum_constant public static final androidx.annotation.RequiresOptIn.Level WARNING;
   }
@@ -28,8 +26,6 @@
   }
 
   @Deprecated public enum Experimental.Level {
-    method @Deprecated public static androidx.annotation.experimental.Experimental.Level valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method @Deprecated public static androidx.annotation.experimental.Experimental.Level[] values();
     enum_constant @Deprecated public static final androidx.annotation.experimental.Experimental.Level ERROR;
     enum_constant @Deprecated public static final androidx.annotation.experimental.Experimental.Level WARNING;
   }
diff --git a/annotation/annotation/api/current.txt b/annotation/annotation/api/current.txt
index b5d93db..dababc5 100644
--- a/annotation/annotation/api/current.txt
+++ b/annotation/annotation/api/current.txt
@@ -163,8 +163,6 @@
   }
 
   @Deprecated public enum InspectableProperty.ValueType {
-    method @Deprecated public static androidx.annotation.InspectableProperty.ValueType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method @Deprecated public static androidx.annotation.InspectableProperty.ValueType[] values();
     enum_constant @Deprecated public static final androidx.annotation.InspectableProperty.ValueType COLOR;
     enum_constant @Deprecated public static final androidx.annotation.InspectableProperty.ValueType GRAVITY;
     enum_constant @Deprecated public static final androidx.annotation.InspectableProperty.ValueType INFERRED;
@@ -300,8 +298,6 @@
   }
 
   public enum RestrictTo.Scope {
-    method public static androidx.annotation.RestrictTo.Scope valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.annotation.RestrictTo.Scope[] values();
     enum_constant @Deprecated public static final androidx.annotation.RestrictTo.Scope GROUP_ID;
     enum_constant public static final androidx.annotation.RestrictTo.Scope LIBRARY;
     enum_constant public static final androidx.annotation.RestrictTo.Scope LIBRARY_GROUP;
diff --git a/annotation/annotation/api/restricted_current.txt b/annotation/annotation/api/restricted_current.txt
index b5d93db..dababc5 100644
--- a/annotation/annotation/api/restricted_current.txt
+++ b/annotation/annotation/api/restricted_current.txt
@@ -163,8 +163,6 @@
   }
 
   @Deprecated public enum InspectableProperty.ValueType {
-    method @Deprecated public static androidx.annotation.InspectableProperty.ValueType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method @Deprecated public static androidx.annotation.InspectableProperty.ValueType[] values();
     enum_constant @Deprecated public static final androidx.annotation.InspectableProperty.ValueType COLOR;
     enum_constant @Deprecated public static final androidx.annotation.InspectableProperty.ValueType GRAVITY;
     enum_constant @Deprecated public static final androidx.annotation.InspectableProperty.ValueType INFERRED;
@@ -300,8 +298,6 @@
   }
 
   public enum RestrictTo.Scope {
-    method public static androidx.annotation.RestrictTo.Scope valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.annotation.RestrictTo.Scope[] values();
     enum_constant @Deprecated public static final androidx.annotation.RestrictTo.Scope GROUP_ID;
     enum_constant public static final androidx.annotation.RestrictTo.Scope LIBRARY;
     enum_constant public static final androidx.annotation.RestrictTo.Scope LIBRARY_GROUP;
diff --git a/benchmark/benchmark-macro/api/current.txt b/benchmark/benchmark-macro/api/current.txt
index 0bb3341..88e7474 100644
--- a/benchmark/benchmark-macro/api/current.txt
+++ b/benchmark/benchmark-macro/api/current.txt
@@ -2,8 +2,6 @@
 package androidx.benchmark.macro {
 
   public enum BaselineProfileMode {
-    method public static androidx.benchmark.macro.BaselineProfileMode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.benchmark.macro.BaselineProfileMode[] values();
     enum_constant public static final androidx.benchmark.macro.BaselineProfileMode Disable;
     enum_constant public static final androidx.benchmark.macro.BaselineProfileMode Require;
     enum_constant public static final androidx.benchmark.macro.BaselineProfileMode UseIfAvailable;
@@ -83,15 +81,11 @@
   }
 
   public enum MemoryUsageMetric.Mode {
-    method public static androidx.benchmark.macro.MemoryUsageMetric.Mode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.benchmark.macro.MemoryUsageMetric.Mode[] values();
     enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.Mode Last;
     enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.Mode Max;
   }
 
   public enum MemoryUsageMetric.SubMetric {
-    method public static androidx.benchmark.macro.MemoryUsageMetric.SubMetric valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.benchmark.macro.MemoryUsageMetric.SubMetric[] values();
     enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.SubMetric Gpu;
     enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.SubMetric HeapSize;
     enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.SubMetric RssAnon;
@@ -139,8 +133,6 @@
   }
 
   @SuppressCompatibility @androidx.benchmark.macro.ExperimentalMetricApi public enum PowerCategory {
-    method public static androidx.benchmark.macro.PowerCategory valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.benchmark.macro.PowerCategory[] values();
     enum_constant public static final androidx.benchmark.macro.PowerCategory CPU;
     enum_constant public static final androidx.benchmark.macro.PowerCategory DISPLAY;
     enum_constant public static final androidx.benchmark.macro.PowerCategory GPS;
@@ -152,8 +144,6 @@
   }
 
   @SuppressCompatibility @androidx.benchmark.macro.ExperimentalMetricApi public enum PowerCategoryDisplayLevel {
-    method public static androidx.benchmark.macro.PowerCategoryDisplayLevel valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.benchmark.macro.PowerCategoryDisplayLevel[] values();
     enum_constant public static final androidx.benchmark.macro.PowerCategoryDisplayLevel BREAKDOWN;
     enum_constant public static final androidx.benchmark.macro.PowerCategoryDisplayLevel TOTAL;
   }
@@ -191,8 +181,6 @@
   }
 
   public enum StartupMode {
-    method public static androidx.benchmark.macro.StartupMode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.benchmark.macro.StartupMode[] values();
     enum_constant public static final androidx.benchmark.macro.StartupMode COLD;
     enum_constant public static final androidx.benchmark.macro.StartupMode HOT;
     enum_constant public static final androidx.benchmark.macro.StartupMode WARM;
@@ -212,8 +200,6 @@
   }
 
   public enum TraceSectionMetric.Mode {
-    method public static androidx.benchmark.macro.TraceSectionMetric.Mode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.benchmark.macro.TraceSectionMetric.Mode[] values();
     enum_constant public static final androidx.benchmark.macro.TraceSectionMetric.Mode First;
     enum_constant public static final androidx.benchmark.macro.TraceSectionMetric.Mode Max;
     enum_constant public static final androidx.benchmark.macro.TraceSectionMetric.Mode Min;
diff --git a/benchmark/benchmark-macro/api/restricted_current.txt b/benchmark/benchmark-macro/api/restricted_current.txt
index b7caaa5..3ff3944 100644
--- a/benchmark/benchmark-macro/api/restricted_current.txt
+++ b/benchmark/benchmark-macro/api/restricted_current.txt
@@ -2,8 +2,6 @@
 package androidx.benchmark.macro {
 
   public enum BaselineProfileMode {
-    method public static androidx.benchmark.macro.BaselineProfileMode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.benchmark.macro.BaselineProfileMode[] values();
     enum_constant public static final androidx.benchmark.macro.BaselineProfileMode Disable;
     enum_constant public static final androidx.benchmark.macro.BaselineProfileMode Require;
     enum_constant public static final androidx.benchmark.macro.BaselineProfileMode UseIfAvailable;
@@ -96,15 +94,11 @@
   }
 
   public enum MemoryUsageMetric.Mode {
-    method public static androidx.benchmark.macro.MemoryUsageMetric.Mode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.benchmark.macro.MemoryUsageMetric.Mode[] values();
     enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.Mode Last;
     enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.Mode Max;
   }
 
   public enum MemoryUsageMetric.SubMetric {
-    method public static androidx.benchmark.macro.MemoryUsageMetric.SubMetric valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.benchmark.macro.MemoryUsageMetric.SubMetric[] values();
     enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.SubMetric Gpu;
     enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.SubMetric HeapSize;
     enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.SubMetric RssAnon;
@@ -152,8 +146,6 @@
   }
 
   @SuppressCompatibility @androidx.benchmark.macro.ExperimentalMetricApi public enum PowerCategory {
-    method public static androidx.benchmark.macro.PowerCategory valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.benchmark.macro.PowerCategory[] values();
     enum_constant public static final androidx.benchmark.macro.PowerCategory CPU;
     enum_constant public static final androidx.benchmark.macro.PowerCategory DISPLAY;
     enum_constant public static final androidx.benchmark.macro.PowerCategory GPS;
@@ -165,8 +157,6 @@
   }
 
   @SuppressCompatibility @androidx.benchmark.macro.ExperimentalMetricApi public enum PowerCategoryDisplayLevel {
-    method public static androidx.benchmark.macro.PowerCategoryDisplayLevel valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.benchmark.macro.PowerCategoryDisplayLevel[] values();
     enum_constant public static final androidx.benchmark.macro.PowerCategoryDisplayLevel BREAKDOWN;
     enum_constant public static final androidx.benchmark.macro.PowerCategoryDisplayLevel TOTAL;
   }
@@ -209,8 +199,6 @@
   }
 
   public enum StartupMode {
-    method public static androidx.benchmark.macro.StartupMode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.benchmark.macro.StartupMode[] values();
     enum_constant public static final androidx.benchmark.macro.StartupMode COLD;
     enum_constant public static final androidx.benchmark.macro.StartupMode HOT;
     enum_constant public static final androidx.benchmark.macro.StartupMode WARM;
@@ -234,8 +222,6 @@
   }
 
   public enum TraceSectionMetric.Mode {
-    method public static androidx.benchmark.macro.TraceSectionMetric.Mode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.benchmark.macro.TraceSectionMetric.Mode[] values();
     enum_constant public static final androidx.benchmark.macro.TraceSectionMetric.Mode First;
     enum_constant public static final androidx.benchmark.macro.TraceSectionMetric.Mode Max;
     enum_constant public static final androidx.benchmark.macro.TraceSectionMetric.Mode Min;
diff --git a/busytown/androidx_with_metalava.sh b/busytown/androidx_with_metalava.sh
index 98623e8..fa03981 100755
--- a/busytown/androidx_with_metalava.sh
+++ b/busytown/androidx_with_metalava.sh
@@ -4,7 +4,7 @@
 
 # Use this flag to temporarily disable `checkApi`
 # while landing Metalava w/ breaking API changes
-METALAVA_INTEGRATION_ENFORCED=false
+METALAVA_INTEGRATION_ENFORCED=true
 
 # The default targets to build if no arguments
 # are provided on the command line.
diff --git a/camera/camera-viewfinder-core/api/current.txt b/camera/camera-viewfinder-core/api/current.txt
index 5076d998..d2c393cd 100644
--- a/camera/camera-viewfinder-core/api/current.txt
+++ b/camera/camera-viewfinder-core/api/current.txt
@@ -2,8 +2,6 @@
 package @RequiresApi(21) androidx.camera.viewfinder.surface {
 
   public enum ImplementationMode {
-    method public static androidx.camera.viewfinder.surface.ImplementationMode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.camera.viewfinder.surface.ImplementationMode[] values();
     enum_constant public static final androidx.camera.viewfinder.surface.ImplementationMode COMPATIBLE;
     enum_constant public static final androidx.camera.viewfinder.surface.ImplementationMode PERFORMANCE;
     field public static final androidx.camera.viewfinder.surface.ImplementationMode.Companion Companion;
diff --git a/camera/camera-viewfinder-core/api/restricted_current.txt b/camera/camera-viewfinder-core/api/restricted_current.txt
index 5076d998..d2c393cd 100644
--- a/camera/camera-viewfinder-core/api/restricted_current.txt
+++ b/camera/camera-viewfinder-core/api/restricted_current.txt
@@ -2,8 +2,6 @@
 package @RequiresApi(21) androidx.camera.viewfinder.surface {
 
   public enum ImplementationMode {
-    method public static androidx.camera.viewfinder.surface.ImplementationMode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.camera.viewfinder.surface.ImplementationMode[] values();
     enum_constant public static final androidx.camera.viewfinder.surface.ImplementationMode COMPATIBLE;
     enum_constant public static final androidx.camera.viewfinder.surface.ImplementationMode PERFORMANCE;
     field public static final androidx.camera.viewfinder.surface.ImplementationMode.Companion Companion;
diff --git a/compose/animation/animation-core/api/current.txt b/compose/animation/animation-core/api/current.txt
index dea379c..1332abc 100644
--- a/compose/animation/animation-core/api/current.txt
+++ b/compose/animation/animation-core/api/current.txt
@@ -76,8 +76,6 @@
   }
 
   public enum AnimationEndReason {
-    method public static androidx.compose.animation.core.AnimationEndReason valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.animation.core.AnimationEndReason[] values();
     enum_constant public static final androidx.compose.animation.core.AnimationEndReason BoundReached;
     enum_constant public static final androidx.compose.animation.core.AnimationEndReason Finished;
   }
@@ -547,8 +545,6 @@
   }
 
   public enum RepeatMode {
-    method public static androidx.compose.animation.core.RepeatMode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.animation.core.RepeatMode[] values();
     enum_constant public static final androidx.compose.animation.core.RepeatMode Restart;
     enum_constant public static final androidx.compose.animation.core.RepeatMode Reverse;
   }
diff --git a/compose/animation/animation-core/api/restricted_current.txt b/compose/animation/animation-core/api/restricted_current.txt
index 4824942..17fd01b 100644
--- a/compose/animation/animation-core/api/restricted_current.txt
+++ b/compose/animation/animation-core/api/restricted_current.txt
@@ -76,8 +76,6 @@
   }
 
   public enum AnimationEndReason {
-    method public static androidx.compose.animation.core.AnimationEndReason valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.animation.core.AnimationEndReason[] values();
     enum_constant public static final androidx.compose.animation.core.AnimationEndReason BoundReached;
     enum_constant public static final androidx.compose.animation.core.AnimationEndReason Finished;
   }
@@ -547,8 +545,6 @@
   }
 
   public enum RepeatMode {
-    method public static androidx.compose.animation.core.RepeatMode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.animation.core.RepeatMode[] values();
     enum_constant public static final androidx.compose.animation.core.RepeatMode Restart;
     enum_constant public static final androidx.compose.animation.core.RepeatMode Reverse;
   }
diff --git a/compose/animation/animation-tooling-internal/api/current.txt b/compose/animation/animation-tooling-internal/api/current.txt
index 9a3915a..f0e5901 100644
--- a/compose/animation/animation-tooling-internal/api/current.txt
+++ b/compose/animation/animation-tooling-internal/api/current.txt
@@ -24,8 +24,6 @@
   }
 
   public enum ComposeAnimationType {
-    method public static androidx.compose.animation.tooling.ComposeAnimationType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.animation.tooling.ComposeAnimationType[] values();
     enum_constant public static final androidx.compose.animation.tooling.ComposeAnimationType ANIMATABLE;
     enum_constant public static final androidx.compose.animation.tooling.ComposeAnimationType ANIMATED_CONTENT;
     enum_constant public static final androidx.compose.animation.tooling.ComposeAnimationType ANIMATED_VALUE;
diff --git a/compose/animation/animation-tooling-internal/api/restricted_current.txt b/compose/animation/animation-tooling-internal/api/restricted_current.txt
index 9a3915a..f0e5901 100644
--- a/compose/animation/animation-tooling-internal/api/restricted_current.txt
+++ b/compose/animation/animation-tooling-internal/api/restricted_current.txt
@@ -24,8 +24,6 @@
   }
 
   public enum ComposeAnimationType {
-    method public static androidx.compose.animation.tooling.ComposeAnimationType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.animation.tooling.ComposeAnimationType[] values();
     enum_constant public static final androidx.compose.animation.tooling.ComposeAnimationType ANIMATABLE;
     enum_constant public static final androidx.compose.animation.tooling.ComposeAnimationType ANIMATED_CONTENT;
     enum_constant public static final androidx.compose.animation.tooling.ComposeAnimationType ANIMATED_VALUE;
diff --git a/compose/animation/animation/api/current.txt b/compose/animation/animation/api/current.txt
index 5662141..343fa22 100644
--- a/compose/animation/animation/api/current.txt
+++ b/compose/animation/animation/api/current.txt
@@ -90,8 +90,6 @@
   }
 
   @SuppressCompatibility @androidx.compose.animation.ExperimentalAnimationApi public enum EnterExitState {
-    method public static androidx.compose.animation.EnterExitState valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.animation.EnterExitState[] values();
     enum_constant public static final androidx.compose.animation.EnterExitState PostExit;
     enum_constant public static final androidx.compose.animation.EnterExitState PreEnter;
     enum_constant public static final androidx.compose.animation.EnterExitState Visible;
diff --git a/compose/animation/animation/api/restricted_current.txt b/compose/animation/animation/api/restricted_current.txt
index 5662141..343fa22 100644
--- a/compose/animation/animation/api/restricted_current.txt
+++ b/compose/animation/animation/api/restricted_current.txt
@@ -90,8 +90,6 @@
   }
 
   @SuppressCompatibility @androidx.compose.animation.ExperimentalAnimationApi public enum EnterExitState {
-    method public static androidx.compose.animation.EnterExitState valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.animation.EnterExitState[] values();
     enum_constant public static final androidx.compose.animation.EnterExitState PostExit;
     enum_constant public static final androidx.compose.animation.EnterExitState PreEnter;
     enum_constant public static final androidx.compose.animation.EnterExitState Visible;
diff --git a/compose/foundation/foundation-layout/api/current.txt b/compose/foundation/foundation-layout/api/current.txt
index 4009002..8e10a25 100644
--- a/compose/foundation/foundation-layout/api/current.txt
+++ b/compose/foundation/foundation-layout/api/current.txt
@@ -221,8 +221,6 @@
   }
 
   public enum IntrinsicSize {
-    method public static androidx.compose.foundation.layout.IntrinsicSize valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.foundation.layout.IntrinsicSize[] values();
     enum_constant public static final androidx.compose.foundation.layout.IntrinsicSize Max;
     enum_constant public static final androidx.compose.foundation.layout.IntrinsicSize Min;
   }
diff --git a/compose/foundation/foundation-layout/api/restricted_current.txt b/compose/foundation/foundation-layout/api/restricted_current.txt
index 672b14f..36af3e8 100644
--- a/compose/foundation/foundation-layout/api/restricted_current.txt
+++ b/compose/foundation/foundation-layout/api/restricted_current.txt
@@ -226,8 +226,6 @@
   }
 
   public enum IntrinsicSize {
-    method public static androidx.compose.foundation.layout.IntrinsicSize valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.foundation.layout.IntrinsicSize[] values();
     enum_constant public static final androidx.compose.foundation.layout.IntrinsicSize Max;
     enum_constant public static final androidx.compose.foundation.layout.IntrinsicSize Min;
   }
diff --git a/compose/foundation/foundation/api/current.txt b/compose/foundation/foundation/api/current.txt
index d5308722..779cc53 100644
--- a/compose/foundation/foundation/api/current.txt
+++ b/compose/foundation/foundation/api/current.txt
@@ -193,8 +193,6 @@
   }
 
   public enum MutatePriority {
-    method public static androidx.compose.foundation.MutatePriority valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.foundation.MutatePriority[] values();
     enum_constant public static final androidx.compose.foundation.MutatePriority Default;
     enum_constant public static final androidx.compose.foundation.MutatePriority PreventUserInput;
     enum_constant public static final androidx.compose.foundation.MutatePriority UserInput;
@@ -525,8 +523,6 @@
   }
 
   public enum Orientation {
-    method public static androidx.compose.foundation.gestures.Orientation valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.foundation.gestures.Orientation[] values();
     enum_constant public static final androidx.compose.foundation.gestures.Orientation Horizontal;
     enum_constant public static final androidx.compose.foundation.gestures.Orientation Vertical;
   }
diff --git a/compose/foundation/foundation/api/restricted_current.txt b/compose/foundation/foundation/api/restricted_current.txt
index 518cb43..ce3f019 100644
--- a/compose/foundation/foundation/api/restricted_current.txt
+++ b/compose/foundation/foundation/api/restricted_current.txt
@@ -193,8 +193,6 @@
   }
 
   public enum MutatePriority {
-    method public static androidx.compose.foundation.MutatePriority valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.foundation.MutatePriority[] values();
     enum_constant public static final androidx.compose.foundation.MutatePriority Default;
     enum_constant public static final androidx.compose.foundation.MutatePriority PreventUserInput;
     enum_constant public static final androidx.compose.foundation.MutatePriority UserInput;
@@ -527,8 +525,6 @@
   }
 
   public enum Orientation {
-    method public static androidx.compose.foundation.gestures.Orientation valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.foundation.gestures.Orientation[] values();
     enum_constant public static final androidx.compose.foundation.gestures.Orientation Horizontal;
     enum_constant public static final androidx.compose.foundation.gestures.Orientation Vertical;
   }
diff --git a/compose/material/material/api/current.txt b/compose/material/material/api/current.txt
index 87b9b57..4606989 100644
--- a/compose/material/material/api/current.txt
+++ b/compose/material/material/api/current.txt
@@ -83,8 +83,6 @@
   }
 
   public enum BackdropValue {
-    method public static androidx.compose.material.BackdropValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.BackdropValue[] values();
     enum_constant public static final androidx.compose.material.BackdropValue Concealed;
     enum_constant public static final androidx.compose.material.BackdropValue Revealed;
   }
@@ -122,8 +120,6 @@
   }
 
   public enum BottomDrawerValue {
-    method public static androidx.compose.material.BottomDrawerValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.BottomDrawerValue[] values();
     enum_constant public static final androidx.compose.material.BottomDrawerValue Closed;
     enum_constant public static final androidx.compose.material.BottomDrawerValue Expanded;
     enum_constant public static final androidx.compose.material.BottomDrawerValue Open;
@@ -191,8 +187,6 @@
   }
 
   public enum BottomSheetValue {
-    method public static androidx.compose.material.BottomSheetValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.BottomSheetValue[] values();
     enum_constant public static final androidx.compose.material.BottomSheetValue Collapsed;
     enum_constant public static final androidx.compose.material.BottomSheetValue Expanded;
   }
@@ -351,8 +345,6 @@
   }
 
   public enum DismissDirection {
-    method public static androidx.compose.material.DismissDirection valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.DismissDirection[] values();
     enum_constant public static final androidx.compose.material.DismissDirection EndToStart;
     enum_constant public static final androidx.compose.material.DismissDirection StartToEnd;
   }
@@ -372,8 +364,6 @@
   }
 
   public enum DismissValue {
-    method public static androidx.compose.material.DismissValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.DismissValue[] values();
     enum_constant public static final androidx.compose.material.DismissValue Default;
     enum_constant public static final androidx.compose.material.DismissValue DismissedToEnd;
     enum_constant public static final androidx.compose.material.DismissValue DismissedToStart;
@@ -425,8 +415,6 @@
   }
 
   public enum DrawerValue {
-    method public static androidx.compose.material.DrawerValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.DrawerValue[] values();
     enum_constant public static final androidx.compose.material.DrawerValue Closed;
     enum_constant public static final androidx.compose.material.DrawerValue Open;
   }
@@ -581,8 +569,6 @@
   }
 
   public enum ModalBottomSheetValue {
-    method public static androidx.compose.material.ModalBottomSheetValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.ModalBottomSheetValue[] values();
     enum_constant public static final androidx.compose.material.ModalBottomSheetValue Expanded;
     enum_constant public static final androidx.compose.material.ModalBottomSheetValue HalfExpanded;
     enum_constant public static final androidx.compose.material.ModalBottomSheetValue Hidden;
@@ -759,8 +745,6 @@
   }
 
   public enum SnackbarDuration {
-    method public static androidx.compose.material.SnackbarDuration valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.SnackbarDuration[] values();
     enum_constant public static final androidx.compose.material.SnackbarDuration Indefinite;
     enum_constant public static final androidx.compose.material.SnackbarDuration Long;
     enum_constant public static final androidx.compose.material.SnackbarDuration Short;
@@ -783,8 +767,6 @@
   }
 
   public enum SnackbarResult {
-    method public static androidx.compose.material.SnackbarResult valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.SnackbarResult[] values();
     enum_constant public static final androidx.compose.material.SnackbarResult ActionPerformed;
     enum_constant public static final androidx.compose.material.SnackbarResult Dismissed;
   }
diff --git a/compose/material/material/api/restricted_current.txt b/compose/material/material/api/restricted_current.txt
index 87b9b57..4606989 100644
--- a/compose/material/material/api/restricted_current.txt
+++ b/compose/material/material/api/restricted_current.txt
@@ -83,8 +83,6 @@
   }
 
   public enum BackdropValue {
-    method public static androidx.compose.material.BackdropValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.BackdropValue[] values();
     enum_constant public static final androidx.compose.material.BackdropValue Concealed;
     enum_constant public static final androidx.compose.material.BackdropValue Revealed;
   }
@@ -122,8 +120,6 @@
   }
 
   public enum BottomDrawerValue {
-    method public static androidx.compose.material.BottomDrawerValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.BottomDrawerValue[] values();
     enum_constant public static final androidx.compose.material.BottomDrawerValue Closed;
     enum_constant public static final androidx.compose.material.BottomDrawerValue Expanded;
     enum_constant public static final androidx.compose.material.BottomDrawerValue Open;
@@ -191,8 +187,6 @@
   }
 
   public enum BottomSheetValue {
-    method public static androidx.compose.material.BottomSheetValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.BottomSheetValue[] values();
     enum_constant public static final androidx.compose.material.BottomSheetValue Collapsed;
     enum_constant public static final androidx.compose.material.BottomSheetValue Expanded;
   }
@@ -351,8 +345,6 @@
   }
 
   public enum DismissDirection {
-    method public static androidx.compose.material.DismissDirection valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.DismissDirection[] values();
     enum_constant public static final androidx.compose.material.DismissDirection EndToStart;
     enum_constant public static final androidx.compose.material.DismissDirection StartToEnd;
   }
@@ -372,8 +364,6 @@
   }
 
   public enum DismissValue {
-    method public static androidx.compose.material.DismissValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.DismissValue[] values();
     enum_constant public static final androidx.compose.material.DismissValue Default;
     enum_constant public static final androidx.compose.material.DismissValue DismissedToEnd;
     enum_constant public static final androidx.compose.material.DismissValue DismissedToStart;
@@ -425,8 +415,6 @@
   }
 
   public enum DrawerValue {
-    method public static androidx.compose.material.DrawerValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.DrawerValue[] values();
     enum_constant public static final androidx.compose.material.DrawerValue Closed;
     enum_constant public static final androidx.compose.material.DrawerValue Open;
   }
@@ -581,8 +569,6 @@
   }
 
   public enum ModalBottomSheetValue {
-    method public static androidx.compose.material.ModalBottomSheetValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.ModalBottomSheetValue[] values();
     enum_constant public static final androidx.compose.material.ModalBottomSheetValue Expanded;
     enum_constant public static final androidx.compose.material.ModalBottomSheetValue HalfExpanded;
     enum_constant public static final androidx.compose.material.ModalBottomSheetValue Hidden;
@@ -759,8 +745,6 @@
   }
 
   public enum SnackbarDuration {
-    method public static androidx.compose.material.SnackbarDuration valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.SnackbarDuration[] values();
     enum_constant public static final androidx.compose.material.SnackbarDuration Indefinite;
     enum_constant public static final androidx.compose.material.SnackbarDuration Long;
     enum_constant public static final androidx.compose.material.SnackbarDuration Short;
@@ -783,8 +767,6 @@
   }
 
   public enum SnackbarResult {
-    method public static androidx.compose.material.SnackbarResult valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material.SnackbarResult[] values();
     enum_constant public static final androidx.compose.material.SnackbarResult ActionPerformed;
     enum_constant public static final androidx.compose.material.SnackbarResult Dismissed;
   }
diff --git a/compose/material3/adaptive/adaptive-layout/api/current.txt b/compose/material3/adaptive/adaptive-layout/api/current.txt
index 34e7c93..f1636b4 100644
--- a/compose/material3/adaptive/adaptive-layout/api/current.txt
+++ b/compose/material3/adaptive/adaptive-layout/api/current.txt
@@ -126,8 +126,6 @@
   }
 
   @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public enum ThreePaneScaffoldRole {
-    method public static androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole[] values();
     enum_constant public static final androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole Primary;
     enum_constant public static final androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole Secondary;
     enum_constant public static final androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole Tertiary;
diff --git a/compose/material3/adaptive/adaptive-layout/api/restricted_current.txt b/compose/material3/adaptive/adaptive-layout/api/restricted_current.txt
index 34e7c93..f1636b4 100644
--- a/compose/material3/adaptive/adaptive-layout/api/restricted_current.txt
+++ b/compose/material3/adaptive/adaptive-layout/api/restricted_current.txt
@@ -126,8 +126,6 @@
   }
 
   @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public enum ThreePaneScaffoldRole {
-    method public static androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole[] values();
     enum_constant public static final androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole Primary;
     enum_constant public static final androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole Secondary;
     enum_constant public static final androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole Tertiary;
diff --git a/compose/material3/adaptive/adaptive-navigation/api/current.txt b/compose/material3/adaptive/adaptive-navigation/api/current.txt
index f3c507c..0744ac2 100644
--- a/compose/material3/adaptive/adaptive-navigation/api/current.txt
+++ b/compose/material3/adaptive/adaptive-navigation/api/current.txt
@@ -2,8 +2,6 @@
 package androidx.compose.material3.adaptive.navigation {
 
   @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public enum BackNavigationBehavior {
-    method public static androidx.compose.material3.adaptive.navigation.BackNavigationBehavior valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material3.adaptive.navigation.BackNavigationBehavior[] values();
     enum_constant public static final androidx.compose.material3.adaptive.navigation.BackNavigationBehavior PopLatest;
     enum_constant public static final androidx.compose.material3.adaptive.navigation.BackNavigationBehavior PopUntilContentChange;
     enum_constant public static final androidx.compose.material3.adaptive.navigation.BackNavigationBehavior PopUntilCurrentDestinationChange;
diff --git a/compose/material3/adaptive/adaptive-navigation/api/restricted_current.txt b/compose/material3/adaptive/adaptive-navigation/api/restricted_current.txt
index f3c507c..0744ac2 100644
--- a/compose/material3/adaptive/adaptive-navigation/api/restricted_current.txt
+++ b/compose/material3/adaptive/adaptive-navigation/api/restricted_current.txt
@@ -2,8 +2,6 @@
 package androidx.compose.material3.adaptive.navigation {
 
   @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public enum BackNavigationBehavior {
-    method public static androidx.compose.material3.adaptive.navigation.BackNavigationBehavior valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material3.adaptive.navigation.BackNavigationBehavior[] values();
     enum_constant public static final androidx.compose.material3.adaptive.navigation.BackNavigationBehavior PopLatest;
     enum_constant public static final androidx.compose.material3.adaptive.navigation.BackNavigationBehavior PopUntilContentChange;
     enum_constant public static final androidx.compose.material3.adaptive.navigation.BackNavigationBehavior PopUntilCurrentDestinationChange;
diff --git a/compose/material3/material3/api/current.txt b/compose/material3/material3/api/current.txt
index 16c0ca6..0aa6aa4 100644
--- a/compose/material3/material3/api/current.txt
+++ b/compose/material3/material3/api/current.txt
@@ -623,15 +623,11 @@
   }
 
   @Deprecated @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api public enum DismissDirection {
-    method @Deprecated public static androidx.compose.material3.DismissDirection valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method @Deprecated public static androidx.compose.material3.DismissDirection[] values();
     enum_constant @Deprecated public static final androidx.compose.material3.DismissDirection EndToStart;
     enum_constant @Deprecated public static final androidx.compose.material3.DismissDirection StartToEnd;
   }
 
   @Deprecated @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api public enum DismissValue {
-    method @Deprecated public static androidx.compose.material3.DismissValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method @Deprecated public static androidx.compose.material3.DismissValue[] values();
     enum_constant @Deprecated public static final androidx.compose.material3.DismissValue Default;
     enum_constant @Deprecated public static final androidx.compose.material3.DismissValue DismissedToEnd;
     enum_constant @Deprecated public static final androidx.compose.material3.DismissValue DismissedToStart;
@@ -710,8 +706,6 @@
   }
 
   public enum DrawerValue {
-    method public static androidx.compose.material3.DrawerValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material3.DrawerValue[] values();
     enum_constant public static final androidx.compose.material3.DrawerValue Closed;
     enum_constant public static final androidx.compose.material3.DrawerValue Open;
   }
@@ -1453,8 +1447,6 @@
   }
 
   @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api public enum SheetValue {
-    method public static androidx.compose.material3.SheetValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material3.SheetValue[] values();
     enum_constant public static final androidx.compose.material3.SheetValue Expanded;
     enum_constant public static final androidx.compose.material3.SheetValue Hidden;
     enum_constant public static final androidx.compose.material3.SheetValue PartiallyExpanded;
@@ -1556,8 +1548,6 @@
   }
 
   public enum SnackbarDuration {
-    method public static androidx.compose.material3.SnackbarDuration valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material3.SnackbarDuration[] values();
     enum_constant public static final androidx.compose.material3.SnackbarDuration Indefinite;
     enum_constant public static final androidx.compose.material3.SnackbarDuration Long;
     enum_constant public static final androidx.compose.material3.SnackbarDuration Short;
@@ -1581,8 +1571,6 @@
   }
 
   public enum SnackbarResult {
-    method public static androidx.compose.material3.SnackbarResult valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material3.SnackbarResult[] values();
     enum_constant public static final androidx.compose.material3.SnackbarResult ActionPerformed;
     enum_constant public static final androidx.compose.material3.SnackbarResult Dismissed;
   }
@@ -1660,8 +1648,6 @@
   }
 
   @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api public enum SwipeToDismissBoxValue {
-    method public static androidx.compose.material3.SwipeToDismissBoxValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material3.SwipeToDismissBoxValue[] values();
     enum_constant public static final androidx.compose.material3.SwipeToDismissBoxValue EndToStart;
     enum_constant public static final androidx.compose.material3.SwipeToDismissBoxValue Settled;
     enum_constant public static final androidx.compose.material3.SwipeToDismissBoxValue StartToEnd;
diff --git a/compose/material3/material3/api/restricted_current.txt b/compose/material3/material3/api/restricted_current.txt
index 16c0ca6..0aa6aa4 100644
--- a/compose/material3/material3/api/restricted_current.txt
+++ b/compose/material3/material3/api/restricted_current.txt
@@ -623,15 +623,11 @@
   }
 
   @Deprecated @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api public enum DismissDirection {
-    method @Deprecated public static androidx.compose.material3.DismissDirection valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method @Deprecated public static androidx.compose.material3.DismissDirection[] values();
     enum_constant @Deprecated public static final androidx.compose.material3.DismissDirection EndToStart;
     enum_constant @Deprecated public static final androidx.compose.material3.DismissDirection StartToEnd;
   }
 
   @Deprecated @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api public enum DismissValue {
-    method @Deprecated public static androidx.compose.material3.DismissValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method @Deprecated public static androidx.compose.material3.DismissValue[] values();
     enum_constant @Deprecated public static final androidx.compose.material3.DismissValue Default;
     enum_constant @Deprecated public static final androidx.compose.material3.DismissValue DismissedToEnd;
     enum_constant @Deprecated public static final androidx.compose.material3.DismissValue DismissedToStart;
@@ -710,8 +706,6 @@
   }
 
   public enum DrawerValue {
-    method public static androidx.compose.material3.DrawerValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material3.DrawerValue[] values();
     enum_constant public static final androidx.compose.material3.DrawerValue Closed;
     enum_constant public static final androidx.compose.material3.DrawerValue Open;
   }
@@ -1453,8 +1447,6 @@
   }
 
   @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api public enum SheetValue {
-    method public static androidx.compose.material3.SheetValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material3.SheetValue[] values();
     enum_constant public static final androidx.compose.material3.SheetValue Expanded;
     enum_constant public static final androidx.compose.material3.SheetValue Hidden;
     enum_constant public static final androidx.compose.material3.SheetValue PartiallyExpanded;
@@ -1556,8 +1548,6 @@
   }
 
   public enum SnackbarDuration {
-    method public static androidx.compose.material3.SnackbarDuration valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material3.SnackbarDuration[] values();
     enum_constant public static final androidx.compose.material3.SnackbarDuration Indefinite;
     enum_constant public static final androidx.compose.material3.SnackbarDuration Long;
     enum_constant public static final androidx.compose.material3.SnackbarDuration Short;
@@ -1581,8 +1571,6 @@
   }
 
   public enum SnackbarResult {
-    method public static androidx.compose.material3.SnackbarResult valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material3.SnackbarResult[] values();
     enum_constant public static final androidx.compose.material3.SnackbarResult ActionPerformed;
     enum_constant public static final androidx.compose.material3.SnackbarResult Dismissed;
   }
@@ -1660,8 +1648,6 @@
   }
 
   @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api public enum SwipeToDismissBoxValue {
-    method public static androidx.compose.material3.SwipeToDismissBoxValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.material3.SwipeToDismissBoxValue[] values();
     enum_constant public static final androidx.compose.material3.SwipeToDismissBoxValue EndToStart;
     enum_constant public static final androidx.compose.material3.SwipeToDismissBoxValue Settled;
     enum_constant public static final androidx.compose.material3.SwipeToDismissBoxValue StartToEnd;
diff --git a/compose/runtime/runtime/api/current.txt b/compose/runtime/runtime/api/current.txt
index ea7cfa6..9b26e4b4 100644
--- a/compose/runtime/runtime/api/current.txt
+++ b/compose/runtime/runtime/api/current.txt
@@ -518,8 +518,6 @@
   }
 
   public enum Recomposer.State {
-    method public static androidx.compose.runtime.Recomposer.State valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.runtime.Recomposer.State[] values();
     enum_constant public static final androidx.compose.runtime.Recomposer.State Idle;
     enum_constant public static final androidx.compose.runtime.Recomposer.State Inactive;
     enum_constant public static final androidx.compose.runtime.Recomposer.State InactivePendingWork;
diff --git a/compose/runtime/runtime/api/restricted_current.txt b/compose/runtime/runtime/api/restricted_current.txt
index 5a5621f..e8028b1 100644
--- a/compose/runtime/runtime/api/restricted_current.txt
+++ b/compose/runtime/runtime/api/restricted_current.txt
@@ -550,8 +550,6 @@
   }
 
   public enum Recomposer.State {
-    method public static androidx.compose.runtime.Recomposer.State valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.runtime.Recomposer.State[] values();
     enum_constant public static final androidx.compose.runtime.Recomposer.State Idle;
     enum_constant public static final androidx.compose.runtime.Recomposer.State Inactive;
     enum_constant public static final androidx.compose.runtime.Recomposer.State InactivePendingWork;
diff --git a/compose/ui/ui-graphics/api/current.txt b/compose/ui/ui-graphics/api/current.txt
index 13cb10c..53c4ae6 100644
--- a/compose/ui/ui-graphics/api/current.txt
+++ b/compose/ui/ui-graphics/api/current.txt
@@ -689,8 +689,6 @@
   }
 
   public enum Path.Direction {
-    method public static androidx.compose.ui.graphics.Path.Direction valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.graphics.Path.Direction[] values();
     enum_constant public static final androidx.compose.ui.graphics.Path.Direction Clockwise;
     enum_constant public static final androidx.compose.ui.graphics.Path.Direction CounterClockwise;
   }
@@ -746,8 +744,6 @@
   }
 
   public enum PathIterator.ConicEvaluation {
-    method public static androidx.compose.ui.graphics.PathIterator.ConicEvaluation valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.graphics.PathIterator.ConicEvaluation[] values();
     enum_constant public static final androidx.compose.ui.graphics.PathIterator.ConicEvaluation AsConic;
     enum_constant public static final androidx.compose.ui.graphics.PathIterator.ConicEvaluation AsQuadratics;
   }
@@ -800,8 +796,6 @@
   }
 
   public enum PathSegment.Type {
-    method public static androidx.compose.ui.graphics.PathSegment.Type valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.graphics.PathSegment.Type[] values();
     enum_constant public static final androidx.compose.ui.graphics.PathSegment.Type Close;
     enum_constant public static final androidx.compose.ui.graphics.PathSegment.Type Conic;
     enum_constant public static final androidx.compose.ui.graphics.PathSegment.Type Cubic;
diff --git a/compose/ui/ui-graphics/api/restricted_current.txt b/compose/ui/ui-graphics/api/restricted_current.txt
index c32c383..e57466d 100644
--- a/compose/ui/ui-graphics/api/restricted_current.txt
+++ b/compose/ui/ui-graphics/api/restricted_current.txt
@@ -760,8 +760,6 @@
   }
 
   public enum Path.Direction {
-    method public static androidx.compose.ui.graphics.Path.Direction valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.graphics.Path.Direction[] values();
     enum_constant public static final androidx.compose.ui.graphics.Path.Direction Clockwise;
     enum_constant public static final androidx.compose.ui.graphics.Path.Direction CounterClockwise;
   }
@@ -817,8 +815,6 @@
   }
 
   public enum PathIterator.ConicEvaluation {
-    method public static androidx.compose.ui.graphics.PathIterator.ConicEvaluation valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.graphics.PathIterator.ConicEvaluation[] values();
     enum_constant public static final androidx.compose.ui.graphics.PathIterator.ConicEvaluation AsConic;
     enum_constant public static final androidx.compose.ui.graphics.PathIterator.ConicEvaluation AsQuadratics;
   }
@@ -871,8 +867,6 @@
   }
 
   public enum PathSegment.Type {
-    method public static androidx.compose.ui.graphics.PathSegment.Type valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.graphics.PathSegment.Type[] values();
     enum_constant public static final androidx.compose.ui.graphics.PathSegment.Type Close;
     enum_constant public static final androidx.compose.ui.graphics.PathSegment.Type Conic;
     enum_constant public static final androidx.compose.ui.graphics.PathSegment.Type Cubic;
diff --git a/compose/ui/ui-text/api/current.txt b/compose/ui/ui-text/api/current.txt
index 2c23f05..c7ddf27 100644
--- a/compose/ui/ui-text/api/current.txt
+++ b/compose/ui/ui-text/api/current.txt
@@ -1465,8 +1465,6 @@
   }
 
   public enum ResolvedTextDirection {
-    method public static androidx.compose.ui.text.style.ResolvedTextDirection valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.text.style.ResolvedTextDirection[] values();
     enum_constant public static final androidx.compose.ui.text.style.ResolvedTextDirection Ltr;
     enum_constant public static final androidx.compose.ui.text.style.ResolvedTextDirection Rtl;
   }
diff --git a/compose/ui/ui-text/api/restricted_current.txt b/compose/ui/ui-text/api/restricted_current.txt
index d12b6e4..9ced870 100644
--- a/compose/ui/ui-text/api/restricted_current.txt
+++ b/compose/ui/ui-text/api/restricted_current.txt
@@ -1476,8 +1476,6 @@
   }
 
   public enum ResolvedTextDirection {
-    method public static androidx.compose.ui.text.style.ResolvedTextDirection valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.text.style.ResolvedTextDirection[] values();
     enum_constant public static final androidx.compose.ui.text.style.ResolvedTextDirection Ltr;
     enum_constant public static final androidx.compose.ui.text.style.ResolvedTextDirection Rtl;
   }
diff --git a/compose/ui/ui-unit/api/current.txt b/compose/ui/ui-unit/api/current.txt
index f63f600..4b63f95 100644
--- a/compose/ui/ui-unit/api/current.txt
+++ b/compose/ui/ui-unit/api/current.txt
@@ -328,8 +328,6 @@
   }
 
   public enum LayoutDirection {
-    method public static androidx.compose.ui.unit.LayoutDirection valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.unit.LayoutDirection[] values();
     enum_constant public static final androidx.compose.ui.unit.LayoutDirection Ltr;
     enum_constant public static final androidx.compose.ui.unit.LayoutDirection Rtl;
   }
diff --git a/compose/ui/ui-unit/api/restricted_current.txt b/compose/ui/ui-unit/api/restricted_current.txt
index a02b992..2f0dd28 100644
--- a/compose/ui/ui-unit/api/restricted_current.txt
+++ b/compose/ui/ui-unit/api/restricted_current.txt
@@ -328,8 +328,6 @@
   }
 
   public enum LayoutDirection {
-    method public static androidx.compose.ui.unit.LayoutDirection valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.unit.LayoutDirection[] values();
     enum_constant public static final androidx.compose.ui.unit.LayoutDirection Ltr;
     enum_constant public static final androidx.compose.ui.unit.LayoutDirection Rtl;
   }
diff --git a/compose/ui/ui/api/current.txt b/compose/ui/ui/api/current.txt
index fba2b3a..a9eff8a 100644
--- a/compose/ui/ui/api/current.txt
+++ b/compose/ui/ui/api/current.txt
@@ -209,8 +209,6 @@
   }
 
   @SuppressCompatibility @androidx.compose.ui.ExperimentalComposeUiApi public enum AutofillType {
-    method public static androidx.compose.ui.autofill.AutofillType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.autofill.AutofillType[] values();
     enum_constant public static final androidx.compose.ui.autofill.AutofillType AddressAuxiliaryDetails;
     enum_constant public static final androidx.compose.ui.autofill.AutofillType AddressCountry;
     enum_constant public static final androidx.compose.ui.autofill.AutofillType AddressLocality;
@@ -1769,8 +1767,6 @@
   }
 
   public enum PointerEventPass {
-    method public static androidx.compose.ui.input.pointer.PointerEventPass valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.input.pointer.PointerEventPass[] values();
     enum_constant public static final androidx.compose.ui.input.pointer.PointerEventPass Final;
     enum_constant public static final androidx.compose.ui.input.pointer.PointerEventPass Initial;
     enum_constant public static final androidx.compose.ui.input.pointer.PointerEventPass Main;
@@ -2714,8 +2710,6 @@
   }
 
   public enum TraversableNode.Companion.TraverseDescendantsAction {
-    method public static androidx.compose.ui.node.TraversableNode.Companion.TraverseDescendantsAction valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.node.TraversableNode.Companion.TraverseDescendantsAction[] values();
     enum_constant public static final androidx.compose.ui.node.TraversableNode.Companion.TraverseDescendantsAction CancelTraversal;
     enum_constant public static final androidx.compose.ui.node.TraversableNode.Companion.TraverseDescendantsAction ContinueTraversal;
     enum_constant public static final androidx.compose.ui.node.TraversableNode.Companion.TraverseDescendantsAction SkipSubtreeAndContinueTraversal;
@@ -3001,8 +2995,6 @@
   }
 
   public enum TextToolbarStatus {
-    method public static androidx.compose.ui.platform.TextToolbarStatus valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.platform.TextToolbarStatus[] values();
     enum_constant public static final androidx.compose.ui.platform.TextToolbarStatus Hidden;
     enum_constant public static final androidx.compose.ui.platform.TextToolbarStatus Shown;
   }
@@ -3603,8 +3595,6 @@
 package androidx.compose.ui.state {
 
   public enum ToggleableState {
-    method public static androidx.compose.ui.state.ToggleableState valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.state.ToggleableState[] values();
     enum_constant public static final androidx.compose.ui.state.ToggleableState Indeterminate;
     enum_constant public static final androidx.compose.ui.state.ToggleableState Off;
     enum_constant public static final androidx.compose.ui.state.ToggleableState On;
@@ -3694,8 +3684,6 @@
   }
 
   public enum SecureFlagPolicy {
-    method public static androidx.compose.ui.window.SecureFlagPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.window.SecureFlagPolicy[] values();
     enum_constant public static final androidx.compose.ui.window.SecureFlagPolicy Inherit;
     enum_constant public static final androidx.compose.ui.window.SecureFlagPolicy SecureOff;
     enum_constant public static final androidx.compose.ui.window.SecureFlagPolicy SecureOn;
diff --git a/compose/ui/ui/api/restricted_current.txt b/compose/ui/ui/api/restricted_current.txt
index a2c012d..d95c62c 100644
--- a/compose/ui/ui/api/restricted_current.txt
+++ b/compose/ui/ui/api/restricted_current.txt
@@ -209,8 +209,6 @@
   }
 
   @SuppressCompatibility @androidx.compose.ui.ExperimentalComposeUiApi public enum AutofillType {
-    method public static androidx.compose.ui.autofill.AutofillType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.autofill.AutofillType[] values();
     enum_constant public static final androidx.compose.ui.autofill.AutofillType AddressAuxiliaryDetails;
     enum_constant public static final androidx.compose.ui.autofill.AutofillType AddressCountry;
     enum_constant public static final androidx.compose.ui.autofill.AutofillType AddressLocality;
@@ -1769,8 +1767,6 @@
   }
 
   public enum PointerEventPass {
-    method public static androidx.compose.ui.input.pointer.PointerEventPass valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.input.pointer.PointerEventPass[] values();
     enum_constant public static final androidx.compose.ui.input.pointer.PointerEventPass Final;
     enum_constant public static final androidx.compose.ui.input.pointer.PointerEventPass Initial;
     enum_constant public static final androidx.compose.ui.input.pointer.PointerEventPass Main;
@@ -2767,8 +2763,6 @@
   }
 
   public enum TraversableNode.Companion.TraverseDescendantsAction {
-    method public static androidx.compose.ui.node.TraversableNode.Companion.TraverseDescendantsAction valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.node.TraversableNode.Companion.TraverseDescendantsAction[] values();
     enum_constant public static final androidx.compose.ui.node.TraversableNode.Companion.TraverseDescendantsAction CancelTraversal;
     enum_constant public static final androidx.compose.ui.node.TraversableNode.Companion.TraverseDescendantsAction ContinueTraversal;
     enum_constant public static final androidx.compose.ui.node.TraversableNode.Companion.TraverseDescendantsAction SkipSubtreeAndContinueTraversal;
@@ -3059,8 +3053,6 @@
   }
 
   public enum TextToolbarStatus {
-    method public static androidx.compose.ui.platform.TextToolbarStatus valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.platform.TextToolbarStatus[] values();
     enum_constant public static final androidx.compose.ui.platform.TextToolbarStatus Hidden;
     enum_constant public static final androidx.compose.ui.platform.TextToolbarStatus Shown;
   }
@@ -3663,8 +3655,6 @@
 package androidx.compose.ui.state {
 
   public enum ToggleableState {
-    method public static androidx.compose.ui.state.ToggleableState valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.state.ToggleableState[] values();
     enum_constant public static final androidx.compose.ui.state.ToggleableState Indeterminate;
     enum_constant public static final androidx.compose.ui.state.ToggleableState Off;
     enum_constant public static final androidx.compose.ui.state.ToggleableState On;
@@ -3754,8 +3744,6 @@
   }
 
   public enum SecureFlagPolicy {
-    method public static androidx.compose.ui.window.SecureFlagPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.compose.ui.window.SecureFlagPolicy[] values();
     enum_constant public static final androidx.compose.ui.window.SecureFlagPolicy Inherit;
     enum_constant public static final androidx.compose.ui.window.SecureFlagPolicy SecureOff;
     enum_constant public static final androidx.compose.ui.window.SecureFlagPolicy SecureOn;
diff --git a/constraintlayout/constraintlayout-compose/api/current.txt b/constraintlayout/constraintlayout-compose/api/current.txt
index 5863f7a..73c8f6c 100644
--- a/constraintlayout/constraintlayout-compose/api/current.txt
+++ b/constraintlayout/constraintlayout-compose/api/current.txt
@@ -606,8 +606,6 @@
   }
 
   public enum LayoutInfoFlags {
-    method public static androidx.constraintlayout.compose.LayoutInfoFlags valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.constraintlayout.compose.LayoutInfoFlags[] values();
     enum_constant public static final androidx.constraintlayout.compose.LayoutInfoFlags BOUNDS;
     enum_constant public static final androidx.constraintlayout.compose.LayoutInfoFlags NONE;
   }
@@ -647,16 +645,12 @@
   }
 
   public enum MotionLayoutDebugFlags {
-    method public static androidx.constraintlayout.compose.MotionLayoutDebugFlags valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.constraintlayout.compose.MotionLayoutDebugFlags[] values();
     enum_constant public static final androidx.constraintlayout.compose.MotionLayoutDebugFlags NONE;
     enum_constant public static final androidx.constraintlayout.compose.MotionLayoutDebugFlags SHOW_ALL;
     enum_constant public static final androidx.constraintlayout.compose.MotionLayoutDebugFlags UNKNOWN;
   }
 
   @Deprecated public enum MotionLayoutFlag {
-    method @Deprecated public static androidx.constraintlayout.compose.MotionLayoutFlag valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method @Deprecated public static androidx.constraintlayout.compose.MotionLayoutFlag[] values();
     enum_constant @Deprecated public static final androidx.constraintlayout.compose.MotionLayoutFlag Default;
     enum_constant @Deprecated public static final androidx.constraintlayout.compose.MotionLayoutFlag FullMeasure;
   }
diff --git a/constraintlayout/constraintlayout-compose/api/restricted_current.txt b/constraintlayout/constraintlayout-compose/api/restricted_current.txt
index 2f01664..05078ff 100644
--- a/constraintlayout/constraintlayout-compose/api/restricted_current.txt
+++ b/constraintlayout/constraintlayout-compose/api/restricted_current.txt
@@ -53,8 +53,6 @@
   }
 
   @kotlin.PublishedApi internal enum CompositionSource {
-    method public static androidx.constraintlayout.compose.CompositionSource valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.constraintlayout.compose.CompositionSource[] values();
     enum_constant public static final androidx.constraintlayout.compose.CompositionSource Content;
     enum_constant public static final androidx.constraintlayout.compose.CompositionSource Unknown;
   }
@@ -655,8 +653,6 @@
   }
 
   public enum LayoutInfoFlags {
-    method public static androidx.constraintlayout.compose.LayoutInfoFlags valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.constraintlayout.compose.LayoutInfoFlags[] values();
     enum_constant public static final androidx.constraintlayout.compose.LayoutInfoFlags BOUNDS;
     enum_constant public static final androidx.constraintlayout.compose.LayoutInfoFlags NONE;
   }
@@ -730,16 +726,12 @@
   }
 
   public enum MotionLayoutDebugFlags {
-    method public static androidx.constraintlayout.compose.MotionLayoutDebugFlags valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.constraintlayout.compose.MotionLayoutDebugFlags[] values();
     enum_constant public static final androidx.constraintlayout.compose.MotionLayoutDebugFlags NONE;
     enum_constant public static final androidx.constraintlayout.compose.MotionLayoutDebugFlags SHOW_ALL;
     enum_constant public static final androidx.constraintlayout.compose.MotionLayoutDebugFlags UNKNOWN;
   }
 
   @Deprecated public enum MotionLayoutFlag {
-    method @Deprecated public static androidx.constraintlayout.compose.MotionLayoutFlag valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method @Deprecated public static androidx.constraintlayout.compose.MotionLayoutFlag[] values();
     enum_constant @Deprecated public static final androidx.constraintlayout.compose.MotionLayoutFlag Default;
     enum_constant @Deprecated public static final androidx.constraintlayout.compose.MotionLayoutFlag FullMeasure;
   }
diff --git a/glance/glance-template/api/current.txt b/glance/glance-template/api/current.txt
index 98082dc..ad3e3e3 100644
--- a/glance/glance-template/api/current.txt
+++ b/glance/glance-template/api/current.txt
@@ -202,8 +202,6 @@
   }
 
   public enum TemplateMode {
-    method public static androidx.glance.template.TemplateMode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.glance.template.TemplateMode[] values();
     enum_constant public static final androidx.glance.template.TemplateMode Collapsed;
     enum_constant public static final androidx.glance.template.TemplateMode Horizontal;
     enum_constant public static final androidx.glance.template.TemplateMode Vertical;
diff --git a/glance/glance-template/api/restricted_current.txt b/glance/glance-template/api/restricted_current.txt
index 98082dc..ad3e3e3 100644
--- a/glance/glance-template/api/restricted_current.txt
+++ b/glance/glance-template/api/restricted_current.txt
@@ -202,8 +202,6 @@
   }
 
   public enum TemplateMode {
-    method public static androidx.glance.template.TemplateMode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.glance.template.TemplateMode[] values();
     enum_constant public static final androidx.glance.template.TemplateMode Collapsed;
     enum_constant public static final androidx.glance.template.TemplateMode Horizontal;
     enum_constant public static final androidx.glance.template.TemplateMode Vertical;
diff --git a/glance/glance/api/current.txt b/glance/glance/api/current.txt
index dd31b97..d7d9a71 100644
--- a/glance/glance/api/current.txt
+++ b/glance/glance/api/current.txt
@@ -109,8 +109,6 @@
   }
 
   public enum Visibility {
-    method public static androidx.glance.Visibility valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.glance.Visibility[] values();
     enum_constant public static final androidx.glance.Visibility Gone;
     enum_constant public static final androidx.glance.Visibility Invisible;
     enum_constant public static final androidx.glance.Visibility Visible;
diff --git a/glance/glance/api/restricted_current.txt b/glance/glance/api/restricted_current.txt
index dd31b97..d7d9a71 100644
--- a/glance/glance/api/restricted_current.txt
+++ b/glance/glance/api/restricted_current.txt
@@ -109,8 +109,6 @@
   }
 
   public enum Visibility {
-    method public static androidx.glance.Visibility valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.glance.Visibility[] values();
     enum_constant public static final androidx.glance.Visibility Gone;
     enum_constant public static final androidx.glance.Visibility Invisible;
     enum_constant public static final androidx.glance.Visibility Visible;
diff --git a/graphics/graphics-path/api/current.txt b/graphics/graphics-path/api/current.txt
index 461614b..36803b6 100644
--- a/graphics/graphics-path/api/current.txt
+++ b/graphics/graphics-path/api/current.txt
@@ -18,8 +18,6 @@
   }
 
   public enum PathIterator.ConicEvaluation {
-    method public static androidx.graphics.path.PathIterator.ConicEvaluation valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.graphics.path.PathIterator.ConicEvaluation[] values();
     enum_constant public static final androidx.graphics.path.PathIterator.ConicEvaluation AsConic;
     enum_constant public static final androidx.graphics.path.PathIterator.ConicEvaluation AsQuadratics;
   }
@@ -34,8 +32,6 @@
   }
 
   public enum PathSegment.Type {
-    method public static androidx.graphics.path.PathSegment.Type valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.graphics.path.PathSegment.Type[] values();
     enum_constant public static final androidx.graphics.path.PathSegment.Type Close;
     enum_constant public static final androidx.graphics.path.PathSegment.Type Conic;
     enum_constant public static final androidx.graphics.path.PathSegment.Type Cubic;
diff --git a/graphics/graphics-path/api/restricted_current.txt b/graphics/graphics-path/api/restricted_current.txt
index 461614b..36803b6 100644
--- a/graphics/graphics-path/api/restricted_current.txt
+++ b/graphics/graphics-path/api/restricted_current.txt
@@ -18,8 +18,6 @@
   }
 
   public enum PathIterator.ConicEvaluation {
-    method public static androidx.graphics.path.PathIterator.ConicEvaluation valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.graphics.path.PathIterator.ConicEvaluation[] values();
     enum_constant public static final androidx.graphics.path.PathIterator.ConicEvaluation AsConic;
     enum_constant public static final androidx.graphics.path.PathIterator.ConicEvaluation AsQuadratics;
   }
@@ -34,8 +32,6 @@
   }
 
   public enum PathSegment.Type {
-    method public static androidx.graphics.path.PathSegment.Type valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.graphics.path.PathSegment.Type[] values();
     enum_constant public static final androidx.graphics.path.PathSegment.Type Close;
     enum_constant public static final androidx.graphics.path.PathSegment.Type Conic;
     enum_constant public static final androidx.graphics.path.PathSegment.Type Cubic;
diff --git a/lifecycle/lifecycle-common/api/current.txt b/lifecycle/lifecycle-common/api/current.txt
index b3a4ae8..404bc70 100644
--- a/lifecycle/lifecycle-common/api/current.txt
+++ b/lifecycle/lifecycle-common/api/current.txt
@@ -26,8 +26,6 @@
     method public androidx.lifecycle.Lifecycle.State getTargetState();
     method public static androidx.lifecycle.Lifecycle.Event? upFrom(androidx.lifecycle.Lifecycle.State state);
     method public static androidx.lifecycle.Lifecycle.Event? upTo(androidx.lifecycle.Lifecycle.State state);
-    method public static androidx.lifecycle.Lifecycle.Event valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.lifecycle.Lifecycle.Event[] values();
     property public final androidx.lifecycle.Lifecycle.State targetState;
     enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_ANY;
     enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_CREATE;
@@ -48,8 +46,6 @@
 
   public enum Lifecycle.State {
     method public boolean isAtLeast(androidx.lifecycle.Lifecycle.State state);
-    method public static androidx.lifecycle.Lifecycle.State valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.lifecycle.Lifecycle.State[] values();
     enum_constant public static final androidx.lifecycle.Lifecycle.State CREATED;
     enum_constant public static final androidx.lifecycle.Lifecycle.State DESTROYED;
     enum_constant public static final androidx.lifecycle.Lifecycle.State INITIALIZED;
diff --git a/lifecycle/lifecycle-common/api/restricted_current.txt b/lifecycle/lifecycle-common/api/restricted_current.txt
index 029f798..313f175 100644
--- a/lifecycle/lifecycle-common/api/restricted_current.txt
+++ b/lifecycle/lifecycle-common/api/restricted_current.txt
@@ -33,8 +33,6 @@
     method public androidx.lifecycle.Lifecycle.State getTargetState();
     method public static androidx.lifecycle.Lifecycle.Event? upFrom(androidx.lifecycle.Lifecycle.State state);
     method public static androidx.lifecycle.Lifecycle.Event? upTo(androidx.lifecycle.Lifecycle.State state);
-    method public static androidx.lifecycle.Lifecycle.Event valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.lifecycle.Lifecycle.Event[] values();
     property public final androidx.lifecycle.Lifecycle.State targetState;
     enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_ANY;
     enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_CREATE;
@@ -55,8 +53,6 @@
 
   public enum Lifecycle.State {
     method public boolean isAtLeast(androidx.lifecycle.Lifecycle.State state);
-    method public static androidx.lifecycle.Lifecycle.State valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.lifecycle.Lifecycle.State[] values();
     enum_constant public static final androidx.lifecycle.Lifecycle.State CREATED;
     enum_constant public static final androidx.lifecycle.Lifecycle.State DESTROYED;
     enum_constant public static final androidx.lifecycle.Lifecycle.State INITIALIZED;
diff --git a/paging/paging-common/api/current.txt b/paging/paging-common/api/current.txt
index 149fe1c..92ade99 100644
--- a/paging/paging-common/api/current.txt
+++ b/paging/paging-common/api/current.txt
@@ -149,8 +149,6 @@
   }
 
   public enum LoadType {
-    method public static androidx.paging.LoadType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.paging.LoadType[] values();
     enum_constant public static final androidx.paging.LoadType APPEND;
     enum_constant public static final androidx.paging.LoadType PREPEND;
     enum_constant public static final androidx.paging.LoadType REFRESH;
@@ -583,8 +581,6 @@
   }
 
   public enum RemoteMediator.InitializeAction {
-    method public static androidx.paging.RemoteMediator.InitializeAction valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.paging.RemoteMediator.InitializeAction[] values();
     enum_constant public static final androidx.paging.RemoteMediator.InitializeAction LAUNCH_INITIAL_REFRESH;
     enum_constant public static final androidx.paging.RemoteMediator.InitializeAction SKIP_INITIAL_REFRESH;
   }
@@ -605,8 +601,6 @@
   }
 
   public enum TerminalSeparatorType {
-    method public static androidx.paging.TerminalSeparatorType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.paging.TerminalSeparatorType[] values();
     enum_constant public static final androidx.paging.TerminalSeparatorType FULLY_COMPLETE;
     enum_constant public static final androidx.paging.TerminalSeparatorType SOURCE_COMPLETE;
   }
diff --git a/paging/paging-common/api/restricted_current.txt b/paging/paging-common/api/restricted_current.txt
index 149fe1c..92ade99 100644
--- a/paging/paging-common/api/restricted_current.txt
+++ b/paging/paging-common/api/restricted_current.txt
@@ -149,8 +149,6 @@
   }
 
   public enum LoadType {
-    method public static androidx.paging.LoadType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.paging.LoadType[] values();
     enum_constant public static final androidx.paging.LoadType APPEND;
     enum_constant public static final androidx.paging.LoadType PREPEND;
     enum_constant public static final androidx.paging.LoadType REFRESH;
@@ -583,8 +581,6 @@
   }
 
   public enum RemoteMediator.InitializeAction {
-    method public static androidx.paging.RemoteMediator.InitializeAction valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.paging.RemoteMediator.InitializeAction[] values();
     enum_constant public static final androidx.paging.RemoteMediator.InitializeAction LAUNCH_INITIAL_REFRESH;
     enum_constant public static final androidx.paging.RemoteMediator.InitializeAction SKIP_INITIAL_REFRESH;
   }
@@ -605,8 +601,6 @@
   }
 
   public enum TerminalSeparatorType {
-    method public static androidx.paging.TerminalSeparatorType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.paging.TerminalSeparatorType[] values();
     enum_constant public static final androidx.paging.TerminalSeparatorType FULLY_COMPLETE;
     enum_constant public static final androidx.paging.TerminalSeparatorType SOURCE_COMPLETE;
   }
diff --git a/paging/paging-testing/api/current.txt b/paging/paging-testing/api/current.txt
index ed16206..44bcd15 100644
--- a/paging/paging-testing/api/current.txt
+++ b/paging/paging-testing/api/current.txt
@@ -2,8 +2,6 @@
 package androidx.paging.testing {
 
   @VisibleForTesting public enum ErrorRecovery {
-    method public static androidx.paging.testing.ErrorRecovery valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.paging.testing.ErrorRecovery[] values();
     enum_constant public static final androidx.paging.testing.ErrorRecovery RETRY;
     enum_constant public static final androidx.paging.testing.ErrorRecovery RETURN_CURRENT_SNAPSHOT;
     enum_constant public static final androidx.paging.testing.ErrorRecovery THROW;
diff --git a/paging/paging-testing/api/restricted_current.txt b/paging/paging-testing/api/restricted_current.txt
index ed16206..44bcd15 100644
--- a/paging/paging-testing/api/restricted_current.txt
+++ b/paging/paging-testing/api/restricted_current.txt
@@ -2,8 +2,6 @@
 package androidx.paging.testing {
 
   @VisibleForTesting public enum ErrorRecovery {
-    method public static androidx.paging.testing.ErrorRecovery valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.paging.testing.ErrorRecovery[] values();
     enum_constant public static final androidx.paging.testing.ErrorRecovery RETRY;
     enum_constant public static final androidx.paging.testing.ErrorRecovery RETURN_CURRENT_SNAPSHOT;
     enum_constant public static final androidx.paging.testing.ErrorRecovery THROW;
diff --git a/playground-common/playground.properties b/playground-common/playground.properties
index a84291e..73ec740 100644
--- a/playground-common/playground.properties
+++ b/playground-common/playground.properties
@@ -26,5 +26,5 @@
 # Disable docs
 androidx.enableDocumentation=false
 androidx.playground.snapshotBuildId=11349412
-androidx.playground.metalavaBuildId=11484016
+androidx.playground.metalavaBuildId=11484042
 androidx.studio.type=playground
\ No newline at end of file
diff --git a/room/room-common/api/current.txt b/room/room-common/api/current.txt
index f4e229c..15d620b 100644
--- a/room/room-common/api/current.txt
+++ b/room/room-common/api/current.txt
@@ -20,8 +20,6 @@
   }
 
   public enum BuiltInTypeConverters.State {
-    method public static androidx.room.BuiltInTypeConverters.State valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.BuiltInTypeConverters.State[] values();
     enum_constant public static final androidx.room.BuiltInTypeConverters.State DISABLED;
     enum_constant public static final androidx.room.BuiltInTypeConverters.State ENABLED;
     enum_constant public static final androidx.room.BuiltInTypeConverters.State INHERITED;
@@ -213,15 +211,11 @@
   }
 
   public enum FtsOptions.MatchInfo {
-    method public static androidx.room.FtsOptions.MatchInfo valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.FtsOptions.MatchInfo[] values();
     enum_constant public static final androidx.room.FtsOptions.MatchInfo FTS3;
     enum_constant public static final androidx.room.FtsOptions.MatchInfo FTS4;
   }
 
   public enum FtsOptions.Order {
-    method public static androidx.room.FtsOptions.Order valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.FtsOptions.Order[] values();
     enum_constant public static final androidx.room.FtsOptions.Order ASC;
     enum_constant public static final androidx.room.FtsOptions.Order DESC;
   }
@@ -241,8 +235,6 @@
   }
 
   public enum Index.Order {
-    method public static androidx.room.Index.Order valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.Index.Order[] values();
     enum_constant public static final androidx.room.Index.Order ASC;
     enum_constant public static final androidx.room.Index.Order DESC;
   }
diff --git a/room/room-common/api/restricted_current.txt b/room/room-common/api/restricted_current.txt
index 4accc75d2..a618b5c 100644
--- a/room/room-common/api/restricted_current.txt
+++ b/room/room-common/api/restricted_current.txt
@@ -20,8 +20,6 @@
   }
 
   public enum BuiltInTypeConverters.State {
-    method public static androidx.room.BuiltInTypeConverters.State valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.BuiltInTypeConverters.State[] values();
     enum_constant public static final androidx.room.BuiltInTypeConverters.State DISABLED;
     enum_constant public static final androidx.room.BuiltInTypeConverters.State ENABLED;
     enum_constant public static final androidx.room.BuiltInTypeConverters.State INHERITED;
@@ -213,15 +211,11 @@
   }
 
   public enum FtsOptions.MatchInfo {
-    method public static androidx.room.FtsOptions.MatchInfo valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.FtsOptions.MatchInfo[] values();
     enum_constant public static final androidx.room.FtsOptions.MatchInfo FTS3;
     enum_constant public static final androidx.room.FtsOptions.MatchInfo FTS4;
   }
 
   public enum FtsOptions.Order {
-    method public static androidx.room.FtsOptions.Order valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.FtsOptions.Order[] values();
     enum_constant public static final androidx.room.FtsOptions.Order ASC;
     enum_constant public static final androidx.room.FtsOptions.Order DESC;
   }
@@ -241,8 +235,6 @@
   }
 
   public enum Index.Order {
-    method public static androidx.room.Index.Order valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.Index.Order[] values();
     enum_constant public static final androidx.room.Index.Order ASC;
     enum_constant public static final androidx.room.Index.Order DESC;
   }
diff --git a/room/room-runtime/api/current.txt b/room/room-runtime/api/current.txt
index bd860e33..ea9e7f4 100644
--- a/room/room-runtime/api/current.txt
+++ b/room/room-runtime/api/current.txt
@@ -140,8 +140,6 @@
   }
 
   public enum RoomDatabase.JournalMode {
-    method public static androidx.room.RoomDatabase.JournalMode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.RoomDatabase.JournalMode[] values();
     enum_constant public static final androidx.room.RoomDatabase.JournalMode AUTOMATIC;
     enum_constant public static final androidx.room.RoomDatabase.JournalMode TRUNCATE;
     enum_constant public static final androidx.room.RoomDatabase.JournalMode WRITE_AHEAD_LOGGING;
@@ -184,8 +182,6 @@
   }
 
   public enum Transactor.SQLiteTransactionType {
-    method public static androidx.room.Transactor.SQLiteTransactionType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.Transactor.SQLiteTransactionType[] values();
     enum_constant public static final androidx.room.Transactor.SQLiteTransactionType DEFERRED;
     enum_constant public static final androidx.room.Transactor.SQLiteTransactionType EXCLUSIVE;
     enum_constant public static final androidx.room.Transactor.SQLiteTransactionType IMMEDIATE;
diff --git a/room/room-runtime/api/restricted_current.txt b/room/room-runtime/api/restricted_current.txt
index 4f16737..83b3113 100644
--- a/room/room-runtime/api/restricted_current.txt
+++ b/room/room-runtime/api/restricted_current.txt
@@ -215,8 +215,6 @@
   }
 
   public enum RoomDatabase.JournalMode {
-    method public static androidx.room.RoomDatabase.JournalMode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.RoomDatabase.JournalMode[] values();
     enum_constant public static final androidx.room.RoomDatabase.JournalMode AUTOMATIC;
     enum_constant public static final androidx.room.RoomDatabase.JournalMode TRUNCATE;
     enum_constant public static final androidx.room.RoomDatabase.JournalMode WRITE_AHEAD_LOGGING;
@@ -332,8 +330,6 @@
   }
 
   public enum Transactor.SQLiteTransactionType {
-    method public static androidx.room.Transactor.SQLiteTransactionType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.Transactor.SQLiteTransactionType[] values();
     enum_constant public static final androidx.room.Transactor.SQLiteTransactionType DEFERRED;
     enum_constant public static final androidx.room.Transactor.SQLiteTransactionType EXCLUSIVE;
     enum_constant public static final androidx.room.Transactor.SQLiteTransactionType IMMEDIATE;
diff --git a/tv/tv-foundation/api/current.txt b/tv/tv-foundation/api/current.txt
index b8d7cc7..e73c12d 100644
--- a/tv/tv-foundation/api/current.txt
+++ b/tv/tv-foundation/api/current.txt
@@ -260,8 +260,6 @@
 
   @SuppressCompatibility @androidx.tv.foundation.ExperimentalTvFoundationApi public enum TvKeyboardAlignment {
     method public String? getOption();
-    method public static androidx.tv.foundation.text.TvKeyboardAlignment valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.tv.foundation.text.TvKeyboardAlignment[] values();
     property public final String? option;
     enum_constant public static final androidx.tv.foundation.text.TvKeyboardAlignment Center;
     enum_constant public static final androidx.tv.foundation.text.TvKeyboardAlignment Fullscreen;
diff --git a/tv/tv-foundation/api/restricted_current.txt b/tv/tv-foundation/api/restricted_current.txt
index b8d7cc7..e73c12d 100644
--- a/tv/tv-foundation/api/restricted_current.txt
+++ b/tv/tv-foundation/api/restricted_current.txt
@@ -260,8 +260,6 @@
 
   @SuppressCompatibility @androidx.tv.foundation.ExperimentalTvFoundationApi public enum TvKeyboardAlignment {
     method public String? getOption();
-    method public static androidx.tv.foundation.text.TvKeyboardAlignment valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.tv.foundation.text.TvKeyboardAlignment[] values();
     property public final String? option;
     enum_constant public static final androidx.tv.foundation.text.TvKeyboardAlignment Center;
     enum_constant public static final androidx.tv.foundation.text.TvKeyboardAlignment Fullscreen;
diff --git a/tv/tv-material/api/current.txt b/tv/tv-material/api/current.txt
index 736293f..c051ced 100644
--- a/tv/tv-material/api/current.txt
+++ b/tv/tv-material/api/current.txt
@@ -320,8 +320,6 @@
   }
 
   @SuppressCompatibility @androidx.tv.material3.ExperimentalTvMaterial3Api public enum DrawerValue {
-    method public static androidx.tv.material3.DrawerValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.tv.material3.DrawerValue[] values();
     enum_constant public static final androidx.tv.material3.DrawerValue Closed;
     enum_constant public static final androidx.tv.material3.DrawerValue Open;
   }
diff --git a/tv/tv-material/api/restricted_current.txt b/tv/tv-material/api/restricted_current.txt
index 736293f..c051ced 100644
--- a/tv/tv-material/api/restricted_current.txt
+++ b/tv/tv-material/api/restricted_current.txt
@@ -320,8 +320,6 @@
   }
 
   @SuppressCompatibility @androidx.tv.material3.ExperimentalTvMaterial3Api public enum DrawerValue {
-    method public static androidx.tv.material3.DrawerValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.tv.material3.DrawerValue[] values();
     enum_constant public static final androidx.tv.material3.DrawerValue Closed;
     enum_constant public static final androidx.tv.material3.DrawerValue Open;
   }
diff --git a/wear/compose/compose-foundation/api/current.txt b/wear/compose/compose-foundation/api/current.txt
index 7746e7e..9cd59ac 100644
--- a/wear/compose/compose-foundation/api/current.txt
+++ b/wear/compose/compose-foundation/api/current.txt
@@ -312,15 +312,11 @@
   }
 
   public enum SwipeToDismissKeys {
-    method public static androidx.wear.compose.foundation.SwipeToDismissKeys valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.compose.foundation.SwipeToDismissKeys[] values();
     enum_constant public static final androidx.wear.compose.foundation.SwipeToDismissKeys Background;
     enum_constant public static final androidx.wear.compose.foundation.SwipeToDismissKeys Content;
   }
 
   public enum SwipeToDismissValue {
-    method public static androidx.wear.compose.foundation.SwipeToDismissValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.compose.foundation.SwipeToDismissValue[] values();
     enum_constant public static final androidx.wear.compose.foundation.SwipeToDismissValue Default;
     enum_constant public static final androidx.wear.compose.foundation.SwipeToDismissValue Dismissed;
   }
diff --git a/wear/compose/compose-foundation/api/restricted_current.txt b/wear/compose/compose-foundation/api/restricted_current.txt
index 7746e7e..9cd59ac 100644
--- a/wear/compose/compose-foundation/api/restricted_current.txt
+++ b/wear/compose/compose-foundation/api/restricted_current.txt
@@ -312,15 +312,11 @@
   }
 
   public enum SwipeToDismissKeys {
-    method public static androidx.wear.compose.foundation.SwipeToDismissKeys valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.compose.foundation.SwipeToDismissKeys[] values();
     enum_constant public static final androidx.wear.compose.foundation.SwipeToDismissKeys Background;
     enum_constant public static final androidx.wear.compose.foundation.SwipeToDismissKeys Content;
   }
 
   public enum SwipeToDismissValue {
-    method public static androidx.wear.compose.foundation.SwipeToDismissValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.compose.foundation.SwipeToDismissValue[] values();
     enum_constant public static final androidx.wear.compose.foundation.SwipeToDismissValue Default;
     enum_constant public static final androidx.wear.compose.foundation.SwipeToDismissValue Dismissed;
   }
diff --git a/wear/compose/compose-material/api/current.txt b/wear/compose/compose-material/api/current.txt
index 79d5d48..94cdf76 100644
--- a/wear/compose/compose-material/api/current.txt
+++ b/wear/compose/compose-material/api/current.txt
@@ -703,15 +703,11 @@
   }
 
   public enum SwipeToDismissKeys {
-    method public static androidx.wear.compose.material.SwipeToDismissKeys valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.compose.material.SwipeToDismissKeys[] values();
     enum_constant public static final androidx.wear.compose.material.SwipeToDismissKeys Background;
     enum_constant public static final androidx.wear.compose.material.SwipeToDismissKeys Content;
   }
 
   @Deprecated public enum SwipeToDismissValue {
-    method @Deprecated public static androidx.wear.compose.material.SwipeToDismissValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method @Deprecated public static androidx.wear.compose.material.SwipeToDismissValue[] values();
     enum_constant @Deprecated public static final androidx.wear.compose.material.SwipeToDismissValue Default;
     enum_constant @Deprecated public static final androidx.wear.compose.material.SwipeToDismissValue Dismissed;
   }
diff --git a/wear/compose/compose-material/api/restricted_current.txt b/wear/compose/compose-material/api/restricted_current.txt
index 79d5d48..94cdf76 100644
--- a/wear/compose/compose-material/api/restricted_current.txt
+++ b/wear/compose/compose-material/api/restricted_current.txt
@@ -703,15 +703,11 @@
   }
 
   public enum SwipeToDismissKeys {
-    method public static androidx.wear.compose.material.SwipeToDismissKeys valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.compose.material.SwipeToDismissKeys[] values();
     enum_constant public static final androidx.wear.compose.material.SwipeToDismissKeys Background;
     enum_constant public static final androidx.wear.compose.material.SwipeToDismissKeys Content;
   }
 
   @Deprecated public enum SwipeToDismissValue {
-    method @Deprecated public static androidx.wear.compose.material.SwipeToDismissValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method @Deprecated public static androidx.wear.compose.material.SwipeToDismissValue[] values();
     enum_constant @Deprecated public static final androidx.wear.compose.material.SwipeToDismissValue Default;
     enum_constant @Deprecated public static final androidx.wear.compose.material.SwipeToDismissValue Dismissed;
   }
diff --git a/wear/watchface/watchface-complications-data/api/current.txt b/wear/watchface/watchface-complications-data/api/current.txt
index 1740d3f..9ea522a 100644
--- a/wear/watchface/watchface-complications-data/api/current.txt
+++ b/wear/watchface/watchface-complications-data/api/current.txt
@@ -60,8 +60,6 @@
   }
 
   public enum ComplicationType {
-    method public static androidx.wear.watchface.complications.data.ComplicationType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.watchface.complications.data.ComplicationType[] values();
     enum_constant public static final androidx.wear.watchface.complications.data.ComplicationType EMPTY;
     enum_constant @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public static final androidx.wear.watchface.complications.data.ComplicationType GOAL_PROGRESS;
     enum_constant public static final androidx.wear.watchface.complications.data.ComplicationType LONG_TEXT;
@@ -451,8 +449,6 @@
   }
 
   public enum SmallImageType {
-    method public static androidx.wear.watchface.complications.data.SmallImageType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.watchface.complications.data.SmallImageType[] values();
     enum_constant public static final androidx.wear.watchface.complications.data.SmallImageType ICON;
     enum_constant public static final androidx.wear.watchface.complications.data.SmallImageType PHOTO;
   }
@@ -475,8 +471,6 @@
   }
 
   public enum TimeDifferenceStyle {
-    method public static androidx.wear.watchface.complications.data.TimeDifferenceStyle valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.watchface.complications.data.TimeDifferenceStyle[] values();
     enum_constant public static final androidx.wear.watchface.complications.data.TimeDifferenceStyle SHORT_DUAL_UNIT;
     enum_constant public static final androidx.wear.watchface.complications.data.TimeDifferenceStyle SHORT_SINGLE_UNIT;
     enum_constant public static final androidx.wear.watchface.complications.data.TimeDifferenceStyle SHORT_WORDS_SINGLE_UNIT;
@@ -500,8 +494,6 @@
   }
 
   public enum TimeFormatStyle {
-    method public static androidx.wear.watchface.complications.data.TimeFormatStyle valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.watchface.complications.data.TimeFormatStyle[] values();
     enum_constant public static final androidx.wear.watchface.complications.data.TimeFormatStyle DEFAULT;
     enum_constant public static final androidx.wear.watchface.complications.data.TimeFormatStyle LOWER_CASE;
     enum_constant public static final androidx.wear.watchface.complications.data.TimeFormatStyle UPPER_CASE;
diff --git a/wear/watchface/watchface-complications-data/api/restricted_current.txt b/wear/watchface/watchface-complications-data/api/restricted_current.txt
index 1740d3f..9ea522a 100644
--- a/wear/watchface/watchface-complications-data/api/restricted_current.txt
+++ b/wear/watchface/watchface-complications-data/api/restricted_current.txt
@@ -60,8 +60,6 @@
   }
 
   public enum ComplicationType {
-    method public static androidx.wear.watchface.complications.data.ComplicationType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.watchface.complications.data.ComplicationType[] values();
     enum_constant public static final androidx.wear.watchface.complications.data.ComplicationType EMPTY;
     enum_constant @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public static final androidx.wear.watchface.complications.data.ComplicationType GOAL_PROGRESS;
     enum_constant public static final androidx.wear.watchface.complications.data.ComplicationType LONG_TEXT;
@@ -451,8 +449,6 @@
   }
 
   public enum SmallImageType {
-    method public static androidx.wear.watchface.complications.data.SmallImageType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.watchface.complications.data.SmallImageType[] values();
     enum_constant public static final androidx.wear.watchface.complications.data.SmallImageType ICON;
     enum_constant public static final androidx.wear.watchface.complications.data.SmallImageType PHOTO;
   }
@@ -475,8 +471,6 @@
   }
 
   public enum TimeDifferenceStyle {
-    method public static androidx.wear.watchface.complications.data.TimeDifferenceStyle valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.watchface.complications.data.TimeDifferenceStyle[] values();
     enum_constant public static final androidx.wear.watchface.complications.data.TimeDifferenceStyle SHORT_DUAL_UNIT;
     enum_constant public static final androidx.wear.watchface.complications.data.TimeDifferenceStyle SHORT_SINGLE_UNIT;
     enum_constant public static final androidx.wear.watchface.complications.data.TimeDifferenceStyle SHORT_WORDS_SINGLE_UNIT;
@@ -500,8 +494,6 @@
   }
 
   public enum TimeFormatStyle {
-    method public static androidx.wear.watchface.complications.data.TimeFormatStyle valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.watchface.complications.data.TimeFormatStyle[] values();
     enum_constant public static final androidx.wear.watchface.complications.data.TimeFormatStyle DEFAULT;
     enum_constant public static final androidx.wear.watchface.complications.data.TimeFormatStyle LOWER_CASE;
     enum_constant public static final androidx.wear.watchface.complications.data.TimeFormatStyle UPPER_CASE;
diff --git a/wear/watchface/watchface-style/api/current.txt b/wear/watchface/watchface-style/api/current.txt
index 030379a..f980193 100644
--- a/wear/watchface/watchface-style/api/current.txt
+++ b/wear/watchface/watchface-style/api/current.txt
@@ -305,8 +305,6 @@
   }
 
   public enum WatchFaceLayer {
-    method public static androidx.wear.watchface.style.WatchFaceLayer valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.watchface.style.WatchFaceLayer[] values();
     enum_constant public static final androidx.wear.watchface.style.WatchFaceLayer BASE;
     enum_constant public static final androidx.wear.watchface.style.WatchFaceLayer COMPLICATIONS;
     enum_constant public static final androidx.wear.watchface.style.WatchFaceLayer COMPLICATIONS_OVERLAY;
diff --git a/wear/watchface/watchface-style/api/restricted_current.txt b/wear/watchface/watchface-style/api/restricted_current.txt
index 030379a..f980193 100644
--- a/wear/watchface/watchface-style/api/restricted_current.txt
+++ b/wear/watchface/watchface-style/api/restricted_current.txt
@@ -305,8 +305,6 @@
   }
 
   public enum WatchFaceLayer {
-    method public static androidx.wear.watchface.style.WatchFaceLayer valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.watchface.style.WatchFaceLayer[] values();
     enum_constant public static final androidx.wear.watchface.style.WatchFaceLayer BASE;
     enum_constant public static final androidx.wear.watchface.style.WatchFaceLayer COMPLICATIONS;
     enum_constant public static final androidx.wear.watchface.style.WatchFaceLayer COMPLICATIONS_OVERLAY;
diff --git a/wear/watchface/watchface/api/current.txt b/wear/watchface/watchface/api/current.txt
index 83765cc..9767bf0 100644
--- a/wear/watchface/watchface/api/current.txt
+++ b/wear/watchface/watchface/api/current.txt
@@ -154,8 +154,6 @@
   }
 
   public enum DrawMode {
-    method public static androidx.wear.watchface.DrawMode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.watchface.DrawMode[] values();
     enum_constant public static final androidx.wear.watchface.DrawMode AMBIENT;
     enum_constant public static final androidx.wear.watchface.DrawMode INTERACTIVE;
     enum_constant public static final androidx.wear.watchface.DrawMode LOW_BATTERY_INTERACTIVE;
diff --git a/wear/watchface/watchface/api/restricted_current.txt b/wear/watchface/watchface/api/restricted_current.txt
index 83765cc..9767bf0 100644
--- a/wear/watchface/watchface/api/restricted_current.txt
+++ b/wear/watchface/watchface/api/restricted_current.txt
@@ -154,8 +154,6 @@
   }
 
   public enum DrawMode {
-    method public static androidx.wear.watchface.DrawMode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.watchface.DrawMode[] values();
     enum_constant public static final androidx.wear.watchface.DrawMode AMBIENT;
     enum_constant public static final androidx.wear.watchface.DrawMode INTERACTIVE;
     enum_constant public static final androidx.wear.watchface.DrawMode LOW_BATTERY_INTERACTIVE;
diff --git a/work/work-runtime/api/current.txt b/work/work-runtime/api/current.txt
index 7120676..0fd0cead 100644
--- a/work/work-runtime/api/current.txt
+++ b/work/work-runtime/api/current.txt
@@ -7,8 +7,6 @@
   }
 
   public enum BackoffPolicy {
-    method public static androidx.work.BackoffPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.BackoffPolicy[] values();
     enum_constant public static final androidx.work.BackoffPolicy EXPONENTIAL;
     enum_constant public static final androidx.work.BackoffPolicy LINEAR;
   }
@@ -207,8 +205,6 @@
   }
 
   public enum ExistingPeriodicWorkPolicy {
-    method public static androidx.work.ExistingPeriodicWorkPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.ExistingPeriodicWorkPolicy[] values();
     enum_constant public static final androidx.work.ExistingPeriodicWorkPolicy CANCEL_AND_REENQUEUE;
     enum_constant public static final androidx.work.ExistingPeriodicWorkPolicy KEEP;
     enum_constant @Deprecated public static final androidx.work.ExistingPeriodicWorkPolicy REPLACE;
@@ -216,8 +212,6 @@
   }
 
   public enum ExistingWorkPolicy {
-    method public static androidx.work.ExistingWorkPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.ExistingWorkPolicy[] values();
     enum_constant public static final androidx.work.ExistingWorkPolicy APPEND;
     enum_constant public static final androidx.work.ExistingWorkPolicy APPEND_OR_REPLACE;
     enum_constant public static final androidx.work.ExistingWorkPolicy KEEP;
@@ -275,8 +269,6 @@
   }
 
   public enum NetworkType {
-    method public static androidx.work.NetworkType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.NetworkType[] values();
     enum_constant public static final androidx.work.NetworkType CONNECTED;
     enum_constant public static final androidx.work.NetworkType METERED;
     enum_constant public static final androidx.work.NetworkType NOT_REQUIRED;
@@ -330,8 +322,6 @@
   }
 
   public enum OutOfQuotaPolicy {
-    method public static androidx.work.OutOfQuotaPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.OutOfQuotaPolicy[] values();
     enum_constant public static final androidx.work.OutOfQuotaPolicy DROP_WORK_REQUEST;
     enum_constant public static final androidx.work.OutOfQuotaPolicy RUN_AS_NON_EXPEDITED_WORK_REQUEST;
   }
@@ -453,8 +443,6 @@
 
   public enum WorkInfo.State {
     method public boolean isFinished();
-    method public static androidx.work.WorkInfo.State valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.WorkInfo.State[] values();
     property public final boolean isFinished;
     enum_constant public static final androidx.work.WorkInfo.State BLOCKED;
     enum_constant public static final androidx.work.WorkInfo.State CANCELLED;
diff --git a/work/work-runtime/api/restricted_current.txt b/work/work-runtime/api/restricted_current.txt
index 7120676..0fd0cead 100644
--- a/work/work-runtime/api/restricted_current.txt
+++ b/work/work-runtime/api/restricted_current.txt
@@ -7,8 +7,6 @@
   }
 
   public enum BackoffPolicy {
-    method public static androidx.work.BackoffPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.BackoffPolicy[] values();
     enum_constant public static final androidx.work.BackoffPolicy EXPONENTIAL;
     enum_constant public static final androidx.work.BackoffPolicy LINEAR;
   }
@@ -207,8 +205,6 @@
   }
 
   public enum ExistingPeriodicWorkPolicy {
-    method public static androidx.work.ExistingPeriodicWorkPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.ExistingPeriodicWorkPolicy[] values();
     enum_constant public static final androidx.work.ExistingPeriodicWorkPolicy CANCEL_AND_REENQUEUE;
     enum_constant public static final androidx.work.ExistingPeriodicWorkPolicy KEEP;
     enum_constant @Deprecated public static final androidx.work.ExistingPeriodicWorkPolicy REPLACE;
@@ -216,8 +212,6 @@
   }
 
   public enum ExistingWorkPolicy {
-    method public static androidx.work.ExistingWorkPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.ExistingWorkPolicy[] values();
     enum_constant public static final androidx.work.ExistingWorkPolicy APPEND;
     enum_constant public static final androidx.work.ExistingWorkPolicy APPEND_OR_REPLACE;
     enum_constant public static final androidx.work.ExistingWorkPolicy KEEP;
@@ -275,8 +269,6 @@
   }
 
   public enum NetworkType {
-    method public static androidx.work.NetworkType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.NetworkType[] values();
     enum_constant public static final androidx.work.NetworkType CONNECTED;
     enum_constant public static final androidx.work.NetworkType METERED;
     enum_constant public static final androidx.work.NetworkType NOT_REQUIRED;
@@ -330,8 +322,6 @@
   }
 
   public enum OutOfQuotaPolicy {
-    method public static androidx.work.OutOfQuotaPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.OutOfQuotaPolicy[] values();
     enum_constant public static final androidx.work.OutOfQuotaPolicy DROP_WORK_REQUEST;
     enum_constant public static final androidx.work.OutOfQuotaPolicy RUN_AS_NON_EXPEDITED_WORK_REQUEST;
   }
@@ -453,8 +443,6 @@
 
   public enum WorkInfo.State {
     method public boolean isFinished();
-    method public static androidx.work.WorkInfo.State valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.WorkInfo.State[] values();
     property public final boolean isFinished;
     enum_constant public static final androidx.work.WorkInfo.State BLOCKED;
     enum_constant public static final androidx.work.WorkInfo.State CANCELLED;
