Revert "Use primary constructors in `dart:core`."

This reverts commit a4ca07ec6f2009f399d85c8c1e981529f045bfb3 as it breaks dart->flutter roller.

The revert had two conflicts with cbba25a that required manual merging and updating line number expectations.

BUG=https://github.com/dart-lang/sdk/issues/63589

CoreLibraryReviewExempt: revert
Change-Id: I6eabac0af3612b3b5b4d00ae326b3b7494162163
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/513821
Reviewed-by: Slava Egorov <vegorov@google.com>
SLSA-Policy-Verified: SLSA Policy Verification Service <devtools-gerritcodereview-exitgate@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
diff --git a/DEPS b/DEPS
index ce257b3..70a7752 100644
--- a/DEPS
+++ b/DEPS
@@ -135,7 +135,7 @@
   # 'tools/rev_sdk_deps.dart' will rev pkg dependencies to their latest; put an
   # EOL comment after a dependency to instead pin at the current revision.
   "core_rev": "be0b1531c445a185d3e93887b8d0355fc766c314",
-  "dartdoc_rev": "d0fac90eb4213db3d5f8d8ff360a4f4bcb4b7ae2",
+  "dartdoc_rev": "77a52b6125ce8cc8a88a8a399d80701254e43838",
   "ecosystem_rev": "319ff812d463fc194999a0d4b682097450279332",
   "flute_rev": "b84119fba67016a80c3eb80765762bcc4d0d0b8d",
   "http_rev": "c140dc012da1df74b0fb99230b8736438b8eba6a",
diff --git a/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.expect b/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.expect
index 814039b..00f0d10 100644
--- a/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.expect
+++ b/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.expect
@@ -13,8 +13,8 @@
 // final class LegacyImplementFinal implements LegacyImplementFinalCore {
 //                                             ^
 // sdk/lib/core/map.dart:*: Context: The type 'LegacyImplementFinalCore' is a subtype of 'MapEntry', and 'MapEntry' is defined here.
-// final class const MapEntry<K, V>(
-//                   ^
+// final class MapEntry<K, V> {
+//             ^
 //
 // pkg/front_end/testcases/class_modifiers/issue52115/main.dart:20:16: Error: The type 'LegacyImplementBaseNoModifier' must be 'base', 'final' or 'sealed' because the supertype 'LinkedList' is 'base'.
 // Try adding 'base', 'final', or 'sealed' to the type.
@@ -32,8 +32,8 @@
 // class LegacyImplementFinalNoModifier implements LegacyImplementFinalCore {
 //                                                 ^
 // sdk/lib/core/map.dart:*: Context: The type 'LegacyImplementFinalCore' is a subtype of 'MapEntry', and 'MapEntry' is defined here.
-// final class const MapEntry<K, V>(
-//                   ^
+// final class MapEntry<K, V> {
+//             ^
 //
 import self as self;
 import "dart:collection" as col;
diff --git a/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.modular.expect b/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.modular.expect
index 814039b..00f0d10 100644
--- a/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.modular.expect
@@ -13,8 +13,8 @@
 // final class LegacyImplementFinal implements LegacyImplementFinalCore {
 //                                             ^
 // sdk/lib/core/map.dart:*: Context: The type 'LegacyImplementFinalCore' is a subtype of 'MapEntry', and 'MapEntry' is defined here.
-// final class const MapEntry<K, V>(
-//                   ^
+// final class MapEntry<K, V> {
+//             ^
 //
 // pkg/front_end/testcases/class_modifiers/issue52115/main.dart:20:16: Error: The type 'LegacyImplementBaseNoModifier' must be 'base', 'final' or 'sealed' because the supertype 'LinkedList' is 'base'.
 // Try adding 'base', 'final', or 'sealed' to the type.
@@ -32,8 +32,8 @@
 // class LegacyImplementFinalNoModifier implements LegacyImplementFinalCore {
 //                                                 ^
 // sdk/lib/core/map.dart:*: Context: The type 'LegacyImplementFinalCore' is a subtype of 'MapEntry', and 'MapEntry' is defined here.
-// final class const MapEntry<K, V>(
-//                   ^
+// final class MapEntry<K, V> {
+//             ^
 //
 import self as self;
 import "dart:collection" as col;
diff --git a/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.outline.expect b/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.outline.expect
index 98f2d11..282f5fc 100644
--- a/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.outline.expect
@@ -13,8 +13,8 @@
 // final class LegacyImplementFinal implements LegacyImplementFinalCore {
 //                                             ^
 // sdk/lib/core/map.dart:*: Context: The type 'LegacyImplementFinalCore' is a subtype of 'MapEntry', and 'MapEntry' is defined here.
-// final class const MapEntry<K, V>(
-//                   ^
+// final class MapEntry<K, V> {
+//             ^
 //
 // pkg/front_end/testcases/class_modifiers/issue52115/main.dart:20:16: Error: The type 'LegacyImplementBaseNoModifier' must be 'base', 'final' or 'sealed' because the supertype 'LinkedList' is 'base'.
 // Try adding 'base', 'final', or 'sealed' to the type.
@@ -32,8 +32,8 @@
 // class LegacyImplementFinalNoModifier implements LegacyImplementFinalCore {
 //                                                 ^
 // sdk/lib/core/map.dart:*: Context: The type 'LegacyImplementFinalCore' is a subtype of 'MapEntry', and 'MapEntry' is defined here.
-// final class const MapEntry<K, V>(
-//                   ^
+// final class MapEntry<K, V> {
+//             ^
 //
 import self as self;
 import "dart:collection" as col;
diff --git a/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.transformed.expect b/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.transformed.expect
index 814039b..00f0d10 100644
--- a/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.transformed.expect
@@ -13,8 +13,8 @@
 // final class LegacyImplementFinal implements LegacyImplementFinalCore {
 //                                             ^
 // sdk/lib/core/map.dart:*: Context: The type 'LegacyImplementFinalCore' is a subtype of 'MapEntry', and 'MapEntry' is defined here.
-// final class const MapEntry<K, V>(
-//                   ^
+// final class MapEntry<K, V> {
+//             ^
 //
 // pkg/front_end/testcases/class_modifiers/issue52115/main.dart:20:16: Error: The type 'LegacyImplementBaseNoModifier' must be 'base', 'final' or 'sealed' because the supertype 'LinkedList' is 'base'.
 // Try adding 'base', 'final', or 'sealed' to the type.
@@ -32,8 +32,8 @@
 // class LegacyImplementFinalNoModifier implements LegacyImplementFinalCore {
 //                                                 ^
 // sdk/lib/core/map.dart:*: Context: The type 'LegacyImplementFinalCore' is a subtype of 'MapEntry', and 'MapEntry' is defined here.
-// final class const MapEntry<K, V>(
-//                   ^
+// final class MapEntry<K, V> {
+//             ^
 //
 import self as self;
 import "dart:collection" as col;
diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.expect
index 58763cb..1961a0b 100644
--- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.expect
+++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.expect
@@ -10,8 +10,8 @@
 // class B with Error {} /* Error */
 //       ^
 // sdk/lib/core/errors.dart:*: Context: This constructor prevents using 'Error' as a mixin.
-// class Error() {
-//            ^
+//   Error(); // Prevent use as mixin.
+//   ^
 //
 // pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart:12:14: Error: The class 'Error' can't be used as a mixin because it isn't a mixin class nor a mixin.
 // class B with Error {} /* Error */
diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.modular.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.modular.expect
index 58763cb..1961a0b 100644
--- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.modular.expect
@@ -10,8 +10,8 @@
 // class B with Error {} /* Error */
 //       ^
 // sdk/lib/core/errors.dart:*: Context: This constructor prevents using 'Error' as a mixin.
-// class Error() {
-//            ^
+//   Error(); // Prevent use as mixin.
+//   ^
 //
 // pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart:12:14: Error: The class 'Error' can't be used as a mixin because it isn't a mixin class nor a mixin.
 // class B with Error {} /* Error */
diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.outline.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.outline.expect
index 2cc883d..21fa588 100644
--- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.outline.expect
@@ -10,8 +10,8 @@
 // class B with Error {} /* Error */
 //       ^
 // sdk/lib/core/errors.dart:*: Context: This constructor prevents using 'Error' as a mixin.
-// class Error() {
-//            ^
+//   Error(); // Prevent use as mixin.
+//   ^
 //
 // pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart:12:14: Error: The class 'Error' can't be used as a mixin because it isn't a mixin class nor a mixin.
 // class B with Error {} /* Error */
diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.transformed.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.transformed.expect
index 34606d7..ec91c12 100644
--- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.transformed.expect
@@ -10,8 +10,8 @@
 // class B with Error {} /* Error */
 //       ^
 // sdk/lib/core/errors.dart:*: Context: This constructor prevents using 'Error' as a mixin.
-// class Error() {
-//            ^
+//   Error(); // Prevent use as mixin.
+//   ^
 //
 // pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart:12:14: Error: The class 'Error' can't be used as a mixin because it isn't a mixin class nor a mixin.
 // class B with Error {} /* Error */
diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.expect
index dce711a..7f72225 100644
--- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.expect
+++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.expect
@@ -6,8 +6,8 @@
 // class B with Error {} /* Error */
 //       ^
 // sdk/lib/core/errors.dart:*: Context: This constructor prevents using 'Error' as a mixin.
-// class Error() {
-//            ^
+//   Error(); // Prevent use as mixin.
+//   ^
 //
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.modular.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.modular.expect
index dce711a..7f72225 100644
--- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.modular.expect
@@ -6,8 +6,8 @@
 // class B with Error {} /* Error */
 //       ^
 // sdk/lib/core/errors.dart:*: Context: This constructor prevents using 'Error' as a mixin.
-// class Error() {
-//            ^
+//   Error(); // Prevent use as mixin.
+//   ^
 //
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.outline.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.outline.expect
index d0755d93..2b7a7b2 100644
--- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.outline.expect
@@ -6,8 +6,8 @@
 // class B with Error {} /* Error */
 //       ^
 // sdk/lib/core/errors.dart:*: Context: This constructor prevents using 'Error' as a mixin.
-// class Error() {
-//            ^
+//   Error(); // Prevent use as mixin.
+//   ^
 //
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.transformed.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.transformed.expect
index 44494a5..7b4bf1d 100644
--- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.transformed.expect
@@ -6,8 +6,8 @@
 // class B with Error {} /* Error */
 //       ^
 // sdk/lib/core/errors.dart:*: Context: This constructor prevents using 'Error' as a mixin.
-// class Error() {
-//            ^
+//   Error(); // Prevent use as mixin.
+//   ^
 //
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.expect b/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.expect
index 7fffbfb..caaec5e 100644
--- a/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.expect
+++ b/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.expect
@@ -33,7 +33,7 @@
     return "field";
 }
 abstract class _SomeEnum&_Enum&HasSomeField = core::_Enum with mai::HasSomeField /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → mai::_SomeEnum&_Enum&HasSomeField
+  const synthetic constructor •(core::int index, core::String _name) → mai::_SomeEnum&_Enum&HasSomeField
     : super core::_Enum::•(index, _name)
     ;
   abstract synthetic mixin-stub get someField() → core::String; -> mai::HasSomeField::someField
diff --git a/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.outline.expect b/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.outline.expect
index 835296f..5ccb869 100644
--- a/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.outline.expect
@@ -26,7 +26,7 @@
     ;
 }
 abstract class _SomeEnum&_Enum&HasSomeField = core::_Enum with self2::HasSomeField /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self2::_SomeEnum&_Enum&HasSomeField
+  const synthetic constructor •(core::int index, core::String _name) → self2::_SomeEnum&_Enum&HasSomeField
     : super core::_Enum::•(index, _name)
     ;
   abstract synthetic mixin-stub get someField() → core::String; -> self2::HasSomeField::someField
diff --git a/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.transformed.expect b/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.transformed.expect
index a436ffe..da2bf04 100644
--- a/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.transformed.expect
@@ -33,7 +33,7 @@
     return "field";
 }
 abstract class _SomeEnum&_Enum&HasSomeField = core::_Enum with mai::HasSomeField /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → mai::_SomeEnum&_Enum&HasSomeField
+  const synthetic constructor •(core::int index, core::String _name) → mai::_SomeEnum&_Enum&HasSomeField
     : super core::_Enum::•(index, _name)
     ;
   abstract synthetic mixin-stub get someField() → core::String; -> mai::HasSomeField::someField
diff --git a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.expect
index 8536bb2..03ba447 100644
--- a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.expect
@@ -145,7 +145,7 @@
   abstract method foo() → void;
 }
 abstract class _E7&_Enum&MethodImplementation = core::_Enum with self::MethodImplementation /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&MethodImplementation
+  const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&MethodImplementation
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method foo() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.modular.expect
index 8536bb2..03ba447 100644
--- a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.modular.expect
@@ -145,7 +145,7 @@
   abstract method foo() → void;
 }
 abstract class _E7&_Enum&MethodImplementation = core::_Enum with self::MethodImplementation /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&MethodImplementation
+  const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&MethodImplementation
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method foo() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.outline.expect
index 3d3a032..df533e9 100644
--- a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.outline.expect
@@ -143,7 +143,7 @@
   abstract method foo() → void;
 }
 abstract class _E7&_Enum&MethodImplementation = core::_Enum with self::MethodImplementation /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&MethodImplementation
+  const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&MethodImplementation
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method foo() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.transformed.expect
index 139a3b0..83f7fd9 100644
--- a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.transformed.expect
@@ -145,7 +145,7 @@
   abstract method foo() → void;
 }
 abstract class _E7&_Enum&MethodImplementation extends core::_Enum implements self::MethodImplementation /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&MethodImplementation
+  const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&MethodImplementation
     : super core::_Enum::•(index, _name)
     ;
   method foo() → void {}
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.expect
index 3874ac6..4cbb41c 100644
--- a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.expect
@@ -173,14 +173,14 @@
     return "E10.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E8&_Enum&A8 = core::_Enum with self::A8 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&A8
+  const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&A8
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub set element(dynamic value) → void
     return super.{self::A8::element} = value;
 }
 abstract class _E9&_Enum&A9 = core::_Enum with self::A9 /*isAnonymousMixin*/  {
-  synthetic constructor •(final core::int index, final core::String _name) → self::_E9&_Enum&A9
+  synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get element() → core::int
@@ -189,7 +189,7 @@
     return super.{self::A9::element} = value;
 }
 abstract class _E10&_Enum&A10 = core::_Enum with self::A10 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E10&_Enum&A10
+  const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&A10
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method element() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.modular.expect
index 3874ac6..4cbb41c 100644
--- a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.modular.expect
@@ -173,14 +173,14 @@
     return "E10.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E8&_Enum&A8 = core::_Enum with self::A8 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&A8
+  const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&A8
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub set element(dynamic value) → void
     return super.{self::A8::element} = value;
 }
 abstract class _E9&_Enum&A9 = core::_Enum with self::A9 /*isAnonymousMixin*/  {
-  synthetic constructor •(final core::int index, final core::String _name) → self::_E9&_Enum&A9
+  synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get element() → core::int
@@ -189,7 +189,7 @@
     return super.{self::A9::element} = value;
 }
 abstract class _E10&_Enum&A10 = core::_Enum with self::A10 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E10&_Enum&A10
+  const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&A10
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method element() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.outline.expect
index 7d99f2b..2034d6a 100644
--- a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.outline.expect
@@ -176,14 +176,14 @@
     return "E10.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E8&_Enum&A8 = core::_Enum with self::A8 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&A8
+  const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&A8
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub set element(dynamic value) → void
     return super.{self::A8::element} = value;
 }
 abstract class _E9&_Enum&A9 = core::_Enum with self::A9 /*isAnonymousMixin*/  {
-  synthetic constructor •(final core::int index, final core::String _name) → self::_E9&_Enum&A9
+  synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get element() → core::int
@@ -192,7 +192,7 @@
     return super.{self::A9::element} = value;
 }
 abstract class _E10&_Enum&A10 = core::_Enum with self::A10 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E10&_Enum&A10
+  const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&A10
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method element() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.transformed.expect
index f4447d5..f801f78 100644
--- a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.transformed.expect
@@ -173,19 +173,19 @@
     return "E10.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E8&_Enum&A8 extends core::_Enum implements self::A8 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&A8
+  const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&A8
     : super core::_Enum::•(index, _name)
     ;
   set element(dynamic value) → void {}
 }
 abstract class _E9&_Enum&A9 extends core::_Enum implements self::A9 /*isAnonymousMixin,isEliminatedMixin*/  {
   field core::int element = 42;
-  synthetic constructor •(final core::int index, final core::String _name) → self::_E9&_Enum&A9
+  synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E10&_Enum&A10 extends core::_Enum implements self::A10 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E10&_Enum&A10
+  const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&A10
     : super core::_Enum::•(index, _name)
     ;
   method element() → void {}
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.expect
index 5e4de73..50f515a 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.expect
@@ -76,28 +76,28 @@
     return "EN.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _EA&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EA&_Enum&A
+  const synthetic constructor •(core::int index, core::String _name) → self::_EA&_Enum&A
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::int
     return super.{self::A::foo};
 }
 abstract class _EB&_Enum&B = core::_Enum with self::B /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EB&_Enum&B
+  const synthetic constructor •(core::int index, core::String _name) → self::_EB&_Enum&B
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::int
     return super.{self::B::foo};
 }
 abstract class _EM&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EM&_Enum&M
+  const synthetic constructor •(core::int index, core::String _name) → self::_EM&_Enum&M
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::int
     return super.{self::M::foo};
 }
 abstract class _EN&_Enum&N = core::_Enum with self::N /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EN&_Enum&N
+  const synthetic constructor •(core::int index, core::String _name) → self::_EN&_Enum&N
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::int
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.modular.expect
index 5e4de73..50f515a 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.modular.expect
@@ -76,28 +76,28 @@
     return "EN.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _EA&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EA&_Enum&A
+  const synthetic constructor •(core::int index, core::String _name) → self::_EA&_Enum&A
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::int
     return super.{self::A::foo};
 }
 abstract class _EB&_Enum&B = core::_Enum with self::B /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EB&_Enum&B
+  const synthetic constructor •(core::int index, core::String _name) → self::_EB&_Enum&B
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::int
     return super.{self::B::foo};
 }
 abstract class _EM&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EM&_Enum&M
+  const synthetic constructor •(core::int index, core::String _name) → self::_EM&_Enum&M
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::int
     return super.{self::M::foo};
 }
 abstract class _EN&_Enum&N = core::_Enum with self::N /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EN&_Enum&N
+  const synthetic constructor •(core::int index, core::String _name) → self::_EN&_Enum&N
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::int
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.outline.expect
index f08b5cb..f862626 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.outline.expect
@@ -74,28 +74,28 @@
     return "EN.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _EA&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EA&_Enum&A
+  const synthetic constructor •(core::int index, core::String _name) → self::_EA&_Enum&A
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::int
     return super.{self::A::foo};
 }
 abstract class _EB&_Enum&B = core::_Enum with self::B /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EB&_Enum&B
+  const synthetic constructor •(core::int index, core::String _name) → self::_EB&_Enum&B
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::int
     return super.{self::B::foo};
 }
 abstract class _EM&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EM&_Enum&M
+  const synthetic constructor •(core::int index, core::String _name) → self::_EM&_Enum&M
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::int
     return super.{self::M::foo};
 }
 abstract class _EN&_Enum&N = core::_Enum with self::N /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EN&_Enum&N
+  const synthetic constructor •(core::int index, core::String _name) → self::_EN&_Enum&N
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::int
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.transformed.expect
index ec6fd5e..ec955e9b 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.transformed.expect
@@ -76,28 +76,28 @@
     return "EN.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _EA&_Enum&A extends core::_Enum implements self::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EA&_Enum&A
+  const synthetic constructor •(core::int index, core::String _name) → self::_EA&_Enum&A
     : super core::_Enum::•(index, _name)
     ;
   get foo() → core::int
     return this.{core::Enum::index}{core::int};
 }
 abstract class _EB&_Enum&B extends core::_Enum implements self::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EB&_Enum&B
+  const synthetic constructor •(core::int index, core::String _name) → self::_EB&_Enum&B
     : super core::_Enum::•(index, _name)
     ;
   get foo() → core::int
     return this.{core::Enum::index}{core::int};
 }
 abstract class _EM&_Enum&M extends core::_Enum implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EM&_Enum&M
+  const synthetic constructor •(core::int index, core::String _name) → self::_EM&_Enum&M
     : super core::_Enum::•(index, _name)
     ;
   get foo() → core::int
     return this.{core::Enum::index}{core::int};
 }
 abstract class _EN&_Enum&N extends core::_Enum implements self::N /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EN&_Enum&N
+  const synthetic constructor •(core::int index, core::String _name) → self::_EN&_Enum&N
     : super core::_Enum::•(index, _name)
     ;
   get foo() → core::int
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.expect
index 9e059b3..91f62cb 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.expect
@@ -27,7 +27,7 @@
     return "NormalEnum.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _SomeEnum&_Enum&HasSomeField = core::_Enum with self::HasSomeField /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_SomeEnum&_Enum&HasSomeField
+  const synthetic constructor •(core::int index, core::String _name) → self::_SomeEnum&_Enum&HasSomeField
     : super core::_Enum::•(index, _name)
     ;
   abstract synthetic mixin-stub get someField() → core::String; -> self::HasSomeField::someField
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.modular.expect
index 9e059b3..91f62cb 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.modular.expect
@@ -27,7 +27,7 @@
     return "NormalEnum.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _SomeEnum&_Enum&HasSomeField = core::_Enum with self::HasSomeField /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_SomeEnum&_Enum&HasSomeField
+  const synthetic constructor •(core::int index, core::String _name) → self::_SomeEnum&_Enum&HasSomeField
     : super core::_Enum::•(index, _name)
     ;
   abstract synthetic mixin-stub get someField() → core::String; -> self::HasSomeField::someField
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.outline.expect
index a6edbeba..2582f51 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.outline.expect
@@ -27,7 +27,7 @@
     return "NormalEnum.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _SomeEnum&_Enum&HasSomeField = core::_Enum with self::HasSomeField /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_SomeEnum&_Enum&HasSomeField
+  const synthetic constructor •(core::int index, core::String _name) → self::_SomeEnum&_Enum&HasSomeField
     : super core::_Enum::•(index, _name)
     ;
   abstract synthetic mixin-stub get someField() → core::String; -> self::HasSomeField::someField
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.transformed.expect
index a14cc15..5a82abb 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.transformed.expect
@@ -27,7 +27,7 @@
     return "NormalEnum.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _SomeEnum&_Enum&HasSomeField extends core::_Enum implements self::HasSomeField /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_SomeEnum&_Enum&HasSomeField
+  const synthetic constructor •(core::int index, core::String _name) → self::_SomeEnum&_Enum&HasSomeField
     : super core::_Enum::•(index, _name)
     ;
   abstract get someField() → core::String;
diff --git a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.expect
index f1d80b1..cec525e 100644
--- a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.expect
@@ -223,63 +223,63 @@
     return "E10.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E1&_Enum&A1 = core::_Enum with self::A1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&A1
+  const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&A1
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get hashCode() → core::int
     return super.{self::A1::hashCode};
 }
 abstract class _E2&_Enum&A2 = core::_Enum with self::A2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&A2
+  const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&A2
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get values() → core::int
     return super.{self::A2::values};
 }
 abstract class _E3&_Enum&A3 = core::_Enum with self::A3 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E3&_Enum&A3
+  const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&A3
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get index() → core::int
     return super.{self::A3::index};
 }
 abstract class _E4&_Enum&A4 = core::_Enum with self::A4 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E4&_Enum&A4
+  const synthetic constructor •(core::int index, core::String _name) → self::_E4&_Enum&A4
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub operator ==(core::Object other) → core::bool
     return super.{self::A4::==}(other);
 }
 abstract class _E5&_Enum&M5 = core::_Enum with self::M5 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E5&_Enum&M5
+  const synthetic constructor •(core::int index, core::String _name) → self::_E5&_Enum&M5
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get hashCode() → core::int
     return super.{self::M5::hashCode};
 }
 abstract class _E6&_Enum&M6 = core::_Enum with self::M6 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&M6
+  const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&M6
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get values() → core::int
     return super.{self::M6::values};
 }
 abstract class _E7&_Enum&M7 = core::_Enum with self::M7 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&M7
+  const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&M7
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get index() → core::int
     return super.{self::M7::index};
 }
 abstract class _E8&_Enum&M8 = core::_Enum with self::M8 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&M8
+  const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&M8
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub operator ==(core::Object other) → core::bool
     return super.{self::M8::==}(other);
 }
 abstract class _E9&_Enum&A9 = core::_Enum with self::A9 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E9&_Enum&A9
+  const synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9
     : super core::_Enum::•(index, _name)
     ;
   abstract synthetic mixin-stub get index() → core::int; -> self::A9::index
@@ -287,7 +287,7 @@
   abstract synthetic mixin-stub operator ==(core::Object other) → core::bool; -> self::A9::==
 }
 abstract class _E10&_Enum&M10 = core::_Enum with self::M10 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E10&_Enum&M10
+  const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&M10
     : super core::_Enum::•(index, _name)
     ;
   abstract synthetic mixin-stub get index() → core::int; -> self::M10::index
diff --git a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.modular.expect
index f1d80b1..cec525e 100644
--- a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.modular.expect
@@ -223,63 +223,63 @@
     return "E10.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E1&_Enum&A1 = core::_Enum with self::A1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&A1
+  const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&A1
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get hashCode() → core::int
     return super.{self::A1::hashCode};
 }
 abstract class _E2&_Enum&A2 = core::_Enum with self::A2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&A2
+  const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&A2
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get values() → core::int
     return super.{self::A2::values};
 }
 abstract class _E3&_Enum&A3 = core::_Enum with self::A3 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E3&_Enum&A3
+  const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&A3
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get index() → core::int
     return super.{self::A3::index};
 }
 abstract class _E4&_Enum&A4 = core::_Enum with self::A4 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E4&_Enum&A4
+  const synthetic constructor •(core::int index, core::String _name) → self::_E4&_Enum&A4
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub operator ==(core::Object other) → core::bool
     return super.{self::A4::==}(other);
 }
 abstract class _E5&_Enum&M5 = core::_Enum with self::M5 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E5&_Enum&M5
+  const synthetic constructor •(core::int index, core::String _name) → self::_E5&_Enum&M5
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get hashCode() → core::int
     return super.{self::M5::hashCode};
 }
 abstract class _E6&_Enum&M6 = core::_Enum with self::M6 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&M6
+  const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&M6
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get values() → core::int
     return super.{self::M6::values};
 }
 abstract class _E7&_Enum&M7 = core::_Enum with self::M7 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&M7
+  const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&M7
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get index() → core::int
     return super.{self::M7::index};
 }
 abstract class _E8&_Enum&M8 = core::_Enum with self::M8 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&M8
+  const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&M8
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub operator ==(core::Object other) → core::bool
     return super.{self::M8::==}(other);
 }
 abstract class _E9&_Enum&A9 = core::_Enum with self::A9 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E9&_Enum&A9
+  const synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9
     : super core::_Enum::•(index, _name)
     ;
   abstract synthetic mixin-stub get index() → core::int; -> self::A9::index
@@ -287,7 +287,7 @@
   abstract synthetic mixin-stub operator ==(core::Object other) → core::bool; -> self::A9::==
 }
 abstract class _E10&_Enum&M10 = core::_Enum with self::M10 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E10&_Enum&M10
+  const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&M10
     : super core::_Enum::•(index, _name)
     ;
   abstract synthetic mixin-stub get index() → core::int; -> self::M10::index
diff --git a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.outline.expect
index 02d5918..ec91be4 100644
--- a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.outline.expect
@@ -218,63 +218,63 @@
     return "E10.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E1&_Enum&A1 = core::_Enum with self::A1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&A1
+  const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&A1
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get hashCode() → core::int
     return super.{self::A1::hashCode};
 }
 abstract class _E2&_Enum&A2 = core::_Enum with self::A2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&A2
+  const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&A2
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get values() → core::int
     return super.{self::A2::values};
 }
 abstract class _E3&_Enum&A3 = core::_Enum with self::A3 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E3&_Enum&A3
+  const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&A3
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get index() → core::int
     return super.{self::A3::index};
 }
 abstract class _E4&_Enum&A4 = core::_Enum with self::A4 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E4&_Enum&A4
+  const synthetic constructor •(core::int index, core::String _name) → self::_E4&_Enum&A4
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub operator ==(core::Object other) → core::bool
     return super.{self::A4::==}(other);
 }
 abstract class _E5&_Enum&M5 = core::_Enum with self::M5 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E5&_Enum&M5
+  const synthetic constructor •(core::int index, core::String _name) → self::_E5&_Enum&M5
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get hashCode() → core::int
     return super.{self::M5::hashCode};
 }
 abstract class _E6&_Enum&M6 = core::_Enum with self::M6 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&M6
+  const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&M6
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get values() → core::int
     return super.{self::M6::values};
 }
 abstract class _E7&_Enum&M7 = core::_Enum with self::M7 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&M7
+  const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&M7
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get index() → core::int
     return super.{self::M7::index};
 }
 abstract class _E8&_Enum&M8 = core::_Enum with self::M8 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&M8
+  const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&M8
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub operator ==(core::Object other) → core::bool
     return super.{self::M8::==}(other);
 }
 abstract class _E9&_Enum&A9 = core::_Enum with self::A9 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E9&_Enum&A9
+  const synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9
     : super core::_Enum::•(index, _name)
     ;
   abstract synthetic mixin-stub get index() → core::int; -> self::A9::index
@@ -282,7 +282,7 @@
   abstract synthetic mixin-stub operator ==(core::Object other) → core::bool; -> self::A9::==
 }
 abstract class _E10&_Enum&M10 = core::_Enum with self::M10 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E10&_Enum&M10
+  const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&M10
     : super core::_Enum::•(index, _name)
     ;
   abstract synthetic mixin-stub get index() → core::int; -> self::M10::index
diff --git a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.transformed.expect
index 97b1e07..4eb636d 100644
--- a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.transformed.expect
@@ -223,63 +223,63 @@
     return "E10.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E1&_Enum&A1 extends core::_Enum implements self::A1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&A1
+  const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&A1
     : super core::_Enum::•(index, _name)
     ;
   get hashCode() → core::int
     return 42;
 }
 abstract class _E2&_Enum&A2 extends core::_Enum implements self::A2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&A2
+  const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&A2
     : super core::_Enum::•(index, _name)
     ;
   get values() → core::int
     return 42;
 }
 abstract class _E3&_Enum&A3 extends core::_Enum implements self::A3 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E3&_Enum&A3
+  const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&A3
     : super core::_Enum::•(index, _name)
     ;
   get index() → core::int
     return 42;
 }
 abstract class _E4&_Enum&A4 extends core::_Enum implements self::A4 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E4&_Enum&A4
+  const synthetic constructor •(core::int index, core::String _name) → self::_E4&_Enum&A4
     : super core::_Enum::•(index, _name)
     ;
   operator ==(core::Object other) → core::bool
     return true;
 }
 abstract class _E5&_Enum&M5 extends core::_Enum implements self::M5 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E5&_Enum&M5
+  const synthetic constructor •(core::int index, core::String _name) → self::_E5&_Enum&M5
     : super core::_Enum::•(index, _name)
     ;
   get hashCode() → core::int
     return 42;
 }
 abstract class _E6&_Enum&M6 extends core::_Enum implements self::M6 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&M6
+  const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&M6
     : super core::_Enum::•(index, _name)
     ;
   get values() → core::int
     return 42;
 }
 abstract class _E7&_Enum&M7 extends core::_Enum implements self::M7 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&M7
+  const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&M7
     : super core::_Enum::•(index, _name)
     ;
   get index() → core::int
     return 42;
 }
 abstract class _E8&_Enum&M8 extends core::_Enum implements self::M8 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&M8
+  const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&M8
     : super core::_Enum::•(index, _name)
     ;
   operator ==(core::Object other) → core::bool
     return true;
 }
 abstract class _E9&_Enum&A9 extends core::_Enum implements self::A9 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E9&_Enum&A9
+  const synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9
     : super core::_Enum::•(index, _name)
     ;
   abstract get index() → core::int;
@@ -287,7 +287,7 @@
   abstract operator ==(core::Object other) → core::bool;
 }
 abstract class _E10&_Enum&M10 extends core::_Enum implements self::M10 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E10&_Enum&M10
+  const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&M10
     : super core::_Enum::•(index, _name)
     ;
   abstract get index() → core::int;
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.expect
index ee9b40b..d871a09 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.expect
@@ -18,7 +18,7 @@
     return "E.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&M1
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M1
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method mixedInMethod1(core::int v) → core::int
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.modular.expect
index ee9b40b..d871a09 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.modular.expect
@@ -18,7 +18,7 @@
     return "E.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&M1
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M1
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method mixedInMethod1(core::int v) → core::int
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.outline.expect
index df05fbd..a95ace1f 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.outline.expect
@@ -18,7 +18,7 @@
     return "E.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&M1
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M1
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method mixedInMethod1(core::int v) → core::int
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.transformed.expect
index 107021e..d14db7f 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
     return "E.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E&_Enum&M1 extends core::_Enum implements self::M1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&M1
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M1
     : super core::_Enum::•(index, _name)
     ;
   method mixedInMethod1(core::int v) → core::int
diff --git a/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.expect
index 5cc0483..d3ed093 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.expect
@@ -92,28 +92,28 @@
     return "E7";
 }
 abstract class _E1&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&M
+  const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&M
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method toString() → core::String
     return super.{self::M::toString}();
 }
 abstract class _E2&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M
+  const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method toString() → core::String
     return super.{self::M::toString}();
 }
 abstract class _E6&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&A
+  const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&A
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method toString() → core::String
     return super.{self::A::toString}();
 }
 abstract class _E7&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&A
+  const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&A
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method toString() → core::String
diff --git a/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.modular.expect
index 5cc0483..d3ed093 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.modular.expect
@@ -92,28 +92,28 @@
     return "E7";
 }
 abstract class _E1&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&M
+  const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&M
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method toString() → core::String
     return super.{self::M::toString}();
 }
 abstract class _E2&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M
+  const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method toString() → core::String
     return super.{self::M::toString}();
 }
 abstract class _E6&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&A
+  const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&A
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method toString() → core::String
     return super.{self::A::toString}();
 }
 abstract class _E7&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&A
+  const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&A
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method toString() → core::String
diff --git a/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.outline.expect
index 1bf5c44..80de42a 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.outline.expect
@@ -90,28 +90,28 @@
     ;
 }
 abstract class _E1&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&M
+  const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&M
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method toString() → core::String
     return super.{self::M::toString}();
 }
 abstract class _E2&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M
+  const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method toString() → core::String
     return super.{self::M::toString}();
 }
 abstract class _E6&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&A
+  const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&A
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method toString() → core::String
     return super.{self::A::toString}();
 }
 abstract class _E7&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&A
+  const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&A
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method toString() → core::String
diff --git a/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.transformed.expect
index 2a780fc..5fcef09 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.transformed.expect
@@ -92,28 +92,28 @@
     return "E7";
 }
 abstract class _E1&_Enum&M extends core::_Enum implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&M
+  const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&M
     : super core::_Enum::•(index, _name)
     ;
   method toString() → core::String
     return "M";
 }
 abstract class _E2&_Enum&M extends core::_Enum implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M
+  const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M
     : super core::_Enum::•(index, _name)
     ;
   method toString() → core::String
     return "M";
 }
 abstract class _E6&_Enum&A extends core::_Enum implements self::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&A
+  const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&A
     : super core::_Enum::•(index, _name)
     ;
   method toString() → core::String
     return "A";
 }
 abstract class _E7&_Enum&A extends core::_Enum implements self::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&A
+  const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&A
     : super core::_Enum::•(index, _name)
     ;
   method toString() → core::String
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.expect
index 7e34a60..58c350e 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.expect
@@ -46,28 +46,28 @@
     return "E3.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E1&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&M1
+  const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&M1
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::String
     return super.{self::M1::foo};
 }
 abstract class _E2&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M1
+  const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M1
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::String
     return super.{self::M1::foo};
 }
 abstract class _E2&_Enum&M1&M2 = self::_E2&_Enum&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M1&M2
+  const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M1&M2
     : super self::_E2&_Enum&M1::•(index, _name)
     ;
   synthetic mixin-super-stub method bar() → core::int
     return super.{self::M2::bar}();
 }
 abstract class _E3&_Enum&M3 = core::_Enum with self::M3 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E3&_Enum&M3
+  const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&M3
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub set callOnAssignment(() → void f) → void
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.modular.expect
index 7e34a60..58c350e 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.modular.expect
@@ -46,28 +46,28 @@
     return "E3.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E1&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&M1
+  const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&M1
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::String
     return super.{self::M1::foo};
 }
 abstract class _E2&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M1
+  const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M1
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::String
     return super.{self::M1::foo};
 }
 abstract class _E2&_Enum&M1&M2 = self::_E2&_Enum&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M1&M2
+  const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M1&M2
     : super self::_E2&_Enum&M1::•(index, _name)
     ;
   synthetic mixin-super-stub method bar() → core::int
     return super.{self::M2::bar}();
 }
 abstract class _E3&_Enum&M3 = core::_Enum with self::M3 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E3&_Enum&M3
+  const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&M3
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub set callOnAssignment(() → void f) → void
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.outline.expect
index e559ae3..c13eae6 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.outline.expect
@@ -45,28 +45,28 @@
     return "E3.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E1&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&M1
+  const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&M1
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::String
     return super.{self::M1::foo};
 }
 abstract class _E2&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M1
+  const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M1
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub get foo() → core::String
     return super.{self::M1::foo};
 }
 abstract class _E2&_Enum&M1&M2 = self::_E2&_Enum&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M1&M2
+  const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M1&M2
     : super self::_E2&_Enum&M1::•(index, _name)
     ;
   synthetic mixin-super-stub method bar() → core::int
     return super.{self::M2::bar}();
 }
 abstract class _E3&_Enum&M3 = core::_Enum with self::M3 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E3&_Enum&M3
+  const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&M3
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub set callOnAssignment(() → void f) → void
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.transformed.expect
index 5bb1293..ed529ec 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.transformed.expect
@@ -46,28 +46,28 @@
     return "E3.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E1&_Enum&M1 extends core::_Enum implements self::M1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&M1
+  const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&M1
     : super core::_Enum::•(index, _name)
     ;
   get foo() → core::String
     return "foo";
 }
 abstract class _E2&_Enum&M1 extends core::_Enum implements self::M1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M1
+  const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M1
     : super core::_Enum::•(index, _name)
     ;
   get foo() → core::String
     return "foo";
 }
 abstract class _E2&_Enum&M1&M2 extends self::_E2&_Enum&M1 implements self::M2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M1&M2
+  const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M1&M2
     : super self::_E2&_Enum&M1::•(index, _name)
     ;
   method bar() → core::int
     return 42;
 }
 abstract class _E3&_Enum&M3 extends core::_Enum implements self::M3 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E3&_Enum&M3
+  const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&M3
     : super core::_Enum::•(index, _name)
     ;
   set callOnAssignment(() → void f) → void {
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.expect
index 08be341..98ee489 100644
--- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.expect
@@ -26,12 +26,12 @@
     return "E.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E&_Enum&GM<S extends core::num, T extends core::num> = core::_Enum with self::GM<self::_E&_Enum&GM::T> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&GM<self::_E&_Enum&GM::S, self::_E&_Enum&GM::T>
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&GM<self::_E&_Enum&GM::S, self::_E&_Enum&GM::T>
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E&_Enum&GM&M<S extends core::num, T extends core::num> = self::_E&_Enum&GM<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T> with self::M /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&GM&M<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T>
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&GM&M<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T>
     : super self::_E&_Enum&GM::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.modular.expect
index 08be341..98ee489 100644
--- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.modular.expect
@@ -26,12 +26,12 @@
     return "E.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E&_Enum&GM<S extends core::num, T extends core::num> = core::_Enum with self::GM<self::_E&_Enum&GM::T> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&GM<self::_E&_Enum&GM::S, self::_E&_Enum&GM::T>
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&GM<self::_E&_Enum&GM::S, self::_E&_Enum&GM::T>
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E&_Enum&GM&M<S extends core::num, T extends core::num> = self::_E&_Enum&GM<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T> with self::M /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&GM&M<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T>
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&GM&M<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T>
     : super self::_E&_Enum&GM::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.outline.expect
index 9d34f6d..3b352d4 100644
--- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.outline.expect
@@ -24,12 +24,12 @@
     return "E.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E&_Enum&GM<S extends core::num, T extends core::num> = core::_Enum with self::GM<self::_E&_Enum&GM::T> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&GM<self::_E&_Enum&GM::S, self::_E&_Enum&GM::T>
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&GM<self::_E&_Enum&GM::S, self::_E&_Enum&GM::T>
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E&_Enum&GM&M<S extends core::num, T extends core::num> = self::_E&_Enum&GM<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T> with self::M /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&GM&M<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T>
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&GM&M<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T>
     : super self::_E&_Enum&GM::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.transformed.expect
index 8ab54ee..c20d849 100644
--- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.transformed.expect
@@ -26,12 +26,12 @@
     return "E.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E&_Enum&GM<S extends core::num, T extends core::num> extends core::_Enum implements self::GM<self::_E&_Enum&GM::T> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&GM<self::_E&_Enum&GM::S, self::_E&_Enum&GM::T>
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&GM<self::_E&_Enum&GM::S, self::_E&_Enum&GM::T>
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E&_Enum&GM&M<S extends core::num, T extends core::num> extends self::_E&_Enum&GM<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T> implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&GM&M<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T>
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&GM&M<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T>
     : super self::_E&_Enum&GM::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.expect
index a8050a3..06fef70 100644
--- a/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.expect
@@ -39,7 +39,7 @@
     return "G.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&M
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method mixinMethod() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.modular.expect
index a8050a3..06fef70 100644
--- a/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.modular.expect
@@ -39,7 +39,7 @@
     return "G.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&M
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method mixinMethod() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.outline.expect
index 463b4be..c38c37e 100644
--- a/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.outline.expect
@@ -40,7 +40,7 @@
     return "G.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&M
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M
     : super core::_Enum::•(index, _name)
     ;
   synthetic mixin-super-stub method mixinMethod() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.transformed.expect
index 1c4a5e1..3f41571 100644
--- a/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.transformed.expect
@@ -39,7 +39,7 @@
     return "G.${this.{core::_Enum::_name}{core::String}}";
 }
 abstract class _E&_Enum&M extends core::_Enum implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&M
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M
     : super core::_Enum::•(index, _name)
     ;
   method mixinMethod() → void {}
diff --git a/pkg/front_end/testcases/extension_types/annotations.dart.strong.expect b/pkg/front_end/testcases/extension_types/annotations.dart.strong.expect
index 59aeaea..d675128 100644
--- a/pkg/front_end/testcases/extension_types/annotations.dart.strong.expect
+++ b/pkg/front_end/testcases/extension_types/annotations.dart.strong.expect
@@ -42,5 +42,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///annotations.dart:
 - Deprecated. (from org-dartlang-sdk:///sdk/lib/core/annotations.dart)
-- Deprecated._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart)
 - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
diff --git a/pkg/front_end/testcases/extension_types/annotations.dart.strong.modular.expect b/pkg/front_end/testcases/extension_types/annotations.dart.strong.modular.expect
index 59aeaea..d675128 100644
--- a/pkg/front_end/testcases/extension_types/annotations.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/extension_types/annotations.dart.strong.modular.expect
@@ -42,5 +42,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///annotations.dart:
 - Deprecated. (from org-dartlang-sdk:///sdk/lib/core/annotations.dart)
-- Deprecated._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart)
 - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
diff --git a/pkg/front_end/testcases/extension_types/annotations.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/annotations.dart.strong.transformed.expect
index 59aeaea..d675128 100644
--- a/pkg/front_end/testcases/extension_types/annotations.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extension_types/annotations.dart.strong.transformed.expect
@@ -42,5 +42,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///annotations.dart:
 - Deprecated. (from org-dartlang-sdk:///sdk/lib/core/annotations.dart)
-- Deprecated._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart)
 - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
diff --git a/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.expect b/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.expect
index f49450e..bf03966 100644
--- a/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.expect
+++ b/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.expect
@@ -1360,82 +1360,82 @@
     ;
 }
 abstract class _EnumWithT1&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT1&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT1&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT2&_Enum&F = core::_Enum with self::Class<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT2&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT2&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT3&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT3&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT3&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT4&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT4&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT4&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT5&_Enum&F = core::_Enum with self::Class<self::ConcreteClass> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT5&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT5&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT6&_Enum&F = core::_Enum with self::Class<self::Class<self::ConcreteClass>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT6&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT6&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT7&_Enum&F = core::_Enum with self::Class<core::Object> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT7&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT7&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT8&_Enum&F = core::_Enum with self::Class<core::int> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT8&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT8&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS1&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS1&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS1&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS2&_Enum&G = core::_Enum with self::G<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS2&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS2&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS3&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS3&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS3&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS4&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS4&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS4&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS5&_Enum&G = core::_Enum with self::G<self::ConcreteClass> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS5&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS5&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS6&_Enum&G = core::_Enum with self::G<self::Class<self::ConcreteClass>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS6&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS6&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS7&_Enum&G = core::_Enum with self::G<core::Object> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS7&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS7&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS8&_Enum&G = core::_Enum with self::G<core::int> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS8&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS8&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.modular.expect b/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.modular.expect
index f49450e..bf03966 100644
--- a/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.modular.expect
@@ -1360,82 +1360,82 @@
     ;
 }
 abstract class _EnumWithT1&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT1&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT1&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT2&_Enum&F = core::_Enum with self::Class<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT2&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT2&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT3&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT3&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT3&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT4&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT4&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT4&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT5&_Enum&F = core::_Enum with self::Class<self::ConcreteClass> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT5&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT5&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT6&_Enum&F = core::_Enum with self::Class<self::Class<self::ConcreteClass>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT6&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT6&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT7&_Enum&F = core::_Enum with self::Class<core::Object> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT7&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT7&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT8&_Enum&F = core::_Enum with self::Class<core::int> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT8&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT8&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS1&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS1&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS1&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS2&_Enum&G = core::_Enum with self::G<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS2&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS2&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS3&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS3&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS3&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS4&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS4&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS4&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS5&_Enum&G = core::_Enum with self::G<self::ConcreteClass> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS5&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS5&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS6&_Enum&G = core::_Enum with self::G<self::Class<self::ConcreteClass>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS6&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS6&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS7&_Enum&G = core::_Enum with self::G<core::Object> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS7&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS7&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS8&_Enum&G = core::_Enum with self::G<core::int> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS8&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS8&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.outline.expect b/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.outline.expect
index 17bf884..4860fd7 100644
--- a/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.outline.expect
@@ -1309,82 +1309,82 @@
     ;
 }
 abstract class _EnumWithT1&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT1&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT1&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT2&_Enum&F = core::_Enum with self::Class<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT2&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT2&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT3&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT3&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT3&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT4&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT4&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT4&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT5&_Enum&F = core::_Enum with self::Class<self::ConcreteClass> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT5&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT5&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT6&_Enum&F = core::_Enum with self::Class<self::Class<self::ConcreteClass>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT6&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT6&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT7&_Enum&F = core::_Enum with self::Class<core::Object> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT7&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT7&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT8&_Enum&F = core::_Enum with self::Class<core::int> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT8&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT8&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS1&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS1&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS1&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS2&_Enum&G = core::_Enum with self::G<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS2&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS2&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS3&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS3&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS3&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS4&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS4&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS4&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS5&_Enum&G = core::_Enum with self::G<self::ConcreteClass> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS5&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS5&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS6&_Enum&G = core::_Enum with self::G<self::Class<self::ConcreteClass>> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS6&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS6&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS7&_Enum&G = core::_Enum with self::G<core::Object> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS7&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS7&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS8&_Enum&G = core::_Enum with self::G<core::int> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS8&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS8&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.transformed.expect
index ce1e78b..a19c3fa 100644
--- a/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.transformed.expect
@@ -1360,82 +1360,82 @@
     ;
 }
 abstract class _EnumWithT1&_Enum&F extends core::_Enum implements self::Class<self::Class<dynamic>> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT1&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT1&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT2&_Enum&F extends core::_Enum implements self::Class<dynamic> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT2&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT2&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT3&_Enum&F extends core::_Enum implements self::Class<self::Class<dynamic>> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT3&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT3&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT4&_Enum&F extends core::_Enum implements self::Class<self::Class<dynamic>> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT4&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT4&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT5&_Enum&F extends core::_Enum implements self::Class<self::ConcreteClass> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT5&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT5&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT6&_Enum&F extends core::_Enum implements self::Class<self::Class<self::ConcreteClass>> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT6&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT6&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT7&_Enum&F extends core::_Enum implements self::Class<core::Object> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT7&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT7&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithT8&_Enum&F extends core::_Enum implements self::Class<core::int> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT8&_Enum&F
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT8&_Enum&F
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS1&_Enum&G extends core::_Enum implements self::G<self::Class<dynamic>> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS1&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS1&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS2&_Enum&G extends core::_Enum implements self::G<dynamic> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS2&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS2&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS3&_Enum&G extends core::_Enum implements self::G<self::Class<dynamic>> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS3&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS3&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS4&_Enum&G extends core::_Enum implements self::G<self::Class<dynamic>> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS4&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS4&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS5&_Enum&G extends core::_Enum implements self::G<self::ConcreteClass> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS5&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS5&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS6&_Enum&G extends core::_Enum implements self::G<self::Class<self::ConcreteClass>> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS6&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS6&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS7&_Enum&G extends core::_Enum implements self::G<core::Object> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS7&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS7&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _EnumWithS8&_Enum&G extends core::_Enum implements self::G<core::int> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS8&_Enum&G
+  const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS8&_Enum&G
     : super core::_Enum::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.expect
index 3a11aff..1893aeb 100644
--- a/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.expect
@@ -1986,62 +1986,62 @@
     ;
 }
 abstract class _E&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E4&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E4&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E4&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E5&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E5&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E5&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E6&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E7&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E8&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E13&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E13&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E13&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E14&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E14&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E14&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E15&_Enum&D extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E15&_Enum&D
+  const synthetic constructor •(core::int index, core::String _name) → self::_E15&_Enum&D
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E21&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E21&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E21&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E22&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E22&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E22&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E25&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E25&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E25&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.modular.expect b/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.modular.expect
index 3a11aff..1893aeb 100644
--- a/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.modular.expect
@@ -1986,62 +1986,62 @@
     ;
 }
 abstract class _E&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E4&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E4&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E4&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E5&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E5&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E5&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E6&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E7&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E8&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E13&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E13&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E13&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E14&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E14&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E14&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E15&_Enum&D extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E15&_Enum&D
+  const synthetic constructor •(core::int index, core::String _name) → self::_E15&_Enum&D
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E21&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E21&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E21&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E22&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E22&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E22&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E25&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E25&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E25&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.outline.expect b/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.outline.expect
index 3bf5f7d7..313d6db 100644
--- a/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.outline.expect
@@ -1929,62 +1929,62 @@
     ;
 }
 abstract class _E&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E4&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E4&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E4&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E5&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E5&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E5&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E6&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E7&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E8&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E13&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E13&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E13&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E14&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E14&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E14&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E15&_Enum&D extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E15&_Enum&D
+  const synthetic constructor •(core::int index, core::String _name) → self::_E15&_Enum&D
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E21&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E21&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E21&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E22&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E22&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E22&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E25&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E25&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E25&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.transformed.expect
index 3a11aff..1893aeb 100644
--- a/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.transformed.expect
@@ -1986,62 +1986,62 @@
     ;
 }
 abstract class _E&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E4&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E4&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E4&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E5&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E5&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E5&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E6&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E7&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E8&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E13&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E13&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E13&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E14&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E14&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E14&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E15&_Enum&D extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E15&_Enum&D
+  const synthetic constructor •(core::int index, core::String _name) → self::_E15&_Enum&D
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E21&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E21&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E21&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E22&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E22&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E22&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
 abstract class _E25&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_E25&_Enum&C
+  const synthetic constructor •(core::int index, core::String _name) → self::_E25&_Enum&C
     : super core::_Enum::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/general/extends_implements_void.dart.strong.expect b/pkg/front_end/testcases/general/extends_implements_void.dart.strong.expect
index efcc22c..b880311 100644
--- a/pkg/front_end/testcases/general/extends_implements_void.dart.strong.expect
+++ b/pkg/front_end/testcases/general/extends_implements_void.dart.strong.expect
@@ -127,7 +127,7 @@
     ;
 }
 abstract class _G&_Enum&void extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_G&_Enum&void
+  const synthetic constructor •(core::int index, core::String _name) → self::_G&_Enum&void
     : super core::_Enum::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/general/extends_implements_void.dart.strong.modular.expect b/pkg/front_end/testcases/general/extends_implements_void.dart.strong.modular.expect
index efcc22c..b880311 100644
--- a/pkg/front_end/testcases/general/extends_implements_void.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/general/extends_implements_void.dart.strong.modular.expect
@@ -127,7 +127,7 @@
     ;
 }
 abstract class _G&_Enum&void extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_G&_Enum&void
+  const synthetic constructor •(core::int index, core::String _name) → self::_G&_Enum&void
     : super core::_Enum::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/general/extends_implements_void.dart.strong.outline.expect b/pkg/front_end/testcases/general/extends_implements_void.dart.strong.outline.expect
index 62dd0b7..3104c1d 100644
--- a/pkg/front_end/testcases/general/extends_implements_void.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/general/extends_implements_void.dart.strong.outline.expect
@@ -124,7 +124,7 @@
     ;
 }
 abstract class _G&_Enum&void extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_G&_Enum&void
+  const synthetic constructor •(core::int index, core::String _name) → self::_G&_Enum&void
     : super core::_Enum::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/general/extends_implements_void.dart.strong.transformed.expect b/pkg/front_end/testcases/general/extends_implements_void.dart.strong.transformed.expect
index efcc22c..b880311 100644
--- a/pkg/front_end/testcases/general/extends_implements_void.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/extends_implements_void.dart.strong.transformed.expect
@@ -127,7 +127,7 @@
     ;
 }
 abstract class _G&_Enum&void extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_G&_Enum&void
+  const synthetic constructor •(core::int index, core::String _name) → self::_G&_Enum&void
     : super core::_Enum::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/general/issue40744.dart.strong.expect b/pkg/front_end/testcases/general/issue40744.dart.strong.expect
index 14c0b3d..eea1981 100644
--- a/pkg/front_end/testcases/general/issue40744.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue40744.dart.strong.expect
@@ -7,7 +7,7 @@
   core::print(input);
 }
 static method main() → void {
-  final core::Map<core::String, Null> nullValueMap = core::Map::fromEntries<core::String, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, dynamic>>}.{core::Iterable::map}<core::MapEntry<core::String, Null>>((core::MapEntry<core::String, dynamic> e) → core::MapEntry<core::String, Null> => new core::MapEntry::•<core::String, Null>(e.{core::MapEntry::key}{core::String}, null)){((core::MapEntry<core::String, dynamic>) → core::MapEntry<core::String, Null>) → core::Iterable<core::MapEntry<core::String, Null>>});
+  final core::Map<core::String, Null> nullValueMap = core::Map::fromEntries<core::String, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, dynamic>>}.{core::Iterable::map}<core::MapEntry<core::String, Null>>((core::MapEntry<core::String, dynamic> e) → core::MapEntry<core::String, Null> => new core::MapEntry::_<core::String, Null>(e.{core::MapEntry::key}{core::String}, null)){((core::MapEntry<core::String, dynamic>) → core::MapEntry<core::String, Null>) → core::Iterable<core::MapEntry<core::String, Null>>});
   self::helper(nullValueMap);
 }
 
diff --git a/pkg/front_end/testcases/general/issue40744.dart.strong.modular.expect b/pkg/front_end/testcases/general/issue40744.dart.strong.modular.expect
index 14c0b3d..eea1981 100644
--- a/pkg/front_end/testcases/general/issue40744.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/general/issue40744.dart.strong.modular.expect
@@ -7,7 +7,7 @@
   core::print(input);
 }
 static method main() → void {
-  final core::Map<core::String, Null> nullValueMap = core::Map::fromEntries<core::String, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, dynamic>>}.{core::Iterable::map}<core::MapEntry<core::String, Null>>((core::MapEntry<core::String, dynamic> e) → core::MapEntry<core::String, Null> => new core::MapEntry::•<core::String, Null>(e.{core::MapEntry::key}{core::String}, null)){((core::MapEntry<core::String, dynamic>) → core::MapEntry<core::String, Null>) → core::Iterable<core::MapEntry<core::String, Null>>});
+  final core::Map<core::String, Null> nullValueMap = core::Map::fromEntries<core::String, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, dynamic>>}.{core::Iterable::map}<core::MapEntry<core::String, Null>>((core::MapEntry<core::String, dynamic> e) → core::MapEntry<core::String, Null> => new core::MapEntry::_<core::String, Null>(e.{core::MapEntry::key}{core::String}, null)){((core::MapEntry<core::String, dynamic>) → core::MapEntry<core::String, Null>) → core::Iterable<core::MapEntry<core::String, Null>>});
   self::helper(nullValueMap);
 }
 
diff --git a/pkg/front_end/testcases/general/issue40744.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue40744.dart.strong.transformed.expect
index 14c0b3d..eea1981 100644
--- a/pkg/front_end/testcases/general/issue40744.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue40744.dart.strong.transformed.expect
@@ -7,7 +7,7 @@
   core::print(input);
 }
 static method main() → void {
-  final core::Map<core::String, Null> nullValueMap = core::Map::fromEntries<core::String, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, dynamic>>}.{core::Iterable::map}<core::MapEntry<core::String, Null>>((core::MapEntry<core::String, dynamic> e) → core::MapEntry<core::String, Null> => new core::MapEntry::•<core::String, Null>(e.{core::MapEntry::key}{core::String}, null)){((core::MapEntry<core::String, dynamic>) → core::MapEntry<core::String, Null>) → core::Iterable<core::MapEntry<core::String, Null>>});
+  final core::Map<core::String, Null> nullValueMap = core::Map::fromEntries<core::String, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, dynamic>>}.{core::Iterable::map}<core::MapEntry<core::String, Null>>((core::MapEntry<core::String, dynamic> e) → core::MapEntry<core::String, Null> => new core::MapEntry::_<core::String, Null>(e.{core::MapEntry::key}{core::String}, null)){((core::MapEntry<core::String, dynamic>) → core::MapEntry<core::String, Null>) → core::Iterable<core::MapEntry<core::String, Null>>});
   self::helper(nullValueMap);
 }
 
diff --git a/pkg/front_end/testcases/general/type_scopes.dart.strong.expect b/pkg/front_end/testcases/general/type_scopes.dart.strong.expect
index ffa0ab0..5a389b1 100644
--- a/pkg/front_end/testcases/general/type_scopes.dart.strong.expect
+++ b/pkg/front_end/testcases/general/type_scopes.dart.strong.expect
@@ -92,7 +92,7 @@
     ;
 }
 abstract class _Enum&_Enum&M<T10 extends dynamic> = core::_Enum with self::M<self::_Enum&_Enum&M::T10%> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_Enum&_Enum&M<self::_Enum&_Enum&M::T10%>
+  const synthetic constructor •(core::int index, core::String _name) → self::_Enum&_Enum&M<self::_Enum&_Enum&M::T10%>
     : super core::_Enum::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/general/type_scopes.dart.strong.modular.expect b/pkg/front_end/testcases/general/type_scopes.dart.strong.modular.expect
index ffa0ab0..5a389b1 100644
--- a/pkg/front_end/testcases/general/type_scopes.dart.strong.modular.expect
+++ b/pkg/front_end/testcases/general/type_scopes.dart.strong.modular.expect
@@ -92,7 +92,7 @@
     ;
 }
 abstract class _Enum&_Enum&M<T10 extends dynamic> = core::_Enum with self::M<self::_Enum&_Enum&M::T10%> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_Enum&_Enum&M<self::_Enum&_Enum&M::T10%>
+  const synthetic constructor •(core::int index, core::String _name) → self::_Enum&_Enum&M<self::_Enum&_Enum&M::T10%>
     : super core::_Enum::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/general/type_scopes.dart.strong.outline.expect b/pkg/front_end/testcases/general/type_scopes.dart.strong.outline.expect
index ce181e1..e5e5679 100644
--- a/pkg/front_end/testcases/general/type_scopes.dart.strong.outline.expect
+++ b/pkg/front_end/testcases/general/type_scopes.dart.strong.outline.expect
@@ -95,7 +95,7 @@
     ;
 }
 abstract class _Enum&_Enum&M<T10 extends dynamic> = core::_Enum with self::M<self::_Enum&_Enum&M::T10%> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_Enum&_Enum&M<self::_Enum&_Enum&M::T10%>
+  const synthetic constructor •(core::int index, core::String _name) → self::_Enum&_Enum&M<self::_Enum&_Enum&M::T10%>
     : super core::_Enum::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/general/type_scopes.dart.strong.transformed.expect b/pkg/front_end/testcases/general/type_scopes.dart.strong.transformed.expect
index 24616eb..4293fe6 100644
--- a/pkg/front_end/testcases/general/type_scopes.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/type_scopes.dart.strong.transformed.expect
@@ -88,7 +88,7 @@
     ;
 }
 abstract class _Enum&_Enum&M<T10 extends dynamic> extends core::_Enum implements self::M<self::_Enum&_Enum&M::T10%> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(final core::int index, final core::String _name) → self::_Enum&_Enum&M<self::_Enum&_Enum&M::T10%>
+  const synthetic constructor •(core::int index, core::String _name) → self::_Enum&_Enum&M<self::_Enum&_Enum&M::T10%>
     : super core::_Enum::•(index, _name)
     ;
 }
diff --git a/pkg/front_end/testcases/patterns/access_order.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/access_order.dart.strong.transformed.expect
index 70fff15..f69a4d5 100644
--- a/pkg/front_end/testcases/patterns/access_order.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/access_order.dart.strong.transformed.expect
@@ -651,8 +651,8 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:452:12 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:460:12 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:469:12 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:478:12 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:454:12 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:462:12 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:471:12 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:480:12 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 1232, effectively constant: 4
diff --git a/pkg/front_end/testcases/patterns/cache_lookups.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/cache_lookups.dart.strong.transformed.expect
index fe997bd..90dfa29 100644
--- a/pkg/front_end/testcases/patterns/cache_lookups.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cache_lookups.dart.strong.transformed.expect
@@ -610,8 +610,8 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:452:12 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:460:12 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:469:12 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:478:12 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:454:12 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:462:12 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:471:12 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:480:12 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 1208, effectively constant: 4
diff --git a/pkg/front_end/testcases/patterns/caching_constants.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/caching_constants.dart.strong.transformed.expect
index 862b931..d9085f6 100644
--- a/pkg/front_end/testcases/patterns/caching_constants.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/caching_constants.dart.strong.transformed.expect
@@ -98,7 +98,7 @@
     }
   }
   get /* from org-dartlang-sdk:///sdk/lib/collection/maps.dart */ entries() → core::Iterable<core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>> {
-    return this.{col::MapBase::keys}{core::Iterable<self::_MyMap&Object&MapMixin::K%>}.{core::Iterable::map}<core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>>((self::_MyMap&Object&MapMixin::K% key) → core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%> => new core::MapEntry::•<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>(key, let self::_MyMap&Object&MapMixin::V? #t22 = this.{col::MapBase::[]}(key){(core::Object?) → self::_MyMap&Object&MapMixin::V?} in #t22 == null ?{self::_MyMap&Object&MapMixin::V%} let self::_MyMap&Object&MapMixin::V? #t23 = #t22 in #t23 == null ?{self::_MyMap&Object&MapMixin::V%} #t23 as self::_MyMap&Object&MapMixin::V% : #t23{self::_MyMap&Object&MapMixin::V%} : #t22{self::_MyMap&Object&MapMixin::V%})){((self::_MyMap&Object&MapMixin::K%) → core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>) → core::Iterable<core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>>};
+    return this.{col::MapBase::keys}{core::Iterable<self::_MyMap&Object&MapMixin::K%>}.{core::Iterable::map}<core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>>((self::_MyMap&Object&MapMixin::K% key) → core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%> => new core::MapEntry::_<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>(key, let self::_MyMap&Object&MapMixin::V? #t22 = this.{col::MapBase::[]}(key){(core::Object?) → self::_MyMap&Object&MapMixin::V?} in #t22 == null ?{self::_MyMap&Object&MapMixin::V%} let self::_MyMap&Object&MapMixin::V? #t23 = #t22 in #t23 == null ?{self::_MyMap&Object&MapMixin::V%} #t23 as self::_MyMap&Object&MapMixin::V% : #t23{self::_MyMap&Object&MapMixin::V%} : #t22{self::_MyMap&Object&MapMixin::V%})){((self::_MyMap&Object&MapMixin::K%) → core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>) → core::Iterable<core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>>};
   }
   method /* from org-dartlang-sdk:///sdk/lib/collection/maps.dart */ map<K2 extends core::Object? = dynamic, V2 extends core::Object? = dynamic>((self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%) → core::MapEntry<self::_MyMap&Object&MapMixin::map::K2%, self::_MyMap&Object&MapMixin::map::V2%> transform) → core::Map<self::_MyMap&Object&MapMixin::map::K2%, self::_MyMap&Object&MapMixin::map::V2%> {
     core::Map<self::_MyMap&Object&MapMixin::map::K2%, self::_MyMap&Object&MapMixin::map::V2%> result = <self::_MyMap&Object&MapMixin::map::K2%, self::_MyMap&Object&MapMixin::map::V2%>{};
diff --git a/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.strong.transformed.expect
index 732b761..ab9e2c9 100644
--- a/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.strong.transformed.expect
@@ -563,8 +563,8 @@
 }
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:452:12 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:460:12 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:469:12 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:478:12 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:454:12 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:462:12 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:471:12 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:480:12 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 1101, effectively constant: 4
diff --git a/pkg/front_end/testcases/patterns/negative_length.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/negative_length.dart.strong.transformed.expect
index faccb43..349e51b 100644
--- a/pkg/front_end/testcases/patterns/negative_length.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/negative_length.dart.strong.transformed.expect
@@ -582,8 +582,8 @@
 
 Extra constant evaluation status:
 Evaluated: InstanceInvocation @ org-dartlang-testcase:///negative_length.dart:12:41 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:452:12 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:460:12 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:469:12 -> IntConstant(-1)
-Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:478:12 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:454:12 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:462:12 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:471:12 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:480:12 -> IntConstant(-1)
 Extra constant evaluation: evaluated: 1121, effectively constant: 5
diff --git a/pkg/vm_service/test/sdk_break_with_mixin_test.dart.stops b/pkg/vm_service/test/sdk_break_with_mixin_test.dart.stops
index fa73f62..fe5d7d9 100644
--- a/pkg/vm_service/test/sdk_break_with_mixin_test.dart.stops
+++ b/pkg/vm_service/test/sdk_break_with_mixin_test.dart.stops
@@ -1,3 +1,3 @@
 // This file is generated by running the associated test with --update-goldens. Do not edit this file directly.
 
-set.dart:141:21 (sdk_break_with_mixin_lib.dart:19:5)
+set.dart:142:21 (sdk_break_with_mixin_lib.dart:19:5)
diff --git a/pkg/vm_service/test/step_through_mixin_from_sdk_test.dart.stops b/pkg/vm_service/test/step_through_mixin_from_sdk_test.dart.stops
index ac9af73..226213b 100644
--- a/pkg/vm_service/test/step_through_mixin_from_sdk_test.dart.stops
+++ b/pkg/vm_service/test/step_through_mixin_from_sdk_test.dart.stops
@@ -3,19 +3,19 @@
 step_through_mixin_from_sdk_lib.dart:10:13
 step_through_mixin_from_sdk_lib.dart:10:15
 step_through_mixin_from_sdk_lib.dart:11:11
-list.dart:87:25
-list.dart:88:16
-list.dart:88:23
-list.dart:89:16
-list.dart:89:23
-list.dart:90:15
+list.dart:89:25
+list.dart:90:16
+list.dart:90:23
+list.dart:91:16
+list.dart:91:23
+list.dart:92:15
 step_through_mixin_from_sdk_lib.dart:23:23
 step_through_mixin_from_sdk_lib.dart:24:5
-list.dart:90:19
-list.dart:91:26
-list.dart:91:18
-list.dart:89:34
-list.dart:89:23
-list.dart:95:5
+list.dart:92:19
+list.dart:93:26
+list.dart:93:18
+list.dart:91:34
+list.dart:91:23
+list.dart:97:5
 step_through_mixin_from_sdk_lib.dart:14:5
 step_through_mixin_from_sdk_lib.dart:16:1
diff --git a/sdk/lib/async/future.dart b/sdk/lib/async/future.dart
index 17e1b90..490b12d 100644
--- a/sdk/lib/async/future.dart
+++ b/sdk/lib/async/future.dart
@@ -252,7 +252,7 @@
   ///
   /// If a non-future value is returned, the returned future is completed
   /// with that value.
-  factory(FutureOr<T> computation()) {
+  factory Future(FutureOr<T> computation()) {
     _Future<T> result = _Future<T>();
     Timer.run(() {
       FutureOr<T> computationResult;
@@ -279,7 +279,7 @@
   ///
   /// If calling [computation] returns a non-future value,
   /// the returned future is completed with that value.
-  factory microtask(FutureOr<T> computation()) {
+  factory Future.microtask(FutureOr<T> computation()) {
     _Future<T> result = _Future<T>();
     scheduleMicrotask(() {
       FutureOr<T> computationResult;
@@ -319,7 +319,7 @@
   ///
   /// To create a future with a known value, use [Future.syncValue] instead,
   /// as `Future.syncValue(12)`.
-  factory sync(FutureOr<T> computation()) {
+  factory Future.sync(FutureOr<T> computation()) {
     FutureOr<T> result;
     try {
       result = computation();
@@ -339,7 +339,7 @@
   /// a `try`/`catch`, you can use [Future.sync] which catches an error
   /// into its returned future, as `Future.sync(() => computation())`.
   @Since("3.10")
-  factory syncValue(T value) => _Future<T>().._setValue(value);
+  factory Future.syncValue(T value) => _Future<T>().._setValue(value);
 
   /// Creates a future completed with [value].
   ///
@@ -368,7 +368,7 @@
   /// ```
   @pragma("vm:entry-point")
   @pragma("vm:prefer-inline")
-  factory value([FutureOr<T>? value]) {
+  factory Future.value([FutureOr<T>? value]) {
     return _Future<T>.immediate(value == null ? value as T : value);
   }
 
@@ -389,7 +389,7 @@
   ///
   /// final error = await getFuture(); // Throws.
   /// ```
-  factory error(Object error, [StackTrace? stackTrace]) =>
+  factory Future.error(Object error, [StackTrace? stackTrace]) =>
       _Future<T>.immediateError(_interceptUserError(error, stackTrace));
 
   /// Creates a future that runs its computation after a delay.
@@ -427,7 +427,10 @@
   /// });
   /// print(now.difference(later)); // At least a second.
   /// ```
-  factory delayed(Duration duration, [FutureOr<T> Function()? computation]) {
+  factory Future.delayed(
+    Duration duration, [
+    FutureOr<T> Function()? computation,
+  ]) {
     if (computation == null && !typeAcceptsNull<T>()) {
       throw ArgumentError.value(
         null,
@@ -1232,7 +1235,7 @@
   ///   completer.complete('completion value');
   /// }
   /// ```
-  factory() => _AsyncCompleter<T>();
+  factory Completer() => _AsyncCompleter<T>();
 
   /// Completes the future synchronously.
   ///
@@ -1283,7 +1286,7 @@
   ///   foo();  // In this case, foo() runs after bar().
   /// });
   /// ```
-  factory sync() => _SyncCompleter<T>();
+  factory Completer.sync() => _SyncCompleter<T>();
 
   /// The future that is completed by this completer.
   ///
diff --git a/sdk/lib/async/future_impl.dart b/sdk/lib/async/future_impl.dart
index d3be5f9..bddb11d 100644
--- a/sdk/lib/async/future_impl.dart
+++ b/sdk/lib/async/future_impl.dart
@@ -70,7 +70,7 @@
   return AsyncError._(error, stackTrace);
 }
 
-abstract class _Completer<T>() implements Completer<T> {
+abstract class _Completer<T> implements Completer<T> {
   @pragma("vm:entry-point")
   final _Future<T> future = _Future<T>();
 
@@ -92,7 +92,7 @@
 
 /// Completer which completes future asynchronously.
 @pragma("vm:entry-point")
-class _AsyncCompleter<T>() extends _Completer<T> {
+class _AsyncCompleter<T> extends _Completer<T> {
   void complete([FutureOr<T>? value]) {
     if (!future._mayComplete) throw StateError("Future already completed");
     future._asyncComplete(value == null ? value as dynamic : value);
@@ -107,7 +107,7 @@
 ///
 /// Created by [Completer.sync]. Use with caution.
 @pragma("vm:entry-point")
-class _SyncCompleter<T>() extends _Completer<T> {
+class _SyncCompleter<T> extends _Completer<T> {
   void complete([FutureOr<T>? value]) {
     if (!future._mayComplete) throw StateError("Future already completed");
     future._complete(value == null ? value as dynamic : value);
diff --git a/sdk/lib/async/schedule_microtask.dart b/sdk/lib/async/schedule_microtask.dart
index 34aeb3d..9728677 100644
--- a/sdk/lib/async/schedule_microtask.dart
+++ b/sdk/lib/async/schedule_microtask.dart
@@ -164,7 +164,7 @@
   Zone.current.scheduleMicrotask(Zone.current.bindCallbackGuarded(callback));
 }
 
-abstract interface class _AsyncRun {
+class _AsyncRun {
   /// Schedule the given callback before any other event in the event-loop.
   external static void _scheduleImmediate(void Function() callback);
 }
diff --git a/sdk/lib/async/stream.dart b/sdk/lib/async/stream.dart
index 8dc86f8..f400c84 100644
--- a/sdk/lib/async/stream.dart
+++ b/sdk/lib/async/stream.dart
@@ -134,7 +134,9 @@
 /// to return `true` if it wants to signal that it behaves like a broadcast
 /// stream.
 @vmIsolateUnsendable
-abstract mixin class const Stream<T>() {
+abstract mixin class Stream<T> {
+  const Stream();
+
   /// Creates an empty broadcast stream.
   ///
   /// This is a stream which does nothing except sending a done event
@@ -160,7 +162,7 @@
   ///
   /// The stream can be listened to more than once,
   /// whether it reports itself as broadcast or not.
-  const factory empty({@Since("3.2") bool broadcast}) = _EmptyStream<T>;
+  const factory Stream.empty({@Since("3.2") bool broadcast}) = _EmptyStream<T>;
 
   /// Creates a stream which emits a single data event before closing.
   ///
@@ -179,7 +181,7 @@
   ///
   /// The returned stream is effectively equivalent to one created by
   /// `(() async* { yield value; } ())` or `Future<T>.value(value).asStream()`.
-  factory value(T value) =>
+  factory Stream.value(T value) =>
       (_AsyncStreamController<T>(null, null, null, null)
             .._add(value)
             .._closeUnchecked())
@@ -207,7 +209,7 @@
   /// `Future<T>.error(error, stackTrace).asStream()`, by or
   /// `(() async* { throw error; } ())`, except that you can control the
   /// stack trace as well.
-  factory error(Object error, [StackTrace? stackTrace]) {
+  factory Stream.error(Object error, [StackTrace? stackTrace]) {
     AsyncError(:error, :stackTrace) = _interceptUserError(error, stackTrace);
     return (_AsyncStreamController<T>(null, null, null, null)
           .._addError(error, stackTrace)
@@ -235,7 +237,7 @@
   /// // "Future complete" after 'futureTask' finished.
   /// // "Done" when stream completed.
   /// ```
-  factory fromFuture(Future<T> future) {
+  factory Stream.fromFuture(Future<T> future) {
     // Use the controller's buffering to fill in the value even before
     // the stream has a listener. For a single value, it's not worth it
     // to wait for a listener before doing the `then` on the future.
@@ -292,7 +294,7 @@
   /// // "Future complete" after 'doneTask' finished.
   /// // "Done" when stream completed.
   /// ```
-  factory fromFutures(Iterable<Future<T>> futures) {
+  factory Stream.fromFutures(Iterable<Future<T>> futures) {
     _StreamController<T> controller = _SyncStreamController<T>(
       null,
       null,
@@ -349,60 +351,61 @@
   /// final numbers = [1, 2, 3, 5, 6, 7];
   /// final stream = Stream.fromIterable(numbers);
   /// ```
-  factory fromIterable(Iterable<T> elements) => Stream<T>.multi((controller) {
-    Iterator<T> iterator;
-    try {
-      iterator = elements.iterator;
-    } catch (e, s) {
-      var error = _interceptCaughtError(e, s);
-      controller.addError(error.error, error.stackTrace);
-      controller.close();
-      return;
-    }
-    var zone = Zone.current;
-    var isScheduled = true;
-
-    void next() {
-      if (!controller.hasListener || controller.isPaused) {
-        // Cancelled or paused since scheduled.
-        isScheduled = false;
-        return;
-      }
-      bool hasNext;
-      try {
-        hasNext = iterator.moveNext();
-      } catch (e, s) {
-        var error = _interceptCaughtError(e, s);
-        controller.addErrorSync(error.error, error.stackTrace);
-        controller.closeSync();
-        return;
-      }
-      if (hasNext) {
+  factory Stream.fromIterable(Iterable<T> elements) =>
+      Stream<T>.multi((controller) {
+        Iterator<T> iterator;
         try {
-          controller.addSync(iterator.current);
+          iterator = elements.iterator;
         } catch (e, s) {
           var error = _interceptCaughtError(e, s);
-          controller.addErrorSync(error.error, error.stackTrace);
+          controller.addError(error.error, error.stackTrace);
+          controller.close();
+          return;
         }
-        if (controller.hasListener && !controller.isPaused) {
-          zone.scheduleMicrotask(next);
-        } else {
-          isScheduled = false;
-        }
-      } else {
-        controller.closeSync();
-      }
-    }
+        var zone = Zone.current;
+        var isScheduled = true;
 
-    controller.onResume = () {
-      if (!isScheduled) {
-        isScheduled = true;
+        void next() {
+          if (!controller.hasListener || controller.isPaused) {
+            // Cancelled or paused since scheduled.
+            isScheduled = false;
+            return;
+          }
+          bool hasNext;
+          try {
+            hasNext = iterator.moveNext();
+          } catch (e, s) {
+            var error = _interceptCaughtError(e, s);
+            controller.addErrorSync(error.error, error.stackTrace);
+            controller.closeSync();
+            return;
+          }
+          if (hasNext) {
+            try {
+              controller.addSync(iterator.current);
+            } catch (e, s) {
+              var error = _interceptCaughtError(e, s);
+              controller.addErrorSync(error.error, error.stackTrace);
+            }
+            if (controller.hasListener && !controller.isPaused) {
+              zone.scheduleMicrotask(next);
+            } else {
+              isScheduled = false;
+            }
+          } else {
+            controller.closeSync();
+          }
+        }
+
+        controller.onResume = () {
+          if (!isScheduled) {
+            isScheduled = true;
+            zone.scheduleMicrotask(next);
+          }
+        };
+
         zone.scheduleMicrotask(next);
-      }
-    };
-
-    zone.scheduleMicrotask(next);
-  });
+      });
 
   /// Creates a multi-subscription stream.
   ///
@@ -467,7 +470,7 @@
   ///   }
   /// }
   /// ```
-  factory multi(
+  factory Stream.multi(
     void Function(MultiStreamController<T>) onListen, {
     bool isBroadcast = false,
   }) {
@@ -495,7 +498,10 @@
   ///
   /// stream.forEach(print); // Outputs event values 0,1,4,9,16.
   /// ```
-  factory periodic(Duration period, [T computation(int computationCount)?]) {
+  factory Stream.periodic(
+    Duration period, [
+    T computation(int computationCount)?,
+  ]) {
     if (computation == null && !typeAcceptsNull<T>()) {
       throw ArgumentError.value(
         null,
@@ -585,7 +591,7 @@
   /// stringStream.transform(DuplicationTransformer());
   /// ```
   /// The resulting stream is a broadcast stream if [source] is.
-  factory eventTransformed(
+  factory Stream.eventTransformed(
     Stream<dynamic> source,
     EventSink<dynamic> mapSink(EventSink<T> sink),
   ) {
@@ -2303,7 +2309,7 @@
 class StreamView<T> extends Stream<T> {
   final Stream<T> _stream;
 
-  const new(Stream<T> stream) : _stream = stream;
+  const StreamView(Stream<T> stream) : _stream = stream;
 
   bool get isBroadcast => _stream.isBroadcast;
 
@@ -2509,7 +2515,7 @@
   /// // Use as follows:
   /// intStream.transform(duplicator);
   /// ```
-  const factory(
+  const factory StreamTransformer(
     StreamSubscription<T> onListen(Stream<S> stream, bool cancelOnError),
   ) = _StreamSubscriptionTransformer<S, T>;
 
@@ -2597,7 +2603,7 @@
   /// // Error 5: Worst
   /// // Error 6: Worst
   /// ```
-  factory fromHandlers({
+  factory StreamTransformer.fromHandlers({
     void handleData(S data, EventSink<T> sink)?,
     void handleError(Object error, StackTrace stackTrace, EventSink<T> sink)?,
     void handleDone(EventSink<T> sink)?,
@@ -2613,7 +2619,7 @@
   /// final splitDecoded = StreamTransformer<List<int>, String>.fromBind(
   ///     (stream) => stream.transform(utf8.decoder).transform(LineSplitter()));
   /// ```
-  factory fromBind(Stream<T> Function(Stream<S>) bind) =
+  factory StreamTransformer.fromBind(Stream<T> Function(Stream<S>) bind) =
       _StreamBindTransformer<S, T>;
 
   /// Adapts [source] to be a `StreamTransformer<TS, TT>`.
@@ -2671,8 +2677,9 @@
 /// Base class for implementing [StreamTransformer].
 ///
 /// Contains default implementations of every method except [bind].
-abstract class const StreamTransformerBase<S, T>()
-    implements StreamTransformer<S, T> {
+abstract class StreamTransformerBase<S, T> implements StreamTransformer<S, T> {
+  const StreamTransformerBase();
+
   StreamTransformer<RS, RT> cast<RS, RT>() =>
       StreamTransformer.castFrom<S, T, RS, RT>(this);
 }
@@ -2689,7 +2696,7 @@
 /// has completed with `true`, and only until [moveNext] is called again.
 abstract interface class StreamIterator<T> {
   /// Create a [StreamIterator] on [stream].
-  factory(Stream<T> stream) =>
+  factory StreamIterator(Stream<T> stream) =>
       // TODO(lrn): use redirecting factory constructor when type
       // arguments are supported.
       _StreamIterator<T>(stream);
diff --git a/sdk/lib/async/stream_controller.dart b/sdk/lib/async/stream_controller.dart
index 453fcc3..23068cb 100644
--- a/sdk/lib/async/stream_controller.dart
+++ b/sdk/lib/async/stream_controller.dart
@@ -108,7 +108,7 @@
   ///
   /// If the stream is canceled before the controller needs data the
   /// [onResume] call might not be executed.
-  factory({
+  factory StreamController({
     void onListen()?,
     void onPause()?,
     void onResume()?,
@@ -169,7 +169,11 @@
   /// and the [onCancel] is called when there are no longer any active listeners.
   /// If a listener is added again later, after the [onCancel] was called,
   /// the [onListen] will be called again.
-  factory broadcast({void onListen()?, void onCancel()?, bool sync = false}) {
+  factory StreamController.broadcast({
+    void onListen()?,
+    void onCancel()?,
+    bool sync = false,
+  }) {
     return sync
         ? _SyncBroadcastStreamController<T>(onListen, onCancel)
         : _AsyncBroadcastStreamController<T>(onListen, onCancel);
@@ -398,25 +402,25 @@
   Future close();
 }
 
-abstract interface class _StreamControllerLifecycle<T> {
+abstract class _StreamControllerLifecycle<T> {
   StreamSubscription<T> _subscribe(
     void onData(T data)?,
     Function? onError,
     void onDone()?,
     bool cancelOnError,
   );
-  void _recordPause(StreamSubscription<T> subscription);
-  void _recordResume(StreamSubscription<T> subscription);
-  Future<void>? _recordCancel(StreamSubscription<T> subscription);
+  void _recordPause(StreamSubscription<T> subscription) {}
+  void _recordResume(StreamSubscription<T> subscription) {}
+  Future<void>? _recordCancel(StreamSubscription<T> subscription) => null;
 }
 
 // Base type for implementations of stream controllers.
-abstract interface class _StreamControllerBase<T>
+abstract class _StreamControllerBase<T>
     implements
         StreamController<T>,
         _StreamControllerLifecycle<T>,
         _EventSink<T>,
-        _EventDispatch<T>;
+        _EventDispatch<T> {}
 
 /// Default implementation of [StreamController].
 ///
diff --git a/sdk/lib/async/stream_impl.dart b/sdk/lib/async/stream_impl.dart
index ee65a0d..9bb5a9a 100644
--- a/sdk/lib/async/stream_impl.dart
+++ b/sdk/lib/async/stream_impl.dart
@@ -5,7 +5,7 @@
 part of "dart:async";
 
 /// Abstract and private interface for a place to put events.
-abstract interface class _EventSink<T> {
+abstract class _EventSink<T> {
   void _add(T data);
   void _addError(Object error, StackTrace stackTrace);
   void _close();
@@ -16,7 +16,7 @@
 /// Used by event buffering to finally dispatch the pending event, where
 /// [_EventSink] is where the event first enters the stream subscription,
 /// and may yet be buffered.
-abstract interface class _EventDispatch<T> {
+abstract class _EventDispatch<T> {
   void _sendData(T data);
   void _sendError(Object error, StackTrace stackTrace);
   void _sendDone();
@@ -502,7 +502,7 @@
 // -------------------------------------------------------------------
 // Common base class for single and multi-subscription streams.
 // -------------------------------------------------------------------
-abstract class _StreamImpl<T>() extends Stream<T> {
+abstract class _StreamImpl<T> extends Stream<T> {
   // ------------------------------------------------------------------
   // Stream interface.
 
@@ -557,7 +557,7 @@
 void _nullDoneHandler() {}
 
 /// A delayed event on a buffering stream subscription.
-abstract class _DelayedEvent<T>() {
+abstract class _DelayedEvent<T> {
   /// Added as a linked list on the [StreamController].
   _DelayedEvent? next;
 
@@ -566,22 +566,28 @@
 }
 
 /// A delayed data event.
-class _DelayedData<T>(final T value) extends _DelayedEvent<T> {
+class _DelayedData<T> extends _DelayedEvent<T> {
+  final T value;
+  _DelayedData(this.value);
   void perform(_EventDispatch<T> dispatch) {
     dispatch._sendData(value);
   }
 }
 
 /// A delayed error event.
-class _DelayedError(final Object error, final StackTrace stackTrace)
-    extends _DelayedEvent {
+class _DelayedError extends _DelayedEvent {
+  final Object error;
+  final StackTrace stackTrace;
+
+  _DelayedError(this.error, this.stackTrace);
   void perform(_EventDispatch dispatch) {
     dispatch._sendError(error, stackTrace);
   }
 }
 
 /// A delayed done event.
-class const _DelayedDone() implements _DelayedEvent {
+class _DelayedDone implements _DelayedEvent {
+  const _DelayedDone();
   void perform(_EventDispatch dispatch) {
     dispatch._sendDone();
   }
@@ -594,7 +600,7 @@
 }
 
 /// Container and manager of pending events for a stream subscription.
-class _PendingEvents<T>() {
+class _PendingEvents<T> {
   // No async event has been scheduled.
   static const int stateUnscheduled = 0;
   // An async event has been scheduled to run a function.
diff --git a/sdk/lib/async/timer.dart b/sdk/lib/async/timer.dart
index 599fdf5..413b164 100644
--- a/sdk/lib/async/timer.dart
+++ b/sdk/lib/async/timer.dart
@@ -39,7 +39,7 @@
   ///     Timer(const Duration(seconds: 5), () => print('Timer finished'));
   /// // Outputs after 5 seconds: "Timer finished".
   /// ```
-  factory(Duration duration, void Function() callback) {
+  factory Timer(Duration duration, void Function() callback) {
     if (Zone.current == Zone.root) {
       // No need to bind the callback. We know that the root's timer will
       // be invoked in the root zone.
@@ -85,7 +85,7 @@
   /// // 3
   /// // "Cancel timer"
   /// ```
-  factory periodic(Duration duration, void callback(Timer timer)) {
+  factory Timer.periodic(Duration duration, void callback(Timer timer)) {
     if (Zone.current == Zone.root) {
       // No need to bind the callback. We know that the root's timer will
       // be invoked in the root zone.
diff --git a/sdk/lib/async/zone_specification.dart b/sdk/lib/async/zone_specification.dart
index e224092..41deec2 100644
--- a/sdk/lib/async/zone_specification.dart
+++ b/sdk/lib/async/zone_specification.dart
@@ -31,7 +31,7 @@
   /// If the [handleUncaughtError] is provided, the new zone will be a new
   /// "error zone" which will prevent errors from flowing into other
   /// error zones (see [Zone.errorZone], [Zone.inSameErrorZone]).
-  const factory({
+  const factory ZoneSpecification({
     HandleUncaughtErrorHandler? handleUncaughtError,
     RunHandler? run,
     RunUnaryHandler? runUnary,
@@ -53,7 +53,7 @@
   /// and any individually provided handlers.
   /// If a handler is provided both through [other] and individually,
   /// the individually provided handler overrides the one from [other].
-  factory from(
+  factory ZoneSpecification.from(
     ZoneSpecification other, {
     HandleUncaughtErrorHandler? handleUncaughtError,
     RunHandler? run,
diff --git a/sdk/lib/collection/hash_map.dart b/sdk/lib/collection/hash_map.dart
index fb70e31..12e7713 100644
--- a/sdk/lib/collection/hash_map.dart
+++ b/sdk/lib/collection/hash_map.dart
@@ -178,7 +178,7 @@
   /// and `isValidKey` is omitted, the resulting map is identity based,
   /// and the `isValidKey` defaults to accepting all keys.
   /// Such a map can be created directly using [HashMap.identity].
-  external factory({
+  external factory HashMap({
     bool Function(K, K)? equals,
     int Function(K)? hashCode,
     bool Function(dynamic)? isValidKey,
@@ -193,7 +193,7 @@
   /// ```dart
   /// HashMap<K, V>(equals: identical, hashCode: identityHashCode)
   /// ```
-  external factory identity();
+  external factory HashMap.identity();
 
   /// Creates a [HashMap] that contains all key/value pairs of [other].
   ///
@@ -204,7 +204,7 @@
   /// final fromBaseMap = HashMap<int, String>.from(baseMap);
   /// print(fromBaseMap); // {1: A, 2: B, 3: C}
   /// ```
-  factory from(Map<dynamic, dynamic> other) {
+  factory HashMap.from(Map<dynamic, dynamic> other) {
     HashMap<K, V> result = HashMap<K, V>();
     other.forEach((dynamic k, dynamic v) {
       result[k as K] = v as V;
@@ -219,7 +219,7 @@
   /// final mapOf = HashMap<num, Object>.of(baseMap);
   /// print(mapOf); // {1: A, 2: B, 3: C}
   /// ```
-  factory of(Map<K, V> other) => HashMap<K, V>()..addAll(other);
+  factory HashMap.of(Map<K, V> other) => HashMap<K, V>()..addAll(other);
 
   /// Creates a [HashMap] where the keys and values are computed from the
   /// [iterable].
@@ -239,7 +239,7 @@
   ///     key: (i) => i, value: (i) => i * i);
   /// print(mapFromIterable); // {11: 121, 12: 144, 13: 169, 14: 196}
   /// ```
-  factory fromIterable(
+  factory HashMap.fromIterable(
     Iterable iterable, {
     K Function(dynamic element)? key,
     V Function(dynamic element)? value,
@@ -266,7 +266,7 @@
   /// print(mapFromIterables);
   /// // {Earth: 1, Mercury: 0.06, Mars: 0.11, Venus: 0.81}
   /// ```
-  factory fromIterables(Iterable<K> keys, Iterable<V> values) {
+  factory HashMap.fromIterables(Iterable<K> keys, Iterable<V> values) {
     HashMap<K, V> map = HashMap<K, V>();
     MapBase._fillMapWithIterables(map, keys, values);
     return map;
@@ -286,6 +286,6 @@
   /// final map = HashMap.fromEntries(numbers.map((i) => MapEntry(i, i * i)));
   /// print(map); // {11: 121, 12: 144, 13: 169, 14: 196}
   /// ```
-  factory fromEntries(Iterable<MapEntry<K, V>> entries) =>
+  factory HashMap.fromEntries(Iterable<MapEntry<K, V>> entries) =>
       HashMap<K, V>()..addEntries(entries);
 }
diff --git a/sdk/lib/collection/hash_set.dart b/sdk/lib/collection/hash_set.dart
index f397767..4abe2a2 100644
--- a/sdk/lib/collection/hash_set.dart
+++ b/sdk/lib/collection/hash_set.dart
@@ -132,7 +132,7 @@
   /// and `isValidKey` is omitted, the resulting set is identity based,
   /// and the `isValidKey` defaults to accepting all keys.
   /// Such a map can be created directly using [HashSet.identity].
-  external factory({
+  external factory HashSet({
     bool Function(E, E)? equals,
     int Function(E)? hashCode,
     bool Function(dynamic)? isValidKey,
@@ -144,7 +144,7 @@
   /// ```dart
   /// HashSet<E>(equals: identical, hashCode: identityHashCode)
   /// ```
-  external factory identity();
+  external factory HashSet.identity();
 
   /// Create a hash set containing all [elements].
   ///
@@ -167,7 +167,7 @@
   /// final hashSetFrom = HashSet<int>.from(numbers);
   /// print(hashSetFrom); // fx {20, 10, 30}
   /// ```
-  factory from(Iterable<dynamic> elements) {
+  factory HashSet.from(Iterable<dynamic> elements) {
     HashSet<E> result = HashSet<E>();
     for (final e in elements) {
       result.add(e as E);
@@ -187,7 +187,7 @@
   /// final hashSetOf = HashSet<num>.of(baseSet);
   /// print(hashSetOf); // fx {3, 1, 2}
   /// ```
-  factory of(Iterable<E> elements) => HashSet<E>()..addAll(elements);
+  factory HashSet.of(Iterable<E> elements) => HashSet<E>()..addAll(elements);
 
   /// Provides an iterator that iterates over the elements of this set.
   ///
diff --git a/sdk/lib/collection/linked_hash_map.dart b/sdk/lib/collection/linked_hash_map.dart
index 10511a6..42cacce 100644
--- a/sdk/lib/collection/linked_hash_map.dart
+++ b/sdk/lib/collection/linked_hash_map.dart
@@ -162,7 +162,7 @@
   /// and `isValidKey` is omitted, the resulting map is identity based,
   /// and the `isValidKey` defaults to accepting all keys.
   /// Such a map can be created directly using [LinkedHashMap.identity].
-  external factory({
+  external factory LinkedHashMap({
     bool Function(K, K)? equals,
     int Function(K)? hashCode,
     bool Function(dynamic)? isValidKey,
@@ -175,7 +175,7 @@
   /// LinkedHashMap<K, V>(equals: identical,
   ///                     hashCode: identityHashCode)
   /// ```
-  external factory identity();
+  external factory LinkedHashMap.identity();
 
   /// Creates a [LinkedHashMap] that contains all key value pairs of [other].
   ///
@@ -187,7 +187,7 @@
   /// final fromBaseMap = LinkedHashMap<int, String>.from(baseMap);
   /// print(fromBaseMap); // {1: A, 2: B, 3: C}
   /// ```
-  factory from(Map<dynamic, dynamic> other) {
+  factory LinkedHashMap.from(Map<dynamic, dynamic> other) {
     LinkedHashMap<K, V> result = LinkedHashMap<K, V>();
     other.forEach((dynamic k, dynamic v) {
       result[k as K] = v as V;
@@ -202,7 +202,8 @@
   /// final mapOf = LinkedHashMap<num, Object>.of(baseMap);
   /// print(mapOf); // {3: A, 2: B, 1: C, 4: D}
   /// ```
-  factory of(Map<K, V> other) => LinkedHashMap<K, V>()..addAll(other);
+  factory LinkedHashMap.of(Map<K, V> other) =>
+      LinkedHashMap<K, V>()..addAll(other);
 
   /// Creates a [LinkedHashMap] where the keys and values are computed from the
   /// [iterable].
@@ -222,7 +223,7 @@
   ///     LinkedHashMap.fromIterable(numbers, key: (i) => i, value: (i) => i * i);
   /// print(mapFromIterable); // {11: 121, 12: 144, 13: 169, 14: 196}
   /// ```
-  factory fromIterable(
+  factory LinkedHashMap.fromIterable(
     Iterable iterable, {
     K Function(dynamic element)? key,
     V Function(dynamic element)? value,
@@ -249,7 +250,7 @@
   /// print(mapFromIterables);
   /// // {Mercury: 0.06, Venus: 0.81, Earth: 1, Mars: 0.11}
   /// ```
-  factory fromIterables(Iterable<K> keys, Iterable<V> values) {
+  factory LinkedHashMap.fromIterables(Iterable<K> keys, Iterable<V> values) {
     LinkedHashMap<K, V> map = LinkedHashMap<K, V>();
     MapBase._fillMapWithIterables(map, keys, values);
     return map;
@@ -268,6 +269,6 @@
   /// final map = LinkedHashMap.fromEntries(numbers.map((i) => MapEntry(i, i * i)));
   /// print(map); // {11: 121, 12: 144, 13: 169, 14: 196}
   /// ```
-  factory fromEntries(Iterable<MapEntry<K, V>> entries) =>
+  factory LinkedHashMap.fromEntries(Iterable<MapEntry<K, V>> entries) =>
       LinkedHashMap<K, V>()..addEntries(entries);
 }
diff --git a/sdk/lib/collection/linked_hash_set.dart b/sdk/lib/collection/linked_hash_set.dart
index e4fbd87..67fdf12 100644
--- a/sdk/lib/collection/linked_hash_set.dart
+++ b/sdk/lib/collection/linked_hash_set.dart
@@ -138,7 +138,7 @@
   /// and `isValidKey` is omitted, the resulting set is identity based,
   /// and the `isValidKey` defaults to accepting all keys.
   /// Such a map can be created directly using [LinkedHashSet.identity].
-  external factory({
+  external factory LinkedHashSet({
     bool Function(E, E)? equals,
     int Function(E)? hashCode,
     bool Function(dynamic)? isValidKey,
@@ -150,7 +150,7 @@
   /// ```dart
   /// LinkedHashSet<E>(equals: identical, hashCode: identityHashCode)
   /// ```
-  external factory identity();
+  external factory LinkedHashSet.identity();
 
   /// Create a linked hash set containing all [elements].
   ///
@@ -171,7 +171,7 @@
   /// final setFrom = LinkedHashSet<int>.from(numbers);
   /// print(setFrom); // {10, 20, 30}
   /// ```
-  factory from(Iterable<dynamic> elements) {
+  factory LinkedHashSet.from(Iterable<dynamic> elements) {
     LinkedHashSet<E> result = LinkedHashSet<E>();
     for (final element in elements) {
       result.add(element as E);
@@ -189,7 +189,8 @@
   /// final setOf = LinkedHashSet<num>.of(baseSet);
   /// print(setOf); // {1, 2, 3}
   /// ```
-  factory of(Iterable<E> elements) => LinkedHashSet<E>()..addAll(elements);
+  factory LinkedHashSet.of(Iterable<E> elements) =>
+      LinkedHashSet<E>()..addAll(elements);
 
   /// Executes a function on each element of the set.
   ///
diff --git a/sdk/lib/collection/linked_list.dart b/sdk/lib/collection/linked_list.dart
index ab8e1db..87e3d93 100644
--- a/sdk/lib/collection/linked_list.dart
+++ b/sdk/lib/collection/linked_list.dart
@@ -270,7 +270,7 @@
 /// linked list, and otherwise the `list` property is `null`.
 ///
 /// When created, an entry is not in any linked list.
-abstract base mixin class LinkedListEntry<E extends LinkedListEntry<E>>() {
+abstract base mixin class LinkedListEntry<E extends LinkedListEntry<E>> {
   LinkedList<E>? _list;
   E? _next;
   E? _previous;
diff --git a/sdk/lib/collection/list.dart b/sdk/lib/collection/list.dart
index d45ac99..5a70115 100644
--- a/sdk/lib/collection/list.dart
+++ b/sdk/lib/collection/list.dart
@@ -31,7 +31,9 @@
 /// to the growable list, or, if possible, use `DelegatingList` from
 /// "package:collection/collection.dart" instead of a `ListMixin`.
 // TODO: @Deprecated("Use List instead")
-abstract mixin class const ListBase<E>() implements List<E> {
+abstract mixin class ListBase<E> implements List<E> {
+  const ListBase();
+
   // Iterable interface.
   // TODO(lrn): When we get composable mixins, reuse IterableMixin instead
   // of redeclaring everything.
diff --git a/sdk/lib/collection/maps.dart b/sdk/lib/collection/maps.dart
index 9902236..252608d 100644
--- a/sdk/lib/collection/maps.dart
+++ b/sdk/lib/collection/maps.dart
@@ -18,7 +18,9 @@
 ///
 /// A more efficient implementation is usually possible by overriding
 /// some of the other members as well.
-abstract mixin class const MapBase<K, V>() implements Map<K, V> {
+abstract mixin class MapBase<K, V> implements Map<K, V> {
+  const MapBase();
+
   Iterable<K> get keys;
   V? operator [](Object? key);
   operator []=(K key, V value);
@@ -324,7 +326,7 @@
   final Map<K, V> _map;
 
   /// Creates a view which forwards operations to [map].
-  const new(Map<K, V> map) : _map = map;
+  const MapView(Map<K, V> map) : _map = map;
 
   Map<RK, RV> cast<RK, RV>() => _map.cast<RK, RV>();
   V? operator [](Object? key) => _map[key];
diff --git a/sdk/lib/collection/queue.dart b/sdk/lib/collection/queue.dart
index 8963f88..7dff245 100644
--- a/sdk/lib/collection/queue.dart
+++ b/sdk/lib/collection/queue.dart
@@ -6,8 +6,8 @@
 
 /// Helper interface to hide [EfficientLengthIterable] from the public
 /// declaration of [Queue].
-abstract interface class _QueueIterable<E>
-    implements EfficientLengthIterable<E>, HideEfficientLengthIterable<E>;
+abstract class _QueueIterable<E>
+    implements EfficientLengthIterable<E>, HideEfficientLengthIterable<E> {}
 
 /// A [Queue] is a collection that can be manipulated at both ends. One
 /// can iterate over the elements of a queue through [forEach] or with
@@ -39,7 +39,7 @@
 /// ```
 abstract interface class Queue<E> implements Iterable<E>, _QueueIterable<E> {
   /// Creates a queue.
-  factory() = ListQueue<E>;
+  factory Queue() = ListQueue<E>;
 
   /// Creates a queue containing all [elements].
   ///
@@ -54,13 +54,13 @@
   /// Queue<SubType> subQueue =
   ///     Queue<SubType>.from(superQueue.whereType<SubType>());
   /// ```
-  factory from(Iterable elements) = ListQueue<E>.from;
+  factory Queue.from(Iterable elements) = ListQueue<E>.from;
 
   /// Creates a queue from [elements].
   ///
   /// The element order in the queue is as if the elements were added using
   /// [addLast] in the order provided by [elements].iterator.
-  factory of(Iterable<E> elements) = ListQueue<E>.of;
+  factory Queue.of(Iterable<E> elements) = ListQueue<E>.of;
 
   /// Adapts [source] to be a `Queue<T>`.
   ///
@@ -145,7 +145,7 @@
 ///
 /// Both the [_DoubleLinkedQueueElement] and [_DoubleLinkedQueueSentinel]
 /// implement this interface.
-abstract class _DoubleLinkedQueueEntry<E>() {
+abstract class _DoubleLinkedQueueEntry<E> {
   _DoubleLinkedQueueEntry<E>? _previousLink;
   _DoubleLinkedQueueEntry<E>? _nextLink;
 
@@ -290,7 +290,7 @@
   /// Queue<SubType> subQueue =
   ///     DoubleLinkedQueue<SubType>.from(superQueue.whereType<SubType>());
   /// ```
-  factory from(Iterable<dynamic> elements) {
+  factory DoubleLinkedQueue.from(Iterable<dynamic> elements) {
     DoubleLinkedQueue<E> list = DoubleLinkedQueue<E>();
     for (final e in elements) {
       list.addLast(e as E);
@@ -302,7 +302,8 @@
   ///
   /// The element order in the queue is as if the elements were added using
   /// [addLast] in the order provided by [elements].iterator.
-  factory of(Iterable<E> elements) => DoubleLinkedQueue<E>()..addAll(elements);
+  factory DoubleLinkedQueue.of(Iterable<E> elements) =>
+      DoubleLinkedQueue<E>()..addAll(elements);
 
   Queue<R> cast<R>() => Queue.castFrom<E, R>(this);
 
@@ -634,7 +635,7 @@
   /// final queue = ListQueue<int>.from(numbers);
   /// print(queue); // {10, 20, 30}
   /// ```
-  factory from(Iterable<dynamic> elements) {
+  factory ListQueue.from(Iterable<dynamic> elements) {
     if (elements is List<dynamic>) {
       int length = elements.length;
       ListQueue<E> queue = ListQueue<E>(length + 1);
@@ -667,7 +668,8 @@
   /// final numQueue = ListQueue<num>.of(baseQueue);
   /// print(numQueue); // {1.0, 2.0, 3.0}
   /// ```
-  factory of(Iterable<E> elements) => ListQueue<E>()..addAll(elements);
+  factory ListQueue.of(Iterable<E> elements) =>
+      ListQueue<E>()..addAll(elements);
 
   // Iterable interface.
 
diff --git a/sdk/lib/collection/set.dart b/sdk/lib/collection/set.dart
index 0c6b81d..68c0f30 100644
--- a/sdk/lib/collection/set.dart
+++ b/sdk/lib/collection/set.dart
@@ -20,10 +20,11 @@
 /// Implementations of `Set` using this base should consider also implementing
 /// `clear` in constant time. The default implementation works by removing every
 /// element.
-abstract mixin class const SetBase<E>() implements Set<E> {
+abstract mixin class SetBase<E> implements Set<E> {
   // This class reimplements all of [IterableMixin].
   // If/when Dart mixins get more powerful, we should just create a single
   // Mixin class from IterableMixin and the new methods of this class.
+  const SetBase();
 
   bool add(E value);
 
diff --git a/sdk/lib/collection/splay_tree.dart b/sdk/lib/collection/splay_tree.dart
index 33e55db..e61c6c8 100644
--- a/sdk/lib/collection/splay_tree.dart
+++ b/sdk/lib/collection/splay_tree.dart
@@ -35,7 +35,7 @@
 /// are expected to be quick to access again.
 /// It performs basic operations such as insertion, look-up and
 /// removal, in O(log(n)) expected amortized time.
-abstract class _SplayTree<K, Node extends _SplayTreeNode<K, Node>>() {
+abstract class _SplayTree<K, Node extends _SplayTreeNode<K, Node>> {
   // The root node of the splay tree. It will contain either the last
   // element inserted or the last element looked up.
   abstract Node? _root;
@@ -431,7 +431,7 @@
   /// final fromBaseMap = SplayTreeMap<int, String>.from(baseMap);
   /// print(fromBaseMap); // {1: A, 2: B, 3: C}
   /// ```
-  factory from(
+  factory SplayTreeMap.from(
     Map<Object?, Object?> other, [
     int Function(K key1, K key2)? compare,
     bool Function(dynamic potentialKey)? isValidKey,
@@ -453,7 +453,7 @@
   /// final mapOf = SplayTreeMap<num, Object>.of(baseMap);
   /// print(mapOf); // {1: C, 2: B, 3: A, 4: D}
   /// ```
-  factory of(
+  factory SplayTreeMap.of(
     Map<K, V> other, [
     int Function(K key1, K key2)? compare,
     bool Function(dynamic potentialKey)? isValidKey,
@@ -478,7 +478,7 @@
   ///         key: (i) => i, value: (i) => i * i);
   /// print(mapFromIterable); // {11: 121, 12: 144, 13: 169, 14: 196}
   /// ```
-  factory fromIterable(
+  factory SplayTreeMap.fromIterable(
     Iterable iterable, {
     K Function(dynamic element)? key,
     V Function(dynamic element)? value,
@@ -506,7 +506,7 @@
   /// final mapFromIterables = SplayTreeMap.fromIterables(keys, values);
   /// print(mapFromIterables); // {1: A, 2: B, 3: C, 4: D}
   /// ```
-  factory fromIterables(
+  factory SplayTreeMap.fromIterables(
     Iterable<K> keys,
     Iterable<V> values, [
     int Function(K key1, K key2)? compare,
@@ -1049,7 +1049,7 @@
   /// final setFrom = SplayTreeSet<int>.from(numbers);
   /// print(setFrom); // {10, 20, 30}
   /// ```
-  factory from(
+  factory SplayTreeSet.from(
     Iterable elements, [
     int Function(E key1, E key2)? compare,
     bool Function(dynamic potentialKey)? isValidKey,
@@ -1075,7 +1075,7 @@
   /// final setOf = SplayTreeSet<num>.of(baseSet);
   /// print(setOf); // {1, 2, 3}
   /// ```
-  factory of(
+  factory SplayTreeSet.of(
     Iterable<E> elements, [
     int Function(E key1, E key2)? compare,
     bool Function(dynamic potentialKey)? isValidKey,
diff --git a/sdk/lib/convert/ascii.dart b/sdk/lib/convert/ascii.dart
index e12f299..842be02 100644
--- a/sdk/lib/convert/ascii.dart
+++ b/sdk/lib/convert/ascii.dart
@@ -27,8 +27,9 @@
 ///
 /// Treats any non-ASCII character (U+0080..U+10FFFF) as an invalid input
 /// to endcoding, and any byte &ge; 128 as an invalid input to decoding.
-final class const AsciiCodec({final bool _allowInvalid = false})
-    extends Encoding {
+final class AsciiCodec extends Encoding {
+  final bool _allowInvalid;
+
   /// Instantiates a new [AsciiCodec].
   ///
   /// If [_allowInvalid] is `true`, the [decode] method and the converter
@@ -39,7 +40,7 @@
   /// Calls to the [decode] method can choose to override this default.
   ///
   /// Encoders will not accept invalid (non-ASCII) characters.
-  this;
+  const AsciiCodec({this._allowInvalid = false});
 
   /// The name of this codec is "us-ascii".
   String get name => "us-ascii";
@@ -71,8 +72,11 @@
 
 // Superclass for [AsciiEncoder] and [Latin1Encoder].
 // Generalizes common operations that only differ by a mask;
-class const _UnicodeSubsetEncoder(final int _subsetMask)
-    extends Converter<String, List<int>> {
+class _UnicodeSubsetEncoder extends Converter<String, List<int>> {
+  final int _subsetMask;
+
+  const _UnicodeSubsetEncoder(this._subsetMask);
+
   /// Converts the [String] into a list of its code units.
   ///
   /// If [start] and [end] are provided, only the substring
@@ -120,8 +124,8 @@
 /// final asciiValues = asciiEncoder.convert(sample);
 /// print(asciiValues); // [68, 97, 114, 116]
 /// ```
-final class const AsciiEncoder() extends _UnicodeSubsetEncoder {
-  this : super(_asciiMask);
+final class AsciiEncoder extends _UnicodeSubsetEncoder {
+  const AsciiEncoder() : super(_asciiMask);
 }
 
 /// This class encodes chunked strings to bytes (unsigned 8-bit
@@ -236,7 +240,8 @@
 /// print(result.codeUnits.last.toRadixString(16)); // fffd
 /// ```
 final class AsciiDecoder extends _UnicodeSubsetDecoder {
-  const new({bool allowInvalid = false}) : super(allowInvalid, _asciiMask);
+  const AsciiDecoder({bool allowInvalid = false})
+    : super(allowInvalid, _asciiMask);
 
   /// Starts a chunked conversion.
   ///
diff --git a/sdk/lib/convert/base64.dart b/sdk/lib/convert/base64.dart
index a56e74a..b9e8ab6 100644
--- a/sdk/lib/convert/base64.dart
+++ b/sdk/lib/convert/base64.dart
@@ -64,10 +64,10 @@
 /// It does not allow invalid characters when decoding and it requires,
 /// and generates, padding so that the input is always a multiple of four
 /// characters.
-final class const Base64Codec._(final Base64Encoder _encoder)
-    extends Codec<List<int>, String> {
-  const new() : this._(const Base64Encoder());
-  const new urlSafe() : this._(const Base64Encoder.urlSafe());
+final class Base64Codec extends Codec<List<int>, String> {
+  final Base64Encoder _encoder;
+  const Base64Codec() : _encoder = const Base64Encoder();
+  const Base64Codec.urlSafe() : _encoder = const Base64Encoder.urlSafe();
 
   Base64Encoder get encoder => _encoder;
 
@@ -254,10 +254,11 @@
 /// final encodedSample = base64Encoder.convert(sample.codeUnits);
 /// print(encodedSample); // RGFydCBpcyBvcGVuIHNvdXJjZQ==
 /// ```
-final class const Base64Encoder._(final bool _urlSafe)
-    extends Converter<List<int>, String> {
-  const new() : this._(false);
-  const new urlSafe() : this._(true);
+final class Base64Encoder extends Converter<List<int>, String> {
+  final bool _urlSafe;
+
+  const Base64Encoder() : _urlSafe = false;
+  const Base64Encoder.urlSafe() : _urlSafe = true;
 
   String convert(List<int> input) {
     if (input.isEmpty) return "";
@@ -461,7 +462,7 @@
   }
 }
 
-abstract class _Base64EncoderSink() extends ByteConversionSink {
+abstract class _Base64EncoderSink extends ByteConversionSink {
   void add(List<int> source) {
     _add(source, 0, source.length, false);
   }
@@ -535,7 +536,9 @@
 /// // Print as string using UTF-8 decoder
 /// print(utf8.decode(decodedBytes)); // Dart is open source
 /// ```
-final class const Base64Decoder() extends Converter<String, List<int>> {
+final class Base64Decoder extends Converter<String, List<int>> {
+  const Base64Decoder();
+
   /// Decodes the characters of [input] from [start] to [end] as base64.
   ///
   /// If [start] is omitted, it defaults to the start of [input].
@@ -559,7 +562,7 @@
 }
 
 /// Helper class implementing base64 decoding with intermediate state.
-class _Base64Decoder() {
+class _Base64Decoder {
   /// Shift-count to extract the values stored in [_state].
   static const int _valueShift = 2;
 
diff --git a/sdk/lib/convert/byte_conversion.dart b/sdk/lib/convert/byte_conversion.dart
index a59e743..7b2bc15 100644
--- a/sdk/lib/convert/byte_conversion.dart
+++ b/sdk/lib/convert/byte_conversion.dart
@@ -9,11 +9,14 @@
 ///
 /// Instead of limiting the interface to one non-chunked list of bytes it
 /// accepts its input in chunks (themselves being lists of bytes).
-abstract mixin class const ByteConversionSink()
+abstract mixin class ByteConversionSink
     implements ChunkedConversionSink<List<int>> {
-  factory withCallback(void Function(List<int> accumulated) callback) =
-      _ByteCallbackSink;
-  factory from(Sink<List<int>> sink) = _ByteAdapterSink;
+  const ByteConversionSink();
+
+  factory ByteConversionSink.withCallback(
+    void Function(List<int> accumulated) callback,
+  ) = _ByteCallbackSink;
+  factory ByteConversionSink.from(Sink<List<int>> sink) = _ByteAdapterSink;
 
   /// Adds the next [chunk] to `this`.
   ///
diff --git a/sdk/lib/convert/chunked_conversion.dart b/sdk/lib/convert/chunked_conversion.dart
index 1e12aff..b95a010 100644
--- a/sdk/lib/convert/chunked_conversion.dart
+++ b/sdk/lib/convert/chunked_conversion.dart
@@ -12,8 +12,9 @@
 /// specialized types of `ChunkedConversionSink`.
 abstract interface class ChunkedConversionSink<T> implements Sink<T> {
   ChunkedConversionSink();
-  factory withCallback(void Function(List<T> accumulated) callback) =
-      _SimpleCallbackSink<T>;
+  factory ChunkedConversionSink.withCallback(
+    void Function(List<T> accumulated) callback,
+  ) = _SimpleCallbackSink<T>;
 
   /// Adds chunked data to this sink.
   ///
diff --git a/sdk/lib/convert/codec.dart b/sdk/lib/convert/codec.dart
index e694c78..55c0666 100644
--- a/sdk/lib/convert/codec.dart
+++ b/sdk/lib/convert/codec.dart
@@ -16,7 +16,9 @@
 /// The [Codec] class provides a default implementation of
 /// [encode], [decode], [fuse] and [inverted].
 /// Subclasses can choose to provide more efficient implementations of these.
-abstract mixin class const Codec<S, T>() {
+abstract mixin class Codec<S, T> {
+  const Codec();
+
   /// Encodes [input].
   ///
   /// The input is encoded as if by `encoder.convert`.
diff --git a/sdk/lib/convert/converter.dart b/sdk/lib/convert/converter.dart
index be00727..9f20422 100644
--- a/sdk/lib/convert/converter.dart
+++ b/sdk/lib/convert/converter.dart
@@ -8,8 +8,9 @@
 ///
 /// The [Converter] class provides a default implementation for every method
 /// other than [convert].
-abstract mixin class const Converter<S, T>()
-    implements StreamTransformerBase<S, T> {
+abstract mixin class Converter<S, T> implements StreamTransformerBase<S, T> {
+  const Converter();
+
   /// Adapts [source] to be a `Converter<TS, TT>`.
   ///
   /// This allows [source] to be used at the new type, but at run-time it
diff --git a/sdk/lib/convert/encoding.dart b/sdk/lib/convert/encoding.dart
index 545f9bd..a659ea3 100644
--- a/sdk/lib/convert/encoding.dart
+++ b/sdk/lib/convert/encoding.dart
@@ -12,7 +12,9 @@
 /// which is not incremental. It collects the entire input before
 /// decoding. Subclasses can choose to use that implementation,
 /// or implement a more efficient stream decoding.
-abstract class const Encoding() extends Codec<String, List<int>> {
+abstract class Encoding extends Codec<String, List<int>> {
+  const Encoding();
+
   /// Returns the encoder from `String` to `List<int>`.
   ///
   /// It may be stateful and should not be reused.
diff --git a/sdk/lib/convert/html_escape.dart b/sdk/lib/convert/html_escape.dart
index 7824162..e6744c1 100644
--- a/sdk/lib/convert/html_escape.dart
+++ b/sdk/lib/convert/html_escape.dart
@@ -70,24 +70,24 @@
 /// escaped = htmlEscape.convert(unescaped);
 /// print(escaped); // Path: /system/
 /// ```
-final class const HtmlEscapeMode._(
-  final String _name,
+final class HtmlEscapeMode {
+  final String _name;
 
   /// Whether to escape '<' and '>'.
-  final bool escapeLtGt,
+  final bool escapeLtGt;
 
   /// Whether to escape '"' (quote).
-  final bool escapeQuot,
+  final bool escapeQuot;
 
   /// Whether to escape "'" (apostrophe).
-  final bool escapeApos,
+  final bool escapeApos;
 
   /// Whether to escape "/" (forward slash, solidus).
   ///
   /// Escaping a slash is recommended to avoid cross-site scripting attacks by
   /// [the Open Web Application Security Project](https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#RULE_.231_-_HTML_Escape_Before_Inserting_Untrusted_Data_into_HTML_Element_Content)
-  final bool escapeSlash,
-) {
+  final bool escapeSlash;
+
   /// Default escaping mode, which escapes all characters.
   ///
   /// The result of such an escaping is usable both in element content and
@@ -151,6 +151,14 @@
     false,
   );
 
+  const HtmlEscapeMode._(
+    this._name,
+    this.escapeLtGt,
+    this.escapeQuot,
+    this.escapeApos,
+    this.escapeSlash,
+  );
+
   /// Create a custom escaping mode.
   ///
   /// The [_name] is only used as the result of [toString],
@@ -159,13 +167,13 @@
   /// All modes escape `&`.
   /// The mode can further be set to escape `<` and `>` ([escapeLtGt]),
   /// `"` ([escapeQuot]), `'` ([escapeApos]), and/or `/` ([escapeSlash]).
-  const new({
-    String name = "custom",
-    bool escapeLtGt = false,
-    bool escapeQuot = false,
-    bool escapeApos = false,
-    bool escapeSlash = false,
-  }) : this._(name, escapeLtGt, escapeQuot, escapeApos, escapeSlash);
+  const HtmlEscapeMode({
+    this._name = "custom",
+    this.escapeLtGt = false,
+    this.escapeQuot = false,
+    this.escapeApos = false,
+    this.escapeSlash = false,
+  });
 
   String toString() => _name;
 }
@@ -223,7 +231,7 @@
   /// [HtmlEscapeMode.element], only the corresponding subset of HTML
   /// characters is escaped.
   /// The default is to escape all HTML characters.
-  const new([this.mode = HtmlEscapeMode.unknown]);
+  const HtmlEscape([this.mode = HtmlEscapeMode.unknown]);
 
   String convert(String text) {
     var val = _convert(text, 0, text.length);
diff --git a/sdk/lib/convert/json.dart b/sdk/lib/convert/json.dart
index 2d69604..6e530a7 100644
--- a/sdk/lib/convert/json.dart
+++ b/sdk/lib/convert/json.dart
@@ -192,7 +192,7 @@
   ///
   /// If [_toEncodable] is omitted, it defaults to a function that returns the
   /// result of calling `.toJson()` on the unencodable object.
-  const new({this._reviver, this._toEncodable});
+  const JsonCodec({this._reviver, this._toEncodable});
 
   /// Creates a `JsonCodec` with the given reviver.
   ///
@@ -297,7 +297,7 @@
   ///
   /// If [toEncodable] is omitted, it defaults to calling `.toJson()` on
   /// the object.
-  const new([Object? Function(dynamic object)? toEncodable])
+  const JsonEncoder([Object? Function(dynamic object)? toEncodable])
     : indent = null,
       _toEncodable = toEncodable;
 
@@ -317,7 +317,7 @@
   ///
   /// If [toEncodable] is omitted, it defaults to calling `.toJson()` on
   /// the object.
-  const new withIndent(
+  const JsonEncoder.withIndent(
     this.indent, [
     Object? Function(dynamic object)? toEncodable,
   ]) : _toEncodable = toEncodable;
@@ -621,7 +621,7 @@
   /// Constructs a new JsonDecoder.
   ///
   /// The [reviver] may be `null`.
-  const new([Object? Function(Object? key, Object? value)? reviver])
+  const JsonDecoder([Object? Function(Object? key, Object? value)? reviver])
     : _reviver = reviver;
 
   /// Converts the given JSON-string [input] to its corresponding object.
diff --git a/sdk/lib/convert/latin1.dart b/sdk/lib/convert/latin1.dart
index 789c1ee..9e5607e 100644
--- a/sdk/lib/convert/latin1.dart
+++ b/sdk/lib/convert/latin1.dart
@@ -21,8 +21,9 @@
 
 /// A [Latin1Codec] encodes strings to ISO Latin-1 (aka ISO-8859-1) bytes
 /// and decodes Latin-1 bytes to strings.
-final class const Latin1Codec({final bool _allowInvalid = false})
-    extends Encoding {
+final class Latin1Codec extends Encoding {
+  final bool _allowInvalid;
+
   /// Instantiates a new [Latin1Codec].
   ///
   /// If [_allowInvalid] is true, the [decode] method and the converter
@@ -31,7 +32,7 @@
   /// Calls to the [decode] method can override this default.
   ///
   /// Encoders will not accept invalid (non Latin-1) characters.
-  this;
+  const Latin1Codec({this._allowInvalid = false});
 
   /// The name of this codec, "iso-8859-1".
   String get name => "iso-8859-1";
@@ -71,8 +72,8 @@
 /// final encoded = latin1Encoder.convert(sample);
 /// print(encoded); // [224, 225, 226, 227, 228, 229]
 /// ```
-final class const Latin1Encoder() extends _UnicodeSubsetEncoder {
-  this : super(_latin1Mask);
+final class Latin1Encoder extends _UnicodeSubsetEncoder {
+  const Latin1Encoder() : super(_latin1Mask);
 }
 
 /// This class converts Latin-1 bytes (lists of unsigned 8-bit integers)
@@ -113,7 +114,8 @@
   /// If it is `true`, [convert] replaces invalid bytes with the Unicode
   /// Replacement character `U+FFFD` (�).
   /// Otherwise it throws a [FormatException].
-  const new({bool allowInvalid = false}) : super(allowInvalid, _latin1Mask);
+  const Latin1Decoder({bool allowInvalid = false})
+    : super(allowInvalid, _latin1Mask);
 
   /// Starts a chunked conversion.
   ///
diff --git a/sdk/lib/convert/line_splitter.dart b/sdk/lib/convert/line_splitter.dart
index 7a87bc9..c27deaf 100644
--- a/sdk/lib/convert/line_splitter.dart
+++ b/sdk/lib/convert/line_splitter.dart
@@ -35,7 +35,9 @@
 /// // 3:  garbage-collected
 /// // 4:  language with C-style syntax
 /// ```
-final class const LineSplitter() extends StreamTransformerBase<String, String> {
+final class LineSplitter extends StreamTransformerBase<String, String> {
+  const LineSplitter();
+
   /// Split [lines] into individual lines.
   ///
   /// If [start] and [end] are provided, only split the contents of
diff --git a/sdk/lib/convert/string_conversion.dart b/sdk/lib/convert/string_conversion.dart
index f694a31..1aeedab 100644
--- a/sdk/lib/convert/string_conversion.dart
+++ b/sdk/lib/convert/string_conversion.dart
@@ -12,18 +12,21 @@
 ///
 /// The [StringConversionSink] class provides a default implementation of
 /// [add], [asUtf8Sink] and [asStringSink].
-abstract mixin class const StringConversionSink()
+abstract mixin class StringConversionSink
     implements ChunkedConversionSink<String> {
-  factory withCallback(void Function(String accumulated) callback) =
-      _StringCallbackSink;
-  factory from(Sink<String> sink) = _StringAdapterSink;
+  const StringConversionSink();
+
+  factory StringConversionSink.withCallback(
+    void Function(String accumulated) callback,
+  ) = _StringCallbackSink;
+  factory StringConversionSink.from(Sink<String> sink) = _StringAdapterSink;
 
   /// Creates a new instance wrapping the given [sink].
   ///
   /// Every string that is added to the returned instance is forwarded to
   /// the [sink]. The instance is allowed to buffer and is not required to
   /// forward immediately.
-  factory fromStringSink(StringSink sink) =
+  factory StringConversionSink.fromStringSink(StringSink sink) =
       _StringSinkConversionSink<StringSink>;
 
   /// Adds the next [chunk] to `this`.
@@ -59,8 +62,10 @@
 abstract interface class ClosableStringSink implements StringSink {
   /// Creates a new instance combining a [StringSink] [sink] and a callback
   /// [onClose] which is invoked when the returned instance is closed.
-  factory fromStringSink(StringSink sink, void Function() onClose) =
-      _ClosableStringSink;
+  factory ClosableStringSink.fromStringSink(
+    StringSink sink,
+    void Function() onClose,
+  ) = _ClosableStringSink;
 
   /// Closes `this` and flushes any outstanding data.
   void close();
diff --git a/sdk/lib/convert/utf.dart b/sdk/lib/convert/utf.dart
index bb9e988..8015e68 100644
--- a/sdk/lib/convert/utf.dart
+++ b/sdk/lib/convert/utf.dart
@@ -25,8 +25,9 @@
 
 /// A [Utf8Codec] encodes strings to utf-8 code units (bytes) and decodes
 /// UTF-8 code units to strings.
-final class const Utf8Codec({final bool _allowMalformed = false})
-    extends Encoding {
+final class Utf8Codec extends Encoding {
+  final bool _allowMalformed;
+
   /// Instantiates a new [Utf8Codec].
   ///
   /// The optional [_allowMalformed] argument defines how [decoder] (and [decode])
@@ -36,7 +37,7 @@
   /// the [decoder] replace invalid (or unterminated) octet
   /// sequences with the Unicode Replacement character `U+FFFD` (�). Otherwise
   /// they throw a [FormatException].
-  this;
+  const Utf8Codec({this._allowMalformed = false});
 
   /// The name of this codec is "utf-8".
   String get name => "utf-8";
@@ -85,7 +86,9 @@
 /// final encodedSample = utf8Encoder.convert(sample);
 /// print(encodedSample);
 /// ```
-final class const Utf8Encoder() extends Converter<String, List<int>> {
+final class Utf8Encoder extends Converter<String, List<int>> {
+  const Utf8Encoder();
+
   /// Converts [string] to its UTF-8 code units (a list of
   /// unsigned 8-bit integers).
   ///
@@ -331,7 +334,7 @@
   /// If it is `true`, [convert] replaces invalid (or unterminated) character
   /// sequences with the Unicode Replacement character `U+FFFD` (�). Otherwise
   /// it throws a [FormatException].
-  const new({this._allowMalformed = false});
+  const Utf8Decoder({this._allowMalformed = false});
 
   /// Converts the UTF-8 [codeUnits] (a list of unsigned 8-bit integers) to the
   /// corresponding string.
diff --git a/sdk/lib/core/annotations.dart b/sdk/lib/core/annotations.dart
index e807807..545dea6 100644
--- a/sdk/lib/core/annotations.dart
+++ b/sdk/lib/core/annotations.dart
@@ -60,16 +60,16 @@
 /// If the deprecated use is inside a library, class or method which is itself
 /// deprecated, the tool should not bother the user about it.
 /// A deprecated feature is expected to use other deprecated features.
-class const Deprecated._(
+class Deprecated {
   /// Message provided to the user when they use the deprecated feature.
   ///
   /// The message should explain how to migrate away from the feature if an
   /// alternative is available, and when the deprecated feature is expected to be
   /// removed.
-  final String? message,
+  final String? message;
 
-  final _DeprecationKind _kind,
-) {
+  final _DeprecationKind _kind;
+
   /// Creates a deprecation annotation which specifies the migration path and
   /// expiration of the annotated feature.
   ///
@@ -77,7 +77,7 @@
   /// aimed at the programmer using the annotated feature, and should recommend
   /// an alternative (if available), and say when this feature is expected to
   /// be removed if that is sooner or later than the next major version.
-  const new(String? message) : this._(message, _DeprecationKind.use);
+  const Deprecated(this.message) : _kind = _DeprecationKind.use;
 
   /// Creates an annotation which deprecates implementing a class or mixin.
   ///
@@ -101,8 +101,8 @@
   /// should recommend an alternative (if available), and say when this
   /// functionality is expected to be removed if that is sooner or later than
   /// the next major version.
-  const new implement([String? message])
-    : this._(message, _DeprecationKind.implement);
+  const Deprecated.implement([this.message])
+    : _kind = _DeprecationKind.implement;
 
   /// Creates an annotation which deprecates extending a class.
   ///
@@ -125,8 +125,7 @@
   /// should recommend an alternative (if available), and say when this
   /// functionality is expected to be removed if that is sooner or later than
   /// the next major version.
-  const new extend([String? message])
-    : this._(message, _DeprecationKind.extend);
+  const Deprecated.extend([this.message]) : _kind = _DeprecationKind.extend;
 
   /// Creates an annotation which deprecates subclassing (implementing or
   /// extending) a class.
@@ -150,8 +149,7 @@
   /// should recommend an alternative (if available), and say when this
   /// functionality is expected to be removed if that is sooner or later than
   /// the next major version.
-  const new subclass([String? message])
-    : this._(message, _DeprecationKind.subclass);
+  const Deprecated.subclass([this.message]) : _kind = _DeprecationKind.subclass;
 
   /// Creates an annotation which deprecates instantiating a class.
   ///
@@ -167,8 +165,8 @@
   /// should recommend an alternative (if available), and say when this
   /// functionality is expected to be removed if that is sooner or later than
   /// the next major version.
-  const new instantiate([String? message])
-    : this._(message, _DeprecationKind.instantiate);
+  const Deprecated.instantiate([this.message])
+    : _kind = _DeprecationKind.instantiate;
 
   /// Creates an annotation which deprecates mixing in a class.
   ///
@@ -186,7 +184,7 @@
   /// annotated class, and should recommend an alternative (if available), and
   /// say when this functionality is expected to be removed if that is sooner
   /// or later than the next major version.
-  const new mixin([String? message]) : this._(message, _DeprecationKind.mixin);
+  const Deprecated.mixin([this.message]) : _kind = _DeprecationKind.mixin;
 
   /// Creates an annotation which deprecates omitting an argument for the
   /// annotated parameter.
@@ -205,8 +203,7 @@
   /// annotated parameter, and should recommend an alternative (if available),
   /// and say when this functionality is expected to be removed if that is
   /// sooner or later than the next major version.
-  const new optional([String? message])
-    : this._(message, _DeprecationKind.optional);
+  const Deprecated.optional([this.message]) : _kind = _DeprecationKind.optional;
 
   String toString() => "Deprecated feature: $message";
 }
@@ -222,17 +219,19 @@
 ///
 /// This enum can be private because the information is only intended for
 /// static tooling, such as the analyzer. Values may be added.
-enum _DeprecationKind() {
+enum _DeprecationKind {
   use,
   implement,
   extend,
   subclass,
   instantiate,
   mixin,
-  optional
+  optional,
 }
 
-class const _Override();
+class _Override {
+  const _Override();
+}
 
 /// Annotation on instance members which override an interface member.
 ///
@@ -295,20 +294,20 @@
 /// function `foo` is annotated with a pragma 'other-pragma'
 /// specific to OtherTool.
 @pragma('vm:entry-point')
-final class const pragma._(
+final class pragma {
   /// The name of the hint.
   ///
   /// A string that is recognized by one or more tools, or such a string prefixed
   /// by a tool identifier and a colon, which is only recognized by that
   /// particular tool.
-  final String name, [
+  final String name;
 
   /// Optional extra data parameterizing the hint.
-  final Object? options,
-]) {
-  /// Creates a hint named [name] with optional [options].
-  @pragma('dyn-module:language-impl:callable')
-  this;
+  final Object? options;
 
+  /// Creates a hint named [name] with optional [options].
   const factory pragma(String name, [Object? options]) = pragma._;
+
+  @pragma('dyn-module:language-impl:callable')
+  const pragma._(this.name, [this.options]);
 }
diff --git a/sdk/lib/core/bigint.dart b/sdk/lib/core/bigint.dart
index d01ae5a..3f76720 100644
--- a/sdk/lib/core/bigint.dart
+++ b/sdk/lib/core/bigint.dart
@@ -140,7 +140,7 @@
   /// bigInteger = BigInt.from(0.9999); // 0
   /// bigInteger = BigInt.from(-10.99); // -10
   /// ```
-  external factory from(num value);
+  external factory BigInt.from(num value);
 
   /// Returns the absolute value of this integer.
   ///
diff --git a/sdk/lib/core/duration.dart b/sdk/lib/core/duration.dart
index 020aef5..29d88ac 100644
--- a/sdk/lib/core/duration.dart
+++ b/sdk/lib/core/duration.dart
@@ -171,7 +171,7 @@
   ///   milliseconds: 30, microseconds: 10);
   /// print(duration); // 32:56:59.030010
   /// ```
-  const new({
+  const Duration({
     int days = 0,
     int hours = 0,
     int minutes = 0,
@@ -190,7 +190,7 @@
   // Fast path internal direct constructor to avoids the optional arguments
   // and [_microseconds] recomputation.
   // The `+ 0` prevents -0.0 on the web, if the incoming duration happens to be -0.0.
-  const new _microseconds(int duration) : _duration = duration + 0;
+  const Duration._microseconds(int duration) : _duration = duration + 0;
 
   /// Adds this Duration and [other] and
   /// returns the sum as a new Duration object.
diff --git a/sdk/lib/core/enum.dart b/sdk/lib/core/enum.dart
index d624c7d..2d058ad 100644
--- a/sdk/lib/core/enum.dart
+++ b/sdk/lib/core/enum.dart
@@ -102,23 +102,18 @@
 /// Superclass of all enum class implementations.
 @pragma('dyn-module:language-impl:extendable')
 @pragma('dyn-module:language-impl:callable')
-abstract class const _Enum(
-  this.index, // Dart2JS does not understand annotation on declaring parameter.
-  this._name, // VM does not understand annotation on declaring parameter.
-) implements Enum {
+abstract class _Enum implements Enum {
   // See http://dartbug.com/51657 for discussion of dart2js pragma.
-  @pragma('dart2js:noElision') // Does not work if declaring parameter.
+  @pragma('dart2js:noElision')
   @pragma('wasm:entry-point')
   final int index;
 
-  @pragma(
-    'dyn-module:language-impl:callable',
-  ) // Does not work if declaring parameter.
+  @pragma('dyn-module:language-impl:callable')
   @pragma('wasm:entry-point')
   final String _name;
 
   @pragma('dyn-module:language-impl:callable')
-  this;
+  const _Enum(this.index, this._name);
 
   /// The result of [toString].
   ///
diff --git a/sdk/lib/core/errors.dart b/sdk/lib/core/errors.dart
index 0f64b35..9c88ec5e 100644
--- a/sdk/lib/core/errors.dart
+++ b/sdk/lib/core/errors.dart
@@ -69,7 +69,9 @@
 /// Catching specific subclasses of [Error] is not intended,
 /// and shouldn't happen outside of testing your own code.
 @pragma('flutter:keep-to-string-in-subtypes')
-class Error() {
+class Error {
+  Error(); // Prevent use as mixin.
+
   /// Safely convert a value to a [String] description.
   ///
   /// The conversion is guaranteed to not throw, so it won't use the object's
@@ -123,12 +125,12 @@
 }
 
 /// Error thrown by the runtime system when an assert statement fails.
-class AssertionError([
+class AssertionError extends Error {
   /// Message describing the assertion error.
-  final Object? message,
-]) extends Error {
+  final Object? message;
+
   /// Creates an assertion error with the provided [message].
-  this;
+  AssertionError([this.message]);
 
   String toString() {
     if (message != null) {
@@ -139,7 +141,7 @@
 }
 
 /// Error thrown by the runtime system when a dynamic type error happens.
-class TypeError() extends Error;
+class TypeError extends Error {}
 
 /// Error thrown when a function is passed an unacceptable argument.
 ///
@@ -294,7 +296,7 @@
   ///
   /// The [length] is the length of [indexable] at the time of the error.
   /// If `length` is omitted, it defaults to `indexable.length`.
-  factory index(
+  factory RangeError.index(
     int index,
     dynamic indexable, [
     String? name,
@@ -560,7 +562,10 @@
   ///
   /// The [invocation] represents the method call that failed. It
   /// should not be `null`.
-  external factory withInvocation(Object? receiver, Invocation invocation);
+  external factory NoSuchMethodError.withInvocation(
+    Object? receiver,
+    Invocation invocation,
+  );
 
   external String toString();
 }
@@ -572,12 +577,10 @@
 /// For example, it's used by unmodifiable versions of collections,
 /// when someone calls a modifying method.
 @pragma("vm:entry-point")
-class UnsupportedError(String this.message) extends Error {
+class UnsupportedError extends Error {
   final String? message;
-
   @pragma("vm:entry-point")
-  this;
-
+  UnsupportedError(String this.message);
   String toString() => "Unsupported operation: $message";
 }
 
@@ -589,9 +592,9 @@
 /// If the class does not intend to implement the feature, it should throw
 /// an [UnsupportedError] instead. This error is only intended for
 /// use during development.
-class UnimplementedError([final String? message])
-    extends Error
-    implements UnsupportedError {
+class UnimplementedError extends Error implements UnsupportedError {
+  final String? message;
+  UnimplementedError([this.message]);
   String toString() {
     var message = this.message;
     return (message != null)
@@ -613,10 +616,10 @@
 ///
 /// This is a generic error used for a variety of different erroneous
 /// actions. The message should be descriptive.
-class StateError(final String message) extends Error {
+class StateError extends Error {
+  final String message;
   @pragma("vm:entry-point")
-  this;
-
+  StateError(this.message);
   String toString() => "Bad state: $message";
 }
 
@@ -625,10 +628,12 @@
 /// Some modifications may be allowed for some collections, so each collection
 /// ([Iterable] or similar collection of values) should declare which operations
 /// are allowed during an iteration.
-class ConcurrentModificationError([
+class ConcurrentModificationError extends Error {
   /// The object that was modified in an incompatible way.
-  final Object? modifiedObject,
-]) extends Error {
+  final Object? modifiedObject;
+
+  ConcurrentModificationError([this.modifiedObject]);
+
   String toString() {
     if (modifiedObject == null) {
       return "Concurrent modification during iteration.";
@@ -639,20 +644,18 @@
 }
 
 /// Error that the platform can use in case of memory shortage.
-final class const OutOfMemoryError() implements Error {
+final class OutOfMemoryError implements Error {
   @pragma("vm:entry-point")
-  this;
-
+  const OutOfMemoryError();
   String toString() => "Out of Memory";
 
   StackTrace? get stackTrace => null;
 }
 
 /// Error that the platform can use in case of stack overflow.
-final class const StackOverflowError() implements Error {
+final class StackOverflowError implements Error {
   @pragma("vm:entry-point")
-  this;
-
+  const StackOverflowError();
   String toString() => "Stack Overflow";
 
   StackTrace? get stackTrace => null;
diff --git a/sdk/lib/core/exceptions.dart b/sdk/lib/core/exceptions.dart
index ee369f6..6f317d6 100644
--- a/sdk/lib/core/exceptions.dart
+++ b/sdk/lib/core/exceptions.dart
@@ -21,11 +21,15 @@
 /// and its subclasses.
 @pragma('flutter:keep-to-string-in-subtypes')
 abstract interface class Exception {
-  factory([message]) => _Exception(message);
+  factory Exception([message]) => _Exception(message);
 }
 
 /// Default implementation of [Exception] which carries a message.
-class _Exception([final dynamic message]) implements Exception {
+class _Exception implements Exception {
+  final dynamic message;
+
+  _Exception([this.message]);
+
   String toString() {
     Object? message = this.message;
     if (message == null) return "Exception";
@@ -36,9 +40,9 @@
 /// Exception thrown when a string or some other data does not have an expected
 /// format and cannot be parsed or processed.
 @pragma("vm:entry-point")
-class const FormatException([
+class FormatException implements Exception {
   /// A message describing the format error.
-  final String message = "",
+  final String message;
 
   /// The actual source input which caused the error.
   ///
@@ -46,7 +50,7 @@
   /// If it is a string, parts of it may be included in the [toString] message.
   ///
   /// The source is `null` if omitted or unknown.
-  final dynamic source,
+  final dynamic source;
 
   /// The offset in [source] where the error was detected.
   ///
@@ -59,14 +63,14 @@
   /// or at the end of the string.
   ///
   /// May be omitted. If present, [source] should also be present if possible.
-  final int? offset,
-]) implements Exception {
+  final int? offset;
+
   /// Creates a new `FormatException` with an optional error [message].
   ///
   /// Optionally also supply the actual [source] with the incorrect format,
   /// and the [offset] in the format where a problem was detected.
   @pragma("vm:entry-point")
-  this;
+  const FormatException([this.message = "", this.source, this.offset]);
 
   /// Returns a description of the format exception.
   ///
@@ -169,11 +173,10 @@
 // TODO(30743): Should be removed, and division by zero should just throw an
 // [UnsupportedError].
 @Deprecated("Use UnsupportedError instead")
-class const IntegerDivisionByZeroException()
-    implements Exception, UnsupportedError {
+class IntegerDivisionByZeroException implements Exception, UnsupportedError {
   String? get message => "Division resulted in non-finite value";
   StackTrace? get stackTrace => null;
   @pragma("vm:entry-point")
-  this;
+  const IntegerDivisionByZeroException();
   String toString() => "IntegerDivisionByZeroException";
 }
diff --git a/sdk/lib/core/invocation.dart b/sdk/lib/core/invocation.dart
index 7e657db..ee11f95 100644
--- a/sdk/lib/core/invocation.dart
+++ b/sdk/lib/core/invocation.dart
@@ -9,15 +9,15 @@
 /// This is the type of objects passed to [Object.noSuchMethod] when
 /// an object doesn't support the member invocation that was attempted
 /// on it.
-// TODO: Deprecated extending. There is no implementation to inherit,
-// so just implement.
-abstract class Invocation() {
+abstract class Invocation {
+  Invocation();
+
   /// Creates an invocation corresponding to a method invocation.
   ///
   /// The method invocation has no type arguments.
   /// If the named arguments are omitted, they default to no named arguments.
   @pragma("wasm:entry-point")
-  factory method(
+  factory Invocation.method(
     Symbol memberName,
     Iterable<Object?>? positionalArguments, [
     Map<Symbol, Object?>? namedArguments,
@@ -32,7 +32,7 @@
   ///
   /// If the named arguments are omitted, they default to no named arguments.
   @pragma("wasm:entry-point")
-  factory genericMethod(
+  factory Invocation.genericMethod(
     Symbol memberName,
     Iterable<Type>? typeArguments,
     Iterable<Object?>? positionalArguments, [
@@ -46,7 +46,7 @@
 
   /// Creates an invocation corresponding to a getter invocation.
   @pragma("wasm:entry-point")
-  factory getter(Symbol name) = _Invocation.getter;
+  factory Invocation.getter(Symbol name) = _Invocation.getter;
 
   /// Creates an invocation corresponding to a setter invocation.
   ///
@@ -57,7 +57,8 @@
   /// Invocation.setter(const Symbol("member="), value)
   /// ```
   @pragma("wasm:entry-point")
-  factory setter(Symbol memberName, Object? argument) = _Invocation.setter;
+  factory Invocation.setter(Symbol memberName, Object? argument) =
+      _Invocation.setter;
 
   /// The name of the invoked member.
   Symbol get memberName;
diff --git a/sdk/lib/core/iterable.dart b/sdk/lib/core/iterable.dart
index 091c06c..6f46b44 100644
--- a/sdk/lib/core/iterable.dart
+++ b/sdk/lib/core/iterable.dart
@@ -89,11 +89,13 @@
 /// An implementation of the `Iterable` interface should
 /// provide a more efficient implementation of the members of `Iterable`
 /// when it can do so.
-abstract mixin class const Iterable<E>() {
+abstract mixin class Iterable<E> {
   // This class has methods copied verbatim into:
   // - SetMixin
   // If changing a method here, also change other copies.
 
+  const Iterable();
+
   /// Creates an `Iterable` which generates its elements dynamically.
   ///
   /// The generated iterable has [count] elements,
@@ -107,7 +109,7 @@
   ///
   /// As an `Iterable`, `Iterable.generate(n, generator))` is equivalent to
   /// `const [0, ..., n - 1].map(generator)`.
-  factory generate(int count, [E generator(int index)?]) {
+  factory Iterable.generate(int count, [E generator(int index)?]) {
     // Always OK to omit generator when count is zero.
     if (count <= 0) return EmptyIterable<E>();
     if (generator == null) {
@@ -140,14 +142,14 @@
   /// print(numbers.toList()); // [1, 2, 3]
   /// ```
   @Since("3.8")
-  factory withIterator(Iterator<E> Function() iteratorFactory) =
+  factory Iterable.withIterator(Iterator<E> Function() iteratorFactory) =
       _WithIteratorIterable<E>;
 
   /// Creates an empty iterable.
   ///
   /// The empty iterable has no elements, and iterating it always stops
   /// immediately.
-  const factory empty() = EmptyIterable<E>;
+  const factory Iterable.empty() = EmptyIterable<E>;
 
   /// Adapts [source] to be an `Iterable<T>`.
   ///
@@ -909,16 +911,19 @@
   }
 }
 
-class _GeneratorIterable<E>(
-  /// The length of the generated iterable.
-  final int length,
-
-  /// The function mapping indices to values.
-  final E Function(int) _generator,
-) extends ListIterable<E> {
+class _GeneratorIterable<E> extends ListIterable<E> {
   // Methods have efficient implementations from `ListIterable`,
   // based on `length` and `elementAt`.
 
+  /// The length of the generated iterable.
+  final int length;
+
+  /// The function mapping indices to values.
+  final E Function(int) _generator;
+
+  /// Creates the generated iterable.
+  _GeneratorIterable(this.length, this._generator);
+
   E elementAt(int index) {
     IndexError.check(index, length, indexable: this);
     return _generator(index);
@@ -932,8 +937,13 @@
 ///
 /// This class implements [Iterable] by delegating the iterator creation
 /// to the provided function.
-class _WithIteratorIterable<E>(final Iterator<E> Function() _iteratorFactory)
-    extends Iterable<E> {
+class _WithIteratorIterable<E> extends Iterable<E> {
+  final Iterator<E> Function() _iteratorFactory;
+
+  /// Creates an iterable that gets its elements from iterators created by
+  /// the provided factory function.
+  _WithIteratorIterable(this._iteratorFactory);
+
   Iterator<E> get iterator => _iteratorFactory();
 }
 
diff --git a/sdk/lib/core/list.dart b/sdk/lib/core/list.dart
index 5b105a9..c898dfe 100644
--- a/sdk/lib/core/list.dart
+++ b/sdk/lib/core/list.dart
@@ -6,8 +6,8 @@
 
 /// Helper interface to hide [EfficientLengthIterable] from the public
 /// declaration of [List].
-abstract interface class _ListIterable<E>
-    implements EfficientLengthIterable<E>, HideEfficientLengthIterable<E>;
+abstract class _ListIterable<E>
+    implements EfficientLengthIterable<E>, HideEfficientLengthIterable<E> {}
 
 /// An indexable collection of objects with a length.
 ///
@@ -148,7 +148,7 @@
   /// unique[0].add(499);
   /// print(unique); // [[499], [], []]
   /// ```
-  external factory filled(int length, E fill, {bool growable = false});
+  external factory List.filled(int length, E fill, {bool growable = false});
 
   /// Creates a new empty list.
   ///
@@ -162,7 +162,7 @@
   /// final fixedLengthList = List.empty(growable: false);
   /// fixedLengthList.add(1); // error
   /// ```
-  external factory empty({bool growable = false});
+  external factory List.empty({bool growable = false});
 
   /// Creates a list containing all [elements].
   ///
@@ -191,7 +191,10 @@
   ///
   /// This constructor creates a growable list when [growable] is true;
   /// otherwise, it returns a fixed-length list.
-  external factory from(Iterable<Object?> elements, {bool growable = true});
+  external factory List.from(
+    Iterable<Object?> elements, {
+    bool growable = true,
+  });
 
   /// Creates a list from [elements].
   ///
@@ -204,7 +207,7 @@
   /// final listOf = List<num>.of(numbers);
   /// print(listOf); // [1, 2, 3]
   /// ```
-  external factory of(Iterable<E> elements, {bool growable = true});
+  external factory List.of(Iterable<E> elements, {bool growable = true});
 
   /// Generates a list of values.
   ///
@@ -223,7 +226,7 @@
   /// The created list is fixed-length if [growable] is set to false.
   ///
   /// The [length] must be non-negative.
-  external factory generate(
+  external factory List.generate(
     int length,
     E generator(int index), {
     bool growable = true,
@@ -242,7 +245,7 @@
   /// unmodifiableList[1] = 87; // Throws.
   /// ```
   // @Deprecated("Use List.unmodifiableOf instead")
-  external factory unmodifiable(Iterable elements);
+  external factory List.unmodifiable(Iterable elements);
 
   /// Creates an unmodifiable list containing all [elements].
   ///
@@ -257,7 +260,7 @@
   /// unmodifiableList[1] = 87; // Throws.
   /// ```
   @Since("3.13")
-  factory unmodifiableOf(Iterable<E> elements) = List<E>.unmodifiable;
+  factory List.unmodifiableOf(Iterable<E> elements) = List<E>.unmodifiable;
 
   /// Adapts [source] to be a `List<T>`.
   ///
diff --git a/sdk/lib/core/map.dart b/sdk/lib/core/map.dart
index e32e1ae..42bc4f5 100644
--- a/sdk/lib/core/map.dart
+++ b/sdk/lib/core/map.dart
@@ -40,7 +40,7 @@
   /// `operator==` and `hashCode`.
   /// It iterates in key insertion order.
   // TODO: @Deprecated("Use literal <K, V>{} instead")
-  external factory();
+  external factory Map();
 
   /// Creates a [LinkedHashMap] with the same keys and values as [other].
   ///
@@ -61,7 +61,7 @@
   /// final mapFrom = Map<int, String>.from(planets);
   /// print(mapFrom); // {1: Mercury, 2: Venus, 3: Earth, 4: Mars}
   /// ```
-  factory from(Map other) = LinkedHashMap<K, V>.from;
+  factory Map.from(Map other) = LinkedHashMap<K, V>.from;
 
   /// Creates a [LinkedHashMap] with the same keys and values as [other].
   ///
@@ -73,7 +73,7 @@
   /// final mapOf = Map<num, String>.of(planets);
   /// print(mapOf); // {1: Mercury, 2: Venus, 3: Earth}
   /// ```
-  factory of(Map<K, V> other) = LinkedHashMap<K, V>.of;
+  factory Map.of(Map<K, V> other) = LinkedHashMap<K, V>.of;
 
   /// Creates an unmodifiable hash-based map containing the entries of [other].
   ///
@@ -93,7 +93,7 @@
   /// unmodifiableMap[4] = 'Mars'; // Throws
   /// ```
   // @Deprecated("Use Map.unmodifiableOf instead")
-  external factory unmodifiable(Map<dynamic, dynamic> other);
+  external factory Map.unmodifiable(Map<dynamic, dynamic> other);
 
   /// Creates an unmodifiable hash-based map containing the entries of [other].
   ///
@@ -110,7 +110,7 @@
   /// unmodifiableMap[4] = 'Mars'; // Throws
   /// ```
   @Since("3.13")
-  factory unmodifiableOf(Map<K, V> other) = Map<K, V>.unmodifiable;
+  factory Map.unmodifiableOf(Map<K, V> other) = Map<K, V>.unmodifiable;
 
   /// Creates an identity map with the default implementation, [LinkedHashMap].
   ///
@@ -119,7 +119,7 @@
   /// [Object.hashCode] of the keys.
   ///
   /// The map iterates in key insertion order.
-  factory identity() = LinkedHashMap<K, V>.identity;
+  factory Map.identity() = LinkedHashMap<K, V>.identity;
 
   /// Creates a Map instance in which the keys and values are computed from the
   /// [iterable].
@@ -164,7 +164,7 @@
   /// A `LinkedHashMap` requires the keys to implement compatible
   /// `operator==` and `hashCode`.
   /// It iterates in key insertion order.
-  factory fromIterable(
+  factory Map.fromIterable(
     Iterable iterable, {
     K key(dynamic element)?,
     V value(dynamic element)?,
@@ -189,7 +189,7 @@
   /// A `LinkedHashMap` requires the keys to implement compatible
   /// `operator==` and `hashCode`.
   /// It iterates in key insertion order.
-  factory fromIterables(Iterable<K> keys, Iterable<V> values) =
+  factory Map.fromIterables(Iterable<K> keys, Iterable<V> values) =
       LinkedHashMap<K, V>.fromIterables;
 
   /// Adapts [source] to be a `Map<K2, V2>`.
@@ -230,7 +230,7 @@
   ///   'Mars': 2, 'Jupiter': 79, 'Saturn': 82, 'Uranus': 27, 'Neptune': 14};
   /// final map = Map.fromEntries(moonCount.entries);
   /// ```
-  factory fromEntries(Iterable<MapEntry<K, V>> entries) =>
+  factory Map.fromEntries(Iterable<MapEntry<K, V>> entries) =>
       <K, V>{}..addEntries(entries);
 
   /// Provides a view of this map as having [RK] keys and [RV] instances,
@@ -502,7 +502,7 @@
 /// the `MapEntry` class will be changed to such a type,
 /// and will likely no longer be able to be implemented or extended
 /// by classes.
-final class const MapEntry<K, V>(
+final class MapEntry<K, V> {
   /// The key of the entry.
   ///
   /// ```dart
@@ -510,7 +510,7 @@
   /// var entry = map.entries.first; // MapEntry<String, String>
   /// print(entry.key); // 'theKey'
   /// ```
-  final K key,
+  final K key;
 
   /// The value associated to [key] in a map.
   ///
@@ -519,10 +519,12 @@
   /// var entry = map.entries.first; // MapEntry<String, String>
   /// print(entry.value); // 'theValue'
   /// ```
-  final V value,
-) {
+  final V value;
+
   /// Creates an entry with [key] and [value].
-  this;
+  const factory MapEntry(K key, V value) = MapEntry<K, V>._;
+
+  const MapEntry._(this.key, this.value);
 
   /// String representation intended for debugging only.
   ///
diff --git a/sdk/lib/core/null.dart b/sdk/lib/core/null.dart
index 37f6902..45bafe2 100644
--- a/sdk/lib/core/null.dart
+++ b/sdk/lib/core/null.dart
@@ -22,7 +22,7 @@
 /// ```
 @pragma("vm:entry-point")
 final class Null {
-  factory _uninstantiable() {
+  factory Null._uninstantiable() {
     throw UnsupportedError('class Null cannot be instantiated');
   }
 
diff --git a/sdk/lib/core/object.dart b/sdk/lib/core/object.dart
index 7208bce..7be8a4e 100644
--- a/sdk/lib/core/object.dart
+++ b/sdk/lib/core/object.dart
@@ -16,14 +16,14 @@
 /// section of the [introduction to `dart:core`](https://dart.dev/libraries/dart-core).
 @pragma("vm:entry-point")
 @pragma('dyn-module:language-impl:extendable')
-class const Object() {
+class Object {
   /// Creates a new [Object] instance.
   ///
   /// [Object] instances have no meaningful state, and are only useful
   /// through their identity. An [Object] instance is equal to itself
   /// only.
   @pragma("vm:recognized", "other")
-  this;
+  const Object();
 
   /// The equality operator.
   ///
diff --git a/sdk/lib/core/regexp.dart b/sdk/lib/core/regexp.dart
index cfea755..6b10339 100644
--- a/sdk/lib/core/regexp.dart
+++ b/sdk/lib/core/regexp.dart
@@ -271,7 +271,7 @@
   /// Pattern keyValuePattern(String anyStringKey) =>
   ///     RegExp('${RegExp.escape(anyStringKey)}=(\\w+)');
   /// ```
-  external factory(
+  external factory RegExp(
     String source, {
     bool multiLine = false,
     bool caseSensitive = true,
diff --git a/sdk/lib/core/set.dart b/sdk/lib/core/set.dart
index bf1074d..3ddd5df 100644
--- a/sdk/lib/core/set.dart
+++ b/sdk/lib/core/set.dart
@@ -6,8 +6,8 @@
 
 /// Helper interface to hide [EfficientLengthIterable] from the public
 /// declaration of [Set].
-abstract interface class _SetIterable<E>
-    implements EfficientLengthIterable<E>, HideEfficientLengthIterable<E>;
+abstract class _SetIterable<E>
+    implements EfficientLengthIterable<E>, HideEfficientLengthIterable<E> {}
 
 /// A collection of objects in which each object can occur only once.
 ///
@@ -48,7 +48,7 @@
   ///
   /// The set is equivalent to one created by `LinkedHashSet<E>()`.
   // TODO: @Deprecated("Use literal <E>{} instead")
-  factory() = LinkedHashSet<E>;
+  factory Set() = LinkedHashSet<E>;
 
   /// Creates an empty identity [Set].
   ///
@@ -56,7 +56,7 @@
   /// relation.
   ///
   /// The set is equivalent to one created by `LinkedHashSet<E>.identity()`.
-  factory identity() = LinkedHashSet<E>.identity;
+  factory Set.identity() = LinkedHashSet<E>.identity;
 
   /// Creates a [Set] that contains all [elements].
   ///
@@ -79,7 +79,7 @@
   /// final setFrom = Set<int>.from(numbers);
   /// print(setFrom); // {10, 20, 30}
   /// ```
-  factory from(Iterable elements) = LinkedHashSet<E>.from;
+  factory Set.from(Iterable elements) = LinkedHashSet<E>.from;
 
   /// Creates a [Set] from [elements].
   ///
@@ -94,7 +94,7 @@
   /// final setOf = Set<num>.of(baseSet);
   /// print(setOf); // {1, 2, 3}
   /// ```
-  factory of(Iterable<E> elements) = LinkedHashSet<E>.of;
+  factory Set.of(Iterable<E> elements) = LinkedHashSet<E>.of;
 
   /// Creates an unmodifiable [Set] from [elements].
   ///
@@ -104,7 +104,7 @@
   /// final characters = <String>{'A', 'B', 'C'};
   /// final unmodifiableSet = Set.unmodifiable(characters);
   /// ```
-  factory unmodifiable(Iterable<E> elements) =>
+  factory Set.unmodifiable(Iterable<E> elements) =>
       UnmodifiableSetView<E>(<E>{...elements});
 
   /// Adapts [source] to be a `Set<T>`.
diff --git a/sdk/lib/core/stacktrace.dart b/sdk/lib/core/stacktrace.dart
index 5a8f86b..80bb1a4 100644
--- a/sdk/lib/core/stacktrace.dart
+++ b/sdk/lib/core/stacktrace.dart
@@ -11,13 +11,15 @@
 ///
 /// These objects are created by the runtime, it is not possible to create
 /// them programmatically.
-abstract interface class StackTrace() {
+abstract interface class StackTrace {
   /// A stack trace object with no information.
   ///
   /// This stack trace is used as the default in situations where
   /// a stack trace is required, but the user has not supplied one.
   static const empty = _StringStackTrace("");
 
+  StackTrace(); // In case existing classes extend StackTrace.
+
   /// Create a `StackTrace` object from [stackTraceString].
   ///
   /// The created stack trace will have a `toString` method returning
@@ -28,7 +30,7 @@
   /// If the string doesn't look like a stack trace, code that interprets
   /// stack traces is likely to fail, so fake stack traces should be used
   /// with care.
-  factory fromString(String stackTraceString) = _StringStackTrace;
+  factory StackTrace.fromString(String stackTraceString) = _StringStackTrace;
 
   /// Returns a representation of the current stack trace.
   ///
@@ -48,6 +50,8 @@
   String toString();
 }
 
-class const _StringStackTrace(final String _stackTrace) implements StackTrace {
+class _StringStackTrace implements StackTrace {
+  final String _stackTrace;
+  const _StringStackTrace(this._stackTrace);
   String toString() => _stackTrace;
 }
diff --git a/sdk/lib/core/string.dart b/sdk/lib/core/string.dart
index 49750bd..06b7534 100644
--- a/sdk/lib/core/string.dart
+++ b/sdk/lib/core/string.dart
@@ -128,7 +128,7 @@
   /// and if [end] is omitted, all char-codes after [start] are included.
   /// If [charCodes] does not have [end], or even [start], elements,
   /// the specified char-codes may be shorter than `end - start`, or even empty.
-  external factory fromCharCodes(
+  external factory String.fromCharCodes(
     Iterable<int> charCodes, [
     int start = 0,
     int? end,
@@ -142,7 +142,7 @@
   /// [fromCharCodes].
   ///
   /// Creating a [String] with one half of a surrogate pair is allowed.
-  external factory fromCharCode(int charCode);
+  external factory String.fromCharCode(int charCode);
 
   /// Value for [name] in the compilation configuration environment declaration.
   ///
@@ -185,7 +185,7 @@
   /// The compilation configuration environment is not the same as the
   /// environment variables of a POSIX process. Those can be accessed on
   /// native platforms using `Platform.environment` from the `dart:io` library.
-  external const factory fromEnvironment(
+  external const factory String.fromEnvironment(
     String name, {
     String defaultValue = "",
   });
diff --git a/sdk/lib/core/symbol.dart b/sdk/lib/core/symbol.dart
index ad3ea11..f0a9d2c 100644
--- a/sdk/lib/core/symbol.dart
+++ b/sdk/lib/core/symbol.dart
@@ -59,7 +59,7 @@
   /// ```
   ///
   /// The created instance overrides [Object.==].
-  const factory(String name) = internal.Symbol;
+  const factory Symbol(String name) = internal.Symbol;
 
   /// Returns a hash code compatible with [operator==].
   ///
diff --git a/sdk/lib/core/uri.dart b/sdk/lib/core/uri.dart
index e3acd50..eacd198 100644
--- a/sdk/lib/core/uri.dart
+++ b/sdk/lib/core/uri.dart
@@ -204,7 +204,7 @@
   ///     queryParameters: {'subject': 'Example'});
   /// print(mailtoUri); // mailto:John.Doe@example.com?subject=Example
   /// ```
-  factory({
+  factory Uri({
     String? scheme,
     String? userInfo,
     String? host,
@@ -247,7 +247,7 @@
   ///
   /// The `query` component is set from the optional [queryParameters]
   /// argument.
-  factory http(
+  factory Uri.http(
     String authority, [
     String unencodedPath,
     Map<String, dynamic /*String?|Iterable<String>*/>? queryParameters,
@@ -272,7 +272,7 @@
   /// uri = Uri.https('example.org', '/a%2F');
   /// print(uri); // https://example.org/a%252F
   /// ```
-  factory https(
+  factory Uri.https(
     String authority, [
     String unencodedPath,
     Map<String, dynamic>? queryParameters,
@@ -357,7 +357,7 @@
   /// ```
   ///
   /// If the path passed is not a valid file path, an error is thrown.
-  factory file(String path, {bool? windows}) = _Uri.file;
+  factory Uri.file(String path, {bool? windows}) = _Uri.file;
 
   /// Like [Uri.file] except that a non-empty URI path ends in a slash.
   ///
@@ -374,7 +374,7 @@
   ///    Uri.directory(r'C:\data\images', windows: true);
   /// print(fileDirectoryWindows); // file:///C:/data/images/
   /// ```
-  factory directory(String path, {bool? windows}) = _Uri.directory;
+  factory Uri.directory(String path, {bool? windows}) = _Uri.directory;
 
   /// Creates a `data:` URI containing the [content] string.
   ///
@@ -412,7 +412,7 @@
   /// );
   /// print(uri); // data:;search=name;max=10,example%20content
   /// ```
-  factory dataFromString(
+  factory Uri.dataFromString(
     String content, {
     String? mimeType,
     Encoding? encoding,
@@ -449,7 +449,7 @@
   /// final uri = Uri.dataFromBytes([68, 97, 114, 116]);
   /// print(uri); // data:application/octet-stream;base64,RGFydA==
   /// ```
-  factory dataFromBytes(
+  factory Uri.dataFromBytes(
     List<int> bytes, {
     String mimeType = "application/octet-stream",
     Map<String, String>? parameters,
@@ -1794,7 +1794,7 @@
 }
 
 // Superclass of the two implementation types.
-sealed class _PlatformUri implements Uri;
+sealed class _PlatformUri implements Uri {}
 
 final class _Uri implements _PlatformUri {
   // We represent the missing scheme as an empty string.
@@ -3742,7 +3742,7 @@
   ///
   /// Equivalent to `Uri.dataFromString(...).data`, but may
   /// be more efficient if the [uri] itself isn't used.
-  factory fromString(
+  factory UriData.fromString(
     String content, {
     String? mimeType,
     Encoding? encoding,
@@ -3779,7 +3779,7 @@
   ///
   /// Equivalent to `Uri.dataFromBytes(...).data`, but may
   /// be more efficient if the [uri] itself isn't used.
-  factory fromBytes(
+  factory UriData.fromBytes(
     List<int> bytes, {
     String mimeType = "application/octet-stream",
     Map<String, String>? parameters,
@@ -3808,7 +3808,7 @@
   /// The [uri] must have scheme `data` and no authority or fragment,
   /// and the path (concatenated with the query, if there is one) must be valid
   /// as data URI content with the same rules as [parse].
-  factory fromUri(Uri uri) {
+  factory UriData.fromUri(Uri uri) {
     if (!uri.isScheme("data")) {
       throw ArgumentError.value(uri, "uri", "Scheme must be 'data'");
     }
diff --git a/sdk/lib/core/weak.dart b/sdk/lib/core/weak.dart
index 1fab503..91ac32f 100644
--- a/sdk/lib/core/weak.dart
+++ b/sdk/lib/core/weak.dart
@@ -129,7 +129,7 @@
   /// The [target] must be an object supported as an [Expando] key,
   /// which means [target] cannot be a number, a string, a boolean, a record,
   /// the `null` value, or certain other types of special objects.
-  external factory(T target);
+  external factory WeakReference(T target);
 
   /// The current object weakly referenced by this [WeakReference], if any.
   ///
@@ -225,7 +225,7 @@
   ///
   /// The [callback] is bound to the current zone
   /// when the [Finalizer] is created, and will run in that zone when called.
-  external factory(void Function(T) callback);
+  external factory Finalizer(void Function(T) callback);
 
   /// Attaches this finalizer to [value].
   ///
diff --git a/sdk/lib/internal/bytes_builder.dart b/sdk/lib/internal/bytes_builder.dart
index 552d2a3..5a9ba42 100644
--- a/sdk/lib/internal/bytes_builder.dart
+++ b/sdk/lib/internal/bytes_builder.dart
@@ -176,7 +176,7 @@
 ///
 /// Accumulates lists of integers and lazily builds
 /// a collected list with all the bytes when requested.
-class _BytesBuilder() implements BytesBuilder {
+class _BytesBuilder implements BytesBuilder {
   int _length = 0;
   final List<Uint8List> _chunks = [];
 
diff --git a/sdk/lib/internal/cast.dart b/sdk/lib/internal/cast.dart
index 6621e6b..659710f 100644
--- a/sdk/lib/internal/cast.dart
+++ b/sdk/lib/internal/cast.dart
@@ -6,7 +6,7 @@
 
 // Casting wrappers for collection classes.
 
-abstract class _CastIterableBase<S, T>() extends Iterable<T> {
+abstract class _CastIterableBase<S, T> extends Iterable<T> {
   Iterable<S> get _source;
 
   Iterator<T> get iterator => CastIterator<S, T>(_source.iterator);
@@ -57,13 +57,18 @@
   String toString() => _source.toString();
 }
 
-class CastIterator<S, T>(final Iterator<S> _source) implements Iterator<T> {
+class CastIterator<S, T> implements Iterator<T> {
+  Iterator<S> _source;
+  CastIterator(this._source);
   bool moveNext() => _source.moveNext();
   T get current => _source.current as T;
 }
 
-class CastIterable<S, T>._(final Iterable<S> _source)
-    extends _CastIterableBase<S, T> {
+class CastIterable<S, T> extends _CastIterableBase<S, T> {
+  final Iterable<S> _source;
+
+  CastIterable._(this._source);
+
   factory CastIterable(Iterable<S> source) {
     if (source is EfficientLengthIterable<S>) {
       return _EfficientLengthCastIterable<S, T>(source);
@@ -74,17 +79,15 @@
   Iterable<R> cast<R>() => CastIterable<S, R>(_source);
 }
 
-class _EfficientLengthCastIterable<S, T>(
-  EfficientLengthIterable<S> super.source,
-) extends CastIterable<S, T>
+class _EfficientLengthCastIterable<S, T> extends CastIterable<S, T>
     implements EfficientLengthIterable<T>, HideEfficientLengthIterable<T> {
-  this : super._();
+  _EfficientLengthCastIterable(EfficientLengthIterable<S> source)
+    : super._(source);
 }
 
-class CastList<S, T>(final List<S> _source)
-    extends _CastIterableBase<S, T>
+abstract class _CastListBase<S, T> extends _CastIterableBase<S, T>
     with ListMixin<T> {
-  List<R> cast<R>() => CastList<S, R>(_source);
+  List<S> get _source;
 
   // Using the default implementation from ListMixin:
   // * reversed
@@ -169,9 +172,23 @@
   }
 }
 
-class CastSet<S, T>(final Set<S> _source, final Set<R> Function<R>()? _emptySet)
-    extends _CastIterableBase<S, T>
-    implements Set<T> {
+class CastList<S, T> extends _CastListBase<S, T> {
+  final List<S> _source;
+  CastList(this._source);
+
+  List<R> cast<R>() => CastList<S, R>(_source);
+}
+
+class CastSet<S, T> extends _CastIterableBase<S, T> implements Set<T> {
+  final Set<S> _source;
+
+  /// Creates a new empty set of the same *kind* as [_source],
+  /// but with `<R>` as type argument.
+  /// Used by [toSet] and [union].
+  final Set<R> Function<R>()? _emptySet;
+
+  CastSet(this._source, this._emptySet);
+
   Set<R> cast<R>() => CastSet<S, R>(_source, _emptySet);
   bool add(T value) => _source.add(value as S);
 
@@ -237,7 +254,11 @@
   T lookup(Object? key) => _source.lookup(key) as T;
 }
 
-class CastMap<SK, SV, K, V>(final Map<SK, SV> _source) extends MapBase<K, V> {
+class CastMap<SK, SV, K, V> extends MapBase<K, V> {
+  final Map<SK, SV> _source;
+
+  CastMap(this._source);
+
   Map<RK, RV> cast<RK, RV>() => CastMap<SK, SV, RK, RV>(_source);
 
   bool containsValue(Object? value) => _source.containsValue(value);
@@ -308,9 +329,9 @@
   }
 }
 
-class CastQueue<S, T>(final Queue<S> _source)
-    extends _CastIterableBase<S, T>
-    implements Queue<T> {
+class CastQueue<S, T> extends _CastIterableBase<S, T> implements Queue<T> {
+  final Queue<S> _source;
+  CastQueue(this._source);
   Queue<R> cast<R>() => CastQueue<S, R>(_source);
 
   T removeFirst() => _source.removeFirst() as T;
diff --git a/sdk/lib/internal/internal.dart b/sdk/lib/internal/internal.dart
index cbc9d6c..adbaa54 100644
--- a/sdk/lib/internal/internal.dart
+++ b/sdk/lib/internal/internal.dart
@@ -33,7 +33,8 @@
 part 'sort.dart';
 part 'symbol.dart';
 
-// Whether `null as T` will succeed based on the execution mode.
+// Returns true iff `null as T` will succeed based on the
+// execution mode.
 external bool typeAcceptsNull<T>();
 
 /// Unsafely treats [value] as type [T].
@@ -133,9 +134,7 @@
   assert(index + 2 <= source.length);
   int digit1 = hexDigitValue(source.codeUnitAt(index));
   int digit2 = hexDigitValue(source.codeUnitAt(index + 1));
-  return digit1 * 16 +
-      digit2 -
-      (digit2 & 256); // Could use `| digit2` on native.
+  return digit1 * 16 + digit2 - (digit2 & 256);
 }
 
 /// A reusable `null`-valued future used by `dart:async`.
@@ -737,7 +736,10 @@
 }
 
 /// Sentinel values that should never be exposed outside of platform libraries.
-class const SentinelValue(final int id);
+class SentinelValue {
+  final int id;
+  const SentinelValue(this.id);
+}
 
 /// A default value to use when only one sentinel is needed.
 const Object sentinelValue = SentinelValue(0);
@@ -750,7 +752,7 @@
 /// Example:
 ///
 /// ```dart template:top
-/// class Two<A, B>();
+/// class Two<A, B> {}
 ///
 /// print(extractTypeArguments<List>(<int>[], <T>() => new Set<T>()));
 /// // Prints: Instance of 'Set<int>'.
@@ -764,12 +766,12 @@
 /// list in [instance]'s type hierarchy is being extracted. Consider:
 ///
 /// ```dart template:top
-/// class A<T>();
-/// class B<T>();
+/// class A<T> {}
+/// class B<T> {}
 ///
-/// class C() implements A<int>, B<String>;
+/// class C implements A<int>, B<String> {}
 ///
-/// void main() {
+/// main() {
 ///   var c = new C();
 ///   print(extractTypeArguments<A>(c, <T>() => <T>[]));
 ///   // Prints: Instance of 'List<int>'.
@@ -827,7 +829,10 @@
 /// or the first two numbers of a semantic version (like `1.0` or `2.2`),
 /// representing a stable release, and equivalent to the semantic version
 /// you get by appending a `.0`.
-class const Since(final String version);
+class Since {
+  final String version;
+  const Since(this.version);
+}
 
 /// A null-check function for function parameters in Null Safety enabled code.
 ///
@@ -847,9 +852,9 @@
 }
 
 /// A [TypeError] thrown by [checkNotNullable].
-class NotNullableError<T>(final String _name)
-    extends Error
-    implements TypeError {
+class NotNullableError<T> extends Error implements TypeError {
+  final String _name;
+  NotNullableError(this._name);
   String toString() => "Null is not a valid value for '$_name' of type '$T'";
 }
 
@@ -874,7 +879,7 @@
 /**
  * HTTP status codes.  Exported in dart:io and dart:html.
  */
-abstract interface class HttpStatus {
+abstract class HttpStatus {
   static const int continue_ = 100;
   static const int switchingProtocols = 101;
   static const int processing = 102;
@@ -1052,15 +1057,15 @@
 // this publicly visible type.
 //
 // TODO: @Deprecated("Will be removed in a future release")
-class DoubleLinkedQueueEntry<E>(
-  /// The element of the entry in the queue.
-  var E element,
-) {
+class DoubleLinkedQueueEntry<E> {
   DoubleLinkedQueueEntry<E>? _previousLink;
   DoubleLinkedQueueEntry<E>? _nextLink;
 
+  /// The element of the entry in the queue.
+  E element;
+
   /// Creates a new entry with the given [element].
-  this;
+  DoubleLinkedQueueEntry(this.element);
 
   void _link(
     DoubleLinkedQueueEntry<E>? previous,
@@ -1145,7 +1150,7 @@
 /// perform an `v is T` type test.
 ///
 /// Intended use: `TypeTest<T>().test`.
-final class const TypeTest<T>() {
+class TypeTest<T> {
   bool test(Object? v) => v is T;
 }
 
diff --git a/sdk/lib/internal/iterable.dart b/sdk/lib/internal/iterable.dart
index 3110ec5..ec53266 100644
--- a/sdk/lib/internal/iterable.dart
+++ b/sdk/lib/internal/iterable.dart
@@ -4,13 +4,18 @@
 
 part of "dart:_internal";
 
-/// Marker interface for [Iterable] subclasses that have an efficient
-/// [length] implementation.
-abstract class const EfficientLengthIterable<T>() extends Iterable<T> {
-  /// The number of elements in the iterable.
-  ///
-  /// This is an efficient operation that doesn't require iterating through
-  /// the elements.
+/**
+ * Marker interface for [Iterable] subclasses that have an efficient
+ * [length] implementation.
+ */
+abstract class EfficientLengthIterable<T> extends Iterable<T> {
+  const EfficientLengthIterable();
+  /**
+   * Returns the number of elements in the iterable.
+   *
+   * This is an efficient operation that doesn't require iterating through
+   * the elements.
+   */
   int get length;
 }
 
@@ -20,7 +25,8 @@
 /// this interface, and they have the same *depth*, so it's impossible
 /// for the upper-bound algorithm to get [EfficientLengthIterable]
 /// as the result.
-abstract interface class HideEfficientLengthIterable<T> implements Iterable<T>;
+abstract interface class HideEfficientLengthIterable<T>
+    implements Iterable<T> {}
 
 /**
  * An [Iterable] for classes that have efficient [length] and [elementAt].
@@ -1066,8 +1072,10 @@
       : (throw IterableElementError.noElement());
 }
 
-/// Creates errors throw by [Iterable] when the element count is wrong.
-abstract interface class IterableElementError {
+/**
+ * Creates errors throw by [Iterable] when the element count is wrong.
+ */
+abstract class IterableElementError {
   /** Error thrown by, e.g., [Iterable.first] when there is no result. */
   static StateError noElement() => StateError("No element");
   /** Error thrown by, e.g., [Iterable.single] if there are too many results. */
diff --git a/sdk/lib/internal/linked_list.dart b/sdk/lib/internal/linked_list.dart
index b185bf4..1dc53fc 100644
--- a/sdk/lib/internal/linked_list.dart
+++ b/sdk/lib/internal/linked_list.dart
@@ -5,7 +5,7 @@
 part of "dart:_internal";
 
 /// A rudimentary linked list.
-class LinkedList<T extends LinkedListEntry<T>>() extends Iterable<T> {
+class LinkedList<T extends LinkedListEntry<T>> extends Iterable<T> {
   T get first => _first as T;
   T? _first;
 
@@ -78,7 +78,7 @@
   Iterator<T> get iterator => _LinkedListIterator<T>(this);
 }
 
-class LinkedListEntry<T extends LinkedListEntry<T>>() {
+class LinkedListEntry<T extends LinkedListEntry<T>> {
   T? _next;
   T? _previous;
   LinkedList<T>? _list;
diff --git a/sdk/lib/internal/list.dart b/sdk/lib/internal/list.dart
index 8ecf73a..09b73a1 100644
--- a/sdk/lib/internal/list.dart
+++ b/sdk/lib/internal/list.dart
@@ -254,10 +254,12 @@
   E elementAt(int index) => _source.elementAt(_source.length - 1 - index);
 }
 
-/// Creates errors thrown by unmodifiable lists when they are attempted modified.
-///
-/// This class creates [UnsupportedError]s with specialized messages.
-abstract interface class UnmodifiableListError {
+/**
+ * Creates errors thrown by unmodifiable lists when they are attempted modified.
+ *
+ * This class creates [UnsupportedError]s with specialized messages.
+ */
+abstract class UnmodifiableListError {
   /** Error thrown when trying to add elements to an unmodifiable list. */
   static UnsupportedError add() =>
       UnsupportedError("Cannot add to unmodifiable List");
@@ -275,10 +277,12 @@
       UnsupportedError("Cannot remove from unmodifiable List");
 }
 
-/// Creates errors thrown by non-growable lists when attempted modified.
-///
-/// This class creates [UnsupportedError]s with specialized messages.
-abstract interface class NonGrowableListError {
+/**
+ * Creates errors thrown by non-growable lists when they are attempted modified.
+ *
+ * This class creates [UnsupportedError]s with specialized messages.
+ */
+abstract class NonGrowableListError {
   /** Error thrown when trying to add elements to an non-growable list. */
   static UnsupportedError add() =>
       UnsupportedError("Cannot add to non-growable List");
diff --git a/sdk/lib/internal/sort.dart b/sdk/lib/internal/sort.dart
index b2d665d..1452406 100644
--- a/sdk/lib/internal/sort.dart
+++ b/sdk/lib/internal/sort.dart
@@ -12,7 +12,7 @@
  *
  * Some improvements have been copied from Android's implementation.
  */
-abstract interface class Sort {
+class Sort {
   // When a list has less than [:_INSERTION_SORT_THRESHOLD:] elements it will
   // be sorted by an insertion sort.
   static const int _INSERTION_SORT_THRESHOLD = 32;
diff --git a/sdk/lib/math/point.dart b/sdk/lib/math/point.dart
index b0ddaf4..f636244 100644
--- a/sdk/lib/math/point.dart
+++ b/sdk/lib/math/point.dart
@@ -40,7 +40,7 @@
   ///
   /// **Legacy:** New usages of [Point] are discouraged.
   /// To learn more, check out the [Point] class API docs.
-  const new(T x, T y) : this.x = x, this.y = y;
+  const Point(T x, T y) : this.x = x, this.y = y;
 
   String toString() => 'Point($x, $y)';
 
diff --git a/sdk/lib/math/random.dart b/sdk/lib/math/random.dart
index 0eb9194..014aec3 100644
--- a/sdk/lib/math/random.dart
+++ b/sdk/lib/math/random.dart
@@ -34,13 +34,13 @@
   /// The optional parameter [seed] is used to initialize the
   /// internal state of the generator. The implementation of the
   /// random stream can change between releases of the library.
-  external factory([int? seed]);
+  external factory Random([int? seed]);
 
   /// Creates a cryptographically secure random number generator.
   ///
   /// If the program cannot provide a cryptographically secure
   /// source of random numbers, it throws an [UnsupportedError].
-  external factory secure();
+  external factory Random.secure();
 
   /// Generates a non-negative random integer uniformly distributed in the range
   /// from 0, inclusive, to [max], exclusive.
diff --git a/sdk/lib/math/rectangle.dart b/sdk/lib/math/rectangle.dart
index d059c6a..2b1b8f3 100644
--- a/sdk/lib/math/rectangle.dart
+++ b/sdk/lib/math/rectangle.dart
@@ -176,7 +176,7 @@
   ///
   /// **Legacy:** New usages of [Rectangle] are discouraged.
   /// To learn more, check out the [Rectangle] class API docs.
-  const new(this.left, this.top, T width, T height)
+  const Rectangle(this.left, this.top, T width, T height)
     : width = (width < 0)
           ? (width == double.negativeInfinity ? 0.0 : (-width * 0)) as dynamic
           : (width + 0 as dynamic), // Inline _clampToZero<num>.
@@ -207,7 +207,7 @@
   /// print(rectangle.right); // 300
   /// print(rectangle.bottom); // 600
   /// ```
-  factory fromPoints(Point<T> a, Point<T> b) {
+  factory Rectangle.fromPoints(Point<T> a, Point<T> b) {
     T left = min(a.x, b.x);
     T width = (max(a.x, b.x) - left) as T;
     T top = min(a.y, b.y);
@@ -318,7 +318,7 @@
   /// print(rectangle.right); // 300
   /// print(rectangle.bottom); // 600
   /// ```
-  factory fromPoints(Point<T> a, Point<T> b) {
+  factory MutableRectangle.fromPoints(Point<T> a, Point<T> b) {
     T left = min(a.x, b.x);
     T width = (max(a.x, b.x) - left) as T;
     T top = min(a.y, b.y);
diff --git a/sdk/lib/typed_data/typed_data.dart b/sdk/lib/typed_data/typed_data.dart
index a4866fc..45e39a9 100644
--- a/sdk/lib/typed_data/typed_data.dart
+++ b/sdk/lib/typed_data/typed_data.dart
@@ -359,7 +359,7 @@
 
 /// A [TypedData] fixed-length [List]-view on the bytes of [buffer].
 @Since("3.5")
-abstract final class TypedDataList<E> implements TypedData, List<E>;
+abstract final class TypedDataList<E> implements TypedData, List<E> {}
 
 abstract final class _TypedIntList implements TypedDataList<int> {
   /// The concatenation of this list and [other].
@@ -398,7 +398,10 @@
 ///
 /// It is a compile-time error for a class to attempt to extend or implement
 /// `Endian`.
-final class const Endian._(final bool _littleEndian) {
+final class Endian {
+  final bool _littleEndian;
+  const Endian._(this._littleEndian);
+
   static const Endian big = Endian._(false);
   static const Endian little = Endian._(true);
   static final Endian host =
@@ -445,7 +448,7 @@
   /// Creates a [ByteData] of the specified length (in elements), all of
   /// whose bytes are initially zero.
   @pragma("vm:entry-point")
-  external factory(int length);
+  external factory ByteData(int length);
 
   /// Creates an [ByteData] _view_ of the specified region in [buffer].
   ///
@@ -476,7 +479,11 @@
   /// (The third argument is an end index rather than a length, so if
   /// you start from a position greater than zero, you need not
   /// reduce the count correspondingly).
-  factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) {
+  factory ByteData.view(
+    ByteBuffer buffer, [
+    int offsetInBytes = 0,
+    int? length,
+  ]) {
     return buffer.asByteData(offsetInBytes, length);
   }
 
@@ -496,7 +503,7 @@
   /// is the same as the [List.length] of a typed data list.
   ///
   /// If omitted, [start] defaults to zero and [end] to *elementCount*.
-  factory sublistView(TypedData data, [int start = 0, int? end]) {
+  factory ByteData.sublistView(TypedData data, [int start = 0, int? end]) {
     int elementSize = data.elementSizeInBytes;
     end = RangeError.checkValidRange(
       start,
@@ -739,7 +746,7 @@
   /// whose elements are initially zero.
   ///
   /// The list is backed by a [ByteBuffer] containing precisely [length] bytes.
-  external factory(int length);
+  external factory Int8List(int length);
 
   /// Creates a [Int8List] with the same length as the [elements] list
   /// and copies over the elements.
@@ -749,7 +756,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely `elements.length`
   /// bytes.
-  external factory fromList(List<int> elements);
+  external factory Int8List.fromList(List<int> elements);
 
   /// Creates an [Int8List] _view_ of the specified region in [buffer].
   ///
@@ -780,7 +787,11 @@
   /// (The third argument is an end index rather than a length, so if
   /// you start from a position greater than zero, you need not
   /// reduce the count correspondingly).
-  factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) {
+  factory Int8List.view(
+    ByteBuffer buffer, [
+    int offsetInBytes = 0,
+    int? length,
+  ]) {
     return buffer.asInt8List(offsetInBytes, length);
   }
 
@@ -800,7 +811,7 @@
   /// is the same as the [List.length] of a typed data list.
   ///
   /// If omitted, [start] defaults to zero and [end] to *elementCount*.
-  factory sublistView(TypedData data, [int start = 0, int? end]) {
+  factory Int8List.sublistView(TypedData data, [int start = 0, int? end]) {
     int elementSize = data.elementSizeInBytes;
     end = RangeError.checkValidRange(
       start,
@@ -859,7 +870,7 @@
   /// whose elements are initially zero.
   ///
   /// The list is backed by a [ByteBuffer] containing precisely [length] bytes.
-  external factory(int length);
+  external factory Uint8List(int length);
 
   /// Creates a [Uint8List] with the same length as the [elements] list
   /// and copies over the elements.
@@ -869,7 +880,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely `elements.length`
   /// bytes.
-  external factory fromList(List<int> elements);
+  external factory Uint8List.fromList(List<int> elements);
 
   /// Creates a [Uint8List] _view_ of the specified region in [buffer].
   ///
@@ -900,7 +911,11 @@
   /// (The third argument is an end index rather than a length, so if
   /// you start from a position greater than zero, you need not
   /// reduce the count correspondingly).
-  factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) {
+  factory Uint8List.view(
+    ByteBuffer buffer, [
+    int offsetInBytes = 0,
+    int? length,
+  ]) {
     return buffer.asUint8List(offsetInBytes, length);
   }
 
@@ -920,7 +935,7 @@
   /// is the same as the [List.length] of a typed data list.
   ///
   /// If omitted, [start] defaults to zero and [end] to *elementCount*.
-  factory sublistView(TypedData data, [int start = 0, int? end]) {
+  factory Uint8List.sublistView(TypedData data, [int start = 0, int? end]) {
     int elementSize = data.elementSizeInBytes;
     end = RangeError.checkValidRange(
       start,
@@ -986,7 +1001,7 @@
   /// whose elements are initially zero.
   ///
   /// The list is backed by a [ByteBuffer] containing precisely [length] bytes.
-  external factory(int length);
+  external factory Uint8ClampedList(int length);
 
   /// Creates a [Uint8ClampedList] of the same size as the [elements]
   /// list and copies over the values clamping when needed.
@@ -996,7 +1011,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely `elements.length`
   /// bytes.
-  external factory fromList(List<int> elements);
+  external factory Uint8ClampedList.fromList(List<int> elements);
 
   /// Creates a [Uint8ClampedList] _view_ of the specified region in the
   /// specified byte [buffer].
@@ -1028,7 +1043,11 @@
   /// (The third argument is an end index rather than a length, so if
   /// you start from a position greater than zero, you need not
   /// reduce the count correspondingly).
-  factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) {
+  factory Uint8ClampedList.view(
+    ByteBuffer buffer, [
+    int offsetInBytes = 0,
+    int? length,
+  ]) {
     return buffer.asUint8ClampedList(offsetInBytes, length);
   }
 
@@ -1049,7 +1068,11 @@
   ///
   /// If omitted, [start] defaults to zero and [end] to *elementCount*.
   @Since("3.3")
-  factory sublistView(TypedData data, [int start = 0, int? end]) {
+  factory Uint8ClampedList.sublistView(
+    TypedData data, [
+    int start = 0,
+    int? end,
+  ]) {
     int elementSize = data.elementSizeInBytes;
     end = RangeError.checkValidRange(
       start,
@@ -1110,7 +1133,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// [length] times 2 bytes.
-  external factory(int length);
+  external factory Int16List(int length);
 
   /// Creates a [Int16List] with the same length as the [elements] list
   /// and copies over the elements.
@@ -1120,7 +1143,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// `elements.length` times 2 bytes.
-  external factory fromList(List<int> elements);
+  external factory Int16List.fromList(List<int> elements);
 
   /// Creates an [Int16List] _view_ of the specified region in [buffer].
   ///
@@ -1153,7 +1176,11 @@
   /// (The third argument is an end index rather than a length, so if
   /// you start from a position greater than zero, you need not
   /// reduce the count correspondingly).
-  factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) {
+  factory Int16List.view(
+    ByteBuffer buffer, [
+    int offsetInBytes = 0,
+    int? length,
+  ]) {
     return buffer.asInt16List(offsetInBytes, length);
   }
 
@@ -1176,7 +1203,7 @@
   ///
   /// The start and end indices of the range of bytes being viewed must be
   /// multiples of two.
-  factory sublistView(TypedData data, [int start = 0, int? end]) {
+  factory Int16List.sublistView(TypedData data, [int start = 0, int? end]) {
     int elementSize = data.elementSizeInBytes;
     end = RangeError.checkValidRange(
       start,
@@ -1244,7 +1271,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// [length] times 2 bytes.
-  external factory(int length);
+  external factory Uint16List(int length);
 
   /// Creates a [Uint16List] with the same length as the [elements] list
   /// and copies over the elements.
@@ -1254,7 +1281,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// `elements.length` times 2 bytes.
-  external factory fromList(List<int> elements);
+  external factory Uint16List.fromList(List<int> elements);
 
   /// Creates a [Uint16List] _view_ of the specified region in
   /// the specified byte buffer.
@@ -1288,7 +1315,11 @@
   /// (The third argument is an end index rather than a length, so if
   /// you start from a position greater than zero, you need not
   /// reduce the count correspondingly).
-  factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) {
+  factory Uint16List.view(
+    ByteBuffer buffer, [
+    int offsetInBytes = 0,
+    int? length,
+  ]) {
     return buffer.asUint16List(offsetInBytes, length);
   }
 
@@ -1311,7 +1342,7 @@
   ///
   /// The start and end indices of the range of bytes being viewed must be
   /// multiples of two.
-  factory sublistView(TypedData data, [int start = 0, int? end]) {
+  factory Uint16List.sublistView(TypedData data, [int start = 0, int? end]) {
     int elementSize = data.elementSizeInBytes;
     end = RangeError.checkValidRange(
       start,
@@ -1379,7 +1410,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// [length] times 4 bytes.
-  external factory(int length);
+  external factory Int32List(int length);
 
   /// Creates a [Int32List] with the same length as the [elements] list
   /// and copies over the elements.
@@ -1389,7 +1420,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// `elements.length` times 4 bytes.
-  external factory fromList(List<int> elements);
+  external factory Int32List.fromList(List<int> elements);
 
   /// Creates an [Int32List] _view_ of the specified region in [buffer].
   ///
@@ -1422,7 +1453,11 @@
   /// (The third argument is an end index rather than a length, so if
   /// you start from a position greater than zero, you need not
   /// reduce the count correspondingly).
-  factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) {
+  factory Int32List.view(
+    ByteBuffer buffer, [
+    int offsetInBytes = 0,
+    int? length,
+  ]) {
     return buffer.asInt32List(offsetInBytes, length);
   }
 
@@ -1445,7 +1480,7 @@
   ///
   /// The start and end indices of the range of bytes being viewed must be
   /// multiples of four.
-  factory sublistView(TypedData data, [int start = 0, int? end]) {
+  factory Int32List.sublistView(TypedData data, [int start = 0, int? end]) {
     int elementSize = data.elementSizeInBytes;
     end = RangeError.checkValidRange(
       start,
@@ -1513,7 +1548,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// [length] times 4 bytes.
-  external factory(int length);
+  external factory Uint32List(int length);
 
   /// Creates a [Uint32List] with the same length as the [elements] list
   /// and copies over the elements.
@@ -1523,7 +1558,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// `elements.length` times 4 bytes.
-  external factory fromList(List<int> elements);
+  external factory Uint32List.fromList(List<int> elements);
 
   /// Creates a [Uint32List] _view_ of the specified region in
   /// the specified byte buffer.
@@ -1557,7 +1592,11 @@
   /// (The third argument is an end index rather than a length, so if
   /// you start from a position greater than zero, you need not
   /// reduce the count correspondingly).
-  factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) {
+  factory Uint32List.view(
+    ByteBuffer buffer, [
+    int offsetInBytes = 0,
+    int? length,
+  ]) {
     return buffer.asUint32List(offsetInBytes, length);
   }
 
@@ -1580,7 +1619,7 @@
   ///
   /// The start and end indices of the range of bytes being viewed must be
   /// multiples of four.
-  factory sublistView(TypedData data, [int start = 0, int? end]) {
+  factory Uint32List.sublistView(TypedData data, [int start = 0, int? end]) {
     int elementSize = data.elementSizeInBytes;
     end = RangeError.checkValidRange(
       start,
@@ -1648,7 +1687,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// [length] times 8 bytes.
-  external factory(int length);
+  external factory Int64List(int length);
 
   /// Creates a [Int64List] with the same length as the [elements] list
   /// and copies over the elements.
@@ -1658,7 +1697,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// `elements.length` times 8 bytes.
-  external factory fromList(List<int> elements);
+  external factory Int64List.fromList(List<int> elements);
 
   /// Creates an [Int64List] _view_ of the specified region in [buffer].
   ///
@@ -1691,7 +1730,11 @@
   /// (The third argument is an end index rather than a length, so if
   /// you start from a position greater than zero, you need not
   /// reduce the count correspondingly).
-  factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) {
+  factory Int64List.view(
+    ByteBuffer buffer, [
+    int offsetInBytes = 0,
+    int? length,
+  ]) {
     return buffer.asInt64List(offsetInBytes, length);
   }
 
@@ -1714,7 +1757,7 @@
   ///
   /// The start and end indices of the range of bytes being viewed must be
   /// multiples of eight.
-  factory sublistView(TypedData data, [int start = 0, int? end]) {
+  factory Int64List.sublistView(TypedData data, [int start = 0, int? end]) {
     int elementSize = data.elementSizeInBytes;
     end = RangeError.checkValidRange(
       start,
@@ -1782,7 +1825,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// [length] times 8 bytes.
-  external factory(int length);
+  external factory Uint64List(int length);
 
   /// Creates a [Uint64List] with the same length as the [elements] list
   /// and copies over the elements.
@@ -1792,7 +1835,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// `elements.length` times 8 bytes.
-  external factory fromList(List<int> elements);
+  external factory Uint64List.fromList(List<int> elements);
 
   /// Creates an [Uint64List] _view_ of the specified region in
   /// the specified byte buffer.
@@ -1826,7 +1869,11 @@
   /// (The third argument is an end index rather than a length, so if
   /// you start from a position greater than zero, you need not
   /// reduce the count correspondingly).
-  factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) {
+  factory Uint64List.view(
+    ByteBuffer buffer, [
+    int offsetInBytes = 0,
+    int? length,
+  ]) {
     return buffer.asUint64List(offsetInBytes, length);
   }
 
@@ -1849,7 +1896,7 @@
   ///
   /// The start and end indices of the range of bytes being viewed must be
   /// multiples of eight.
-  factory sublistView(TypedData data, [int start = 0, int? end]) {
+  factory Uint64List.sublistView(TypedData data, [int start = 0, int? end]) {
     int elementSize = data.elementSizeInBytes;
     end = RangeError.checkValidRange(
       start,
@@ -1918,7 +1965,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// [length] times 4 bytes.
-  external factory(int length);
+  external factory Float32List(int length);
 
   /// Creates a [Float32List] with the same length as the [elements] list
   /// and copies over the elements.
@@ -1928,7 +1975,7 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// `elements.length` times 4 bytes.
-  external factory fromList(List<double> elements);
+  external factory Float32List.fromList(List<double> elements);
 
   /// Creates a [Float32List] _view_ of the specified region in [buffer].
   ///
@@ -1961,7 +2008,11 @@
   /// (The third argument is an end index rather than a length, so if
   /// you start from a position greater than zero, you need not
   /// reduce the count correspondingly).
-  factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) {
+  factory Float32List.view(
+    ByteBuffer buffer, [
+    int offsetInBytes = 0,
+    int? length,
+  ]) {
     return buffer.asFloat32List(offsetInBytes, length);
   }
 
@@ -1984,7 +2035,7 @@
   ///
   /// The start and end indices of the range of bytes being viewed must be
   /// multiples of four.
-  factory sublistView(TypedData data, [int start = 0, int? end]) {
+  factory Float32List.sublistView(TypedData data, [int start = 0, int? end]) {
     int elementSize = data.elementSizeInBytes;
     end = RangeError.checkValidRange(
       start,
@@ -2049,14 +2100,14 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// [length] times 8 bytes.
-  external factory(int length);
+  external factory Float64List(int length);
 
   /// Creates a [Float64List] with the same length as the [elements] list
   /// and copies over the elements.
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// `elements.length` times 8 bytes.
-  external factory fromList(List<double> elements);
+  external factory Float64List.fromList(List<double> elements);
 
   /// Creates a [Float64List] _view_ of the specified region in [buffer].
   ///
@@ -2089,7 +2140,11 @@
   /// (The third argument is an end index rather than a length, so if
   /// you start from a position greater than zero, you need not
   /// reduce the count correspondingly).
-  factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) {
+  factory Float64List.view(
+    ByteBuffer buffer, [
+    int offsetInBytes = 0,
+    int? length,
+  ]) {
     return buffer.asFloat64List(offsetInBytes, length);
   }
 
@@ -2112,7 +2167,7 @@
   ///
   /// The start and end indices of the range of bytes being viewed must be
   /// multiples of eight.
-  factory sublistView(TypedData data, [int start = 0, int? end]) {
+  factory Float64List.sublistView(TypedData data, [int start = 0, int? end]) {
     int elementSize = data.elementSizeInBytes;
     end = RangeError.checkValidRange(
       start,
@@ -2177,14 +2232,14 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// [length] times 16 bytes.
-  external factory(int length);
+  external factory Float32x4List(int length);
 
   /// Creates a [Float32x4List] with the same length as the [elements] list
   /// and copies over the elements.
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// `elements.length` times 16 bytes.
-  external factory fromList(List<Float32x4> elements);
+  external factory Float32x4List.fromList(List<Float32x4> elements);
 
   /// Creates a [Float32x4List] _view_ of the specified region in [buffer].
   ///
@@ -2217,7 +2272,11 @@
   /// (The third argument is an end index rather than a length, so if
   /// you start from a position greater than zero, you need not
   /// reduce the count correspondingly).
-  factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) {
+  factory Float32x4List.view(
+    ByteBuffer buffer, [
+    int offsetInBytes = 0,
+    int? length,
+  ]) {
     return buffer.asFloat32x4List(offsetInBytes, length);
   }
 
@@ -2240,7 +2299,7 @@
   ///
   /// The start and end indices of the range of bytes being viewed must be
   /// multiples of sixteen.
-  factory sublistView(TypedData data, [int start = 0, int? end]) {
+  factory Float32x4List.sublistView(TypedData data, [int start = 0, int? end]) {
     int elementSize = data.elementSizeInBytes;
     end = RangeError.checkValidRange(
       start,
@@ -2313,14 +2372,14 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// [length] times 16 bytes.
-  external factory(int length);
+  external factory Int32x4List(int length);
 
   /// Creates a [Int32x4List] with the same length as the [elements] list
   /// and copies over the elements.
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// `elements.length` times 16 bytes.
-  external factory fromList(List<Int32x4> elements);
+  external factory Int32x4List.fromList(List<Int32x4> elements);
 
   /// Creates a [Int32x4List] _view_ of the specified region in [buffer].
   ///
@@ -2353,7 +2412,11 @@
   /// (The third argument is an end index rather than a length, so if
   /// you start from a position greater than zero, you need not
   /// reduce the count correspondingly).
-  factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) {
+  factory Int32x4List.view(
+    ByteBuffer buffer, [
+    int offsetInBytes = 0,
+    int? length,
+  ]) {
     return buffer.asInt32x4List(offsetInBytes, length);
   }
 
@@ -2376,7 +2439,7 @@
   ///
   /// The start and end indices of the range of bytes being viewed must be
   /// multiples of sixteen.
-  factory sublistView(TypedData data, [int start = 0, int? end]) {
+  factory Int32x4List.sublistView(TypedData data, [int start = 0, int? end]) {
     int elementSize = data.elementSizeInBytes;
     end = RangeError.checkValidRange(
       start,
@@ -2453,14 +2516,14 @@
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// [length] times 16 bytes.
-  external factory(int length);
+  external factory Float64x2List(int length);
 
   /// Creates a [Float64x2List] with the same length as the [elements] list
   /// and copies over the elements.
   ///
   /// The list is backed by a [ByteBuffer] containing precisely
   /// `elements.length` times 16 bytes.
-  external factory fromList(List<Float64x2> elements);
+  external factory Float64x2List.fromList(List<Float64x2> elements);
 
   /// The concatenation of this list and [other].
   ///
@@ -2499,7 +2562,11 @@
   /// (The third argument is an end index rather than a length, so if
   /// you start from a position greater than zero, you need not
   /// reduce the count correspondingly).
-  factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) {
+  factory Float64x2List.view(
+    ByteBuffer buffer, [
+    int offsetInBytes = 0,
+    int? length,
+  ]) {
     return buffer.asFloat64x2List(offsetInBytes, length);
   }
 
@@ -2522,7 +2589,7 @@
   ///
   /// The start and end indices of the range of bytes being viewed must be
   /// multiples of sixteen.
-  factory sublistView(TypedData data, [int start = 0, int? end]) {
+  factory Float64x2List.sublistView(TypedData data, [int start = 0, int? end]) {
     int elementSize = data.elementSizeInBytes;
     end = RangeError.checkValidRange(
       start,
@@ -2600,7 +2667,7 @@
   /// The conversion from 64-bit float to 32-bit float loses significant
   /// precision, and may become zero or infinite even if the original 64-bit
   /// floating point value was non-zero and finite.
-  external factory(double x, double y, double z, double w);
+  external factory Float32x4(double x, double y, double z, double w);
 
   /// Creates a `Float32x4` with the same 32-bit float value four times.
   ///
@@ -2612,13 +2679,13 @@
   /// The conversion from 64-bit float to 32-bit float loses significant
   /// precision, and may become zero or infinite even if the original 64-bit
   /// floating point value was non-zero and finite.
-  external factory splat(double value);
+  external factory Float32x4.splat(double value);
 
   /// Creates a `Float32x4` with all values being zero.
   ///
   /// The created value has the same [Float32x4.x], [Float32x4.y], [Float32x4.z]
   /// and [Float32x4.w] value, which is the 32-bit floating point zero value.
-  external factory zero();
+  external factory Float32x4.zero();
 
   /// Creates a `Float32x4` with 32-bit float values from the provided bits.
   ///
@@ -2628,7 +2695,7 @@
   ///
   /// The conversion is performed using the *platform endianness* for both
   /// 32-bit integers and 32-bit floating point numbers.
-  external factory fromInt32x4Bits(Int32x4 bits);
+  external factory Float32x4.fromInt32x4Bits(Int32x4 bits);
 
   /// Creates a `Float32x4` with its [x] and [y] lanes set to values from [xy].
   ///
@@ -2636,7 +2703,7 @@
   /// which are the conversions of the [Float64x2.x] and [Float64x2.y] lanes
   /// of [xy] to 32-bit floating point values.
   /// The [Float32x4.z] and [Float32x4.w] lanes are set to the zero value.
-  external factory fromFloat64x2(Float64x2 xy);
+  external factory Float32x4.fromFloat64x2(Float64x2 xy);
 
   /// Lane-wise addition.
   ///
@@ -4262,9 +4329,9 @@
 /// Int32x4 stores 4 32-bit bit-masks in "lanes".
 /// The lanes are "x", "y", "z", and "w" respectively.
 abstract final class Int32x4 {
-  external factory(int x, int y, int z, int w);
-  external factory bool(bool x, bool y, bool z, bool w);
-  external factory fromFloat32x4Bits(Float32x4 x);
+  external factory Int32x4(int x, int y, int z, int w);
+  external factory Int32x4.bool(bool x, bool y, bool z, bool w);
+  external factory Int32x4.fromFloat32x4Bits(Float32x4 x);
 
   /// The bit-wise or operator.
   Int32x4 operator |(Int32x4 other);
@@ -4616,12 +4683,12 @@
 /// It is a compile-time error for a class to attempt to extend or implement
 /// `Float64x2`.
 abstract final class Float64x2 {
-  external factory(double x, double y);
-  external factory splat(double v);
-  external factory zero();
+  external factory Float64x2(double x, double y);
+  external factory Float64x2.splat(double v);
+  external factory Float64x2.zero();
 
   /// Uses the "x" and "y" lanes from [v].
-  external factory fromFloat32x4(Float32x4 v);
+  external factory Float64x2.fromFloat32x4(Float32x4 v);
 
   /// Addition operator.
   Float64x2 operator +(Float64x2 other);