Version 2.19.0-280.0.dev

Merge 683e2419da03b68074c9c744d9c2566f51c588f5 into dev
diff --git a/pkg/analysis_server/lib/src/computer/computer_overrides.dart b/pkg/analysis_server/lib/src/computer/computer_overrides.dart
index ed92d77..3f9601b 100644
--- a/pkg/analysis_server/lib/src/computer/computer_overrides.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_overrides.dart
@@ -161,10 +161,10 @@
     }
     // interfaces
     for (var interfaceType in class_.interfaces) {
-      _addInterfaceOverrides(interfaceType.element2, true);
+      _addInterfaceOverrides(interfaceType.element, true);
     }
     // super
-    _addInterfaceOverrides(class_.supertype?.element2, checkType);
+    _addInterfaceOverrides(class_.supertype?.element, checkType);
   }
 
   void _addSuperOverrides(InterfaceElement? class_,
@@ -183,13 +183,13 @@
       }
     }
 
-    _addSuperOverrides(class_.supertype?.element2);
+    _addSuperOverrides(class_.supertype?.element);
     for (var mixin_ in class_.mixins) {
-      _addSuperOverrides(mixin_.element2);
+      _addSuperOverrides(mixin_.element);
     }
     if (class_ is MixinElement) {
       for (var constraint in class_.superclassConstraints) {
-        _addSuperOverrides(constraint.element2);
+        _addSuperOverrides(constraint.element);
       }
     }
   }
diff --git a/pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart b/pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart
index c6548ab..b63537e 100644
--- a/pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart
+++ b/pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart
@@ -135,7 +135,7 @@
     if (type is! InterfaceType || !_flutter.isWidgetType(type)) {
       return null;
     }
-    var className = type.element2.displayName;
+    var className = type.element.displayName;
 
     if (node is InstanceCreationExpression) {
       var attributes = <protocol.FlutterOutlineAttribute>[];
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_type_definition.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_type_definition.dart
index 55dd492..dfe382eb 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_type_definition.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_type_definition.dart
@@ -84,9 +84,9 @@
 
         analyzer.Element? element;
         if (type is InterfaceType) {
-          element = type.element2;
+          element = type.element;
         } else if (type is TypeParameterType) {
-          element = type.element2;
+          element = type.element;
         }
         if (element is! analyzer.ElementImpl) {
           return success(_emptyResult);
diff --git a/pkg/analysis_server/lib/src/search/type_hierarchy.dart b/pkg/analysis_server/lib/src/search/type_hierarchy.dart
index f5441d3..c7aef5d 100644
--- a/pkg/analysis_server/lib/src/search/type_hierarchy.dart
+++ b/pkg/analysis_server/lib/src/search/type_hierarchy.dart
@@ -158,19 +158,19 @@
       var superType = classElement.supertype;
       if (superType != null) {
         item.superclass = _createSuperItem(
-          superType.element2,
+          superType.element,
           superType.typeArguments,
         );
       }
     }
     // mixins
     for (var type in classElement.mixins) {
-      var id = _createSuperItem(type.element2, type.typeArguments);
+      var id = _createSuperItem(type.element, type.typeArguments);
       item.mixins.add(id);
     }
     // interfaces
     for (var type in classElement.interfaces) {
-      var id = _createSuperItem(type.element2, type.typeArguments);
+      var id = _createSuperItem(type.element, type.typeArguments);
       item.interfaces.add(id);
     }
     // done
@@ -201,7 +201,7 @@
     }
     // try to find in the class mixin
     for (var mixin in clazz.mixins.reversed) {
-      var mixinElement = mixin.element2;
+      var mixinElement = mixin.element;
       if (_pivotKind == ElementKind.METHOD) {
         result = mixinElement.lookUpMethod(pivotName, _pivotLibrary);
       } else if (_pivotKind == ElementKind.GETTER) {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
index 656361f..182bc53 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
@@ -260,7 +260,7 @@
 
     var type = request.contextType;
     if (type is InterfaceType) {
-      var element = type.element2;
+      var element = type.element;
       var tag = '${element.librarySource.uri}::${element.name}';
       if (element is EnumElement) {
         includedSuggestionRelevanceTags.add(
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart
index 5eb8d05..a4daad8 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart
@@ -44,7 +44,7 @@
           for (var type in types) {
             var inheritanceDistance = memberBuilder.request.featureComputer
                 .inheritanceDistanceFeature(
-                    thisExtendedType.element2, type.element2);
+                    thisExtendedType.element, type.element);
             _addTypeMembers(type, defaultKind, inheritanceDistance);
           }
           _addExtensionMembers(extensions, defaultKind, thisExtendedType);
@@ -114,7 +114,7 @@
       var inheritanceDistance = 0.0;
       if (type is InterfaceType && extendedType is InterfaceType) {
         inheritanceDistance = memberBuilder.request.featureComputer
-            .inheritanceDistanceFeature(type.element2, extendedType.element2);
+            .inheritanceDistanceFeature(type.element, extendedType.element);
       }
       // TODO(brianwilkerson) We might want to apply the substitution to the
       //  members of the extension for display purposes.
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart b/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
index bade581..ebd65ca 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
@@ -472,11 +472,11 @@
       return -1;
     }
     var minDepth =
-        _inheritanceDistance(subclass.supertype?.element2, superclass, visited);
+        _inheritanceDistance(subclass.supertype?.element, superclass, visited);
 
     void visitTypes(List<InterfaceType> types) {
       for (var type in types) {
-        var depth = _inheritanceDistance(type.element2, superclass, visited);
+        var depth = _inheritanceDistance(type.element, superclass, visited);
         if (minDepth < 0 || (depth >= 0 && depth < minDepth)) {
           minDepth = depth;
         }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
index 4b1d417..c9e1e534 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
@@ -153,7 +153,7 @@
         : CompletionSuggestionKind.INVOCATION;
     for (var type in interface.allSupertypes) {
       var inheritanceDistance = request.featureComputer
-          .inheritanceDistanceFeature(interface, type.element2);
+          .inheritanceDistanceFeature(interface, type.element);
       _addSuggestionsForType(type, inheritanceDistance,
           isFunctionalArgument: isFunctionalArgument);
     }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/named_constructor_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/named_constructor_contributor.dart
index 4730873..0b25537 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/named_constructor_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/named_constructor_contributor.dart
@@ -28,7 +28,7 @@
       } else {
         var type = node.type.type;
         if (type is InterfaceType) {
-          var element = type.element2;
+          var element = type.element;
           _buildSuggestions(element);
         }
       }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/redirecting_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/redirecting_contributor.dart
index 10561f1..b9feb5f 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/redirecting_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/redirecting_contributor.dart
@@ -35,7 +35,7 @@
       } else if (parent is SuperConstructorInvocation) {
         // C() : super.^
         var superclassElement =
-            parent.enclosingInterfaceElement?.supertype?.element2;
+            parent.enclosingInterfaceElement?.supertype?.element;
         if (superclassElement != null) {
           for (var constructor in superclassElement.constructors) {
             if (constructor.isAccessibleIn2(request.libraryElement)) {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/static_member_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/static_member_contributor.dart
index c19440f..3c6d862 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/static_member_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/static_member_contributor.dart
@@ -26,7 +26,7 @@
       if (element is TypeAliasElement) {
         var aliasedType = element.aliasedType;
         if (aliasedType is InterfaceType) {
-          element = aliasedType.element2;
+          element = aliasedType.element;
         }
       }
       if (element is InterfaceElement) {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/type_member_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/type_member_contributor.dart
index b534e52..3c083016 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/type_member_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/type_member_contributor.dart
@@ -272,7 +272,7 @@
     }
     for (var targetType in types) {
       var inheritanceDistance = request.featureComputer
-          .inheritanceDistanceFeature(type.element2, targetType.element2);
+          .inheritanceDistanceFeature(type.element, targetType.element);
       for (var method in targetType.methods) {
         // Exclude static methods when completion on an instance.
         if (!method.isStatic) {
@@ -313,7 +313,7 @@
     var typesToVisit = <InterfaceType>[type];
     while (typesToVisit.isNotEmpty) {
       var nextType = typesToVisit.removeLast();
-      if (!classesSeen.add(nextType.element2)) {
+      if (!classesSeen.add(nextType.element)) {
         // Class had already been seen, so ignore this type.
         continue;
       }
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart b/pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart
index ba1f64c..94565e9 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart
@@ -88,7 +88,7 @@
   InterfaceElement? getTargetInterfaceElement(Expression target) {
     var type = target.staticType;
     if (type is InterfaceType) {
-      return type.element2;
+      return type.element;
     } else if (target is Identifier) {
       var element = target.staticElement;
       if (element is InterfaceElement) {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart
index 9322da0..e431ff1 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart
@@ -212,7 +212,7 @@
   }
 
   bool _isEnum(DartType type) {
-    return type is InterfaceType && type.element2 is EnumElement;
+    return type is InterfaceType && type.element is EnumElement;
   }
 
   bool _isIterable(DartType type) {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart
index b6d4ac3..fc7f990 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart
@@ -35,7 +35,7 @@
     var enumConstantNames = <String>[];
     var expressionType = statement.expression.staticType;
     if (expressionType is InterfaceType) {
-      var enumElement = expressionType.element2;
+      var enumElement = expressionType.element;
       if (enumElement is EnumElement) {
         enumName = enumElement.name;
         for (var field in enumElement.fields) {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart
index 3e89593..8862753 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart
@@ -26,7 +26,7 @@
       if (expressionType is! InterfaceType) {
         return;
       }
-      var classElement = expressionType.element2;
+      var classElement = expressionType.element;
       var className = classElement.name;
       var caseNames = _caseNames(node);
       var missingNames = _constantNames(classElement)
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart
index b050fd1..8f604b1 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart
@@ -560,7 +560,7 @@
               //   class.
               if (fieldElement.isConst &&
                   fieldType is InterfaceType &&
-                  fieldType.element2 == classElement) {
+                  fieldType.element == classElement) {
                 var initializer = field.initializer;
                 if (initializer is InstanceCreationExpression) {
                   var constructorElement =
@@ -728,13 +728,13 @@
       throw _CannotConvertException('Unresolved');
     }
     if (element != classElement) {
-      if (element.supertype?.element2 == classElement) {
+      if (element.supertype?.element == classElement) {
         throw _CannotConvertException('Class is extended');
       } else if (element.interfaces
-          .map((e) => e.element2)
+          .map((e) => e.element)
           .contains(classElement)) {
         throw _CannotConvertException('Class is implemented');
-      } else if (element.mixins.map((e) => e.element2).contains(classElement)) {
+      } else if (element.mixins.map((e) => e.element).contains(classElement)) {
         // This case won't occur unless there's an error in the source code, but
         // it's easier to check for the condition than it is to check for the
         // diagnostic.
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_mixin.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_mixin.dart
index f31dc29..f587413 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_mixin.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_mixin.dart
@@ -38,7 +38,7 @@
 
     var classElement = classDeclaration.declaredElement!;
     for (var type in classElement.mixins) {
-      if (referencedClasses.contains(type.element2)) {
+      if (referencedClasses.contains(type.element)) {
         superclassConstraints.add(type);
       } else {
         interfaces.add(type);
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_into_for_index.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_into_for_index.dart
index 498bd7f..0982c01 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_into_for_index.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_into_for_index.dart
@@ -52,7 +52,7 @@
     {
       var iterableType = iterable.staticType;
       if (iterableType is! InterfaceType ||
-          iterableType.element2 != typeProvider.listElement) {
+          iterableType.element != typeProvider.listElement) {
         return;
       }
     }
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_list_literal.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_list_literal.dart
index e21fdfc..62d6308 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_list_literal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_list_literal.dart
@@ -41,7 +41,7 @@
     var type = creation.staticType;
     if (node.offset > creation.argumentList.offset ||
         type is! InterfaceType ||
-        type.element2 != typeProvider.listElement ||
+        type.element != typeProvider.listElement ||
         creation.constructorName.name != null ||
         creation.argumentList.arguments.isNotEmpty) {
       return;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_map_literal.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_map_literal.dart
index 3197d24..df9e567 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_map_literal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_map_literal.dart
@@ -45,7 +45,7 @@
         creation.constructorName.name != null ||
         creation.argumentList.arguments.isNotEmpty ||
         type is! InterfaceType ||
-        !_isMapClass(type.element2)) {
+        !_isMapClass(type.element)) {
       return;
     }
     //
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_set_literal.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_set_literal.dart
index 2dccd1e..2888e15 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_set_literal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_set_literal.dart
@@ -145,7 +145,7 @@
     }
 
     // TODO(brianwilkerson) Consider also accepting uses of LinkedHashSet.
-    if (type.element2 != typeProvider.setElement) {
+    if (type.element != typeProvider.setElement) {
       return null;
     }
     return creation;
@@ -197,14 +197,14 @@
       var parent2 = parent.parent;
       if (parent2 is VariableDeclarationList) {
         final type = parent2.type?.type;
-        if (type is InterfaceType && type.element2 == typeProvider.setElement) {
+        if (type is InterfaceType && type.element == typeProvider.setElement) {
           return true;
         }
       }
     } else if (parent.parent is InvocationExpression) {
       var parameterElement = creation.staticParameterElement;
       final type = parameterElement?.type;
-      if (type is InterfaceType && type.element2 == typeProvider.setElement) {
+      if (type is InterfaceType && type.element == typeProvider.setElement) {
         return true;
       }
     }
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart
index f18ea38..63fdcd3 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart
@@ -76,7 +76,7 @@
     }
 
     // prepare target ClassDeclaration
-    var targetElement = targetType.element2;
+    var targetElement = targetType.element;
     var targetResult = await sessionHelper.getElementDeclaration(targetElement);
     if (targetResult == null) {
       return;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_getter.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_getter.dart
index ce414da..9685cf9 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/create_getter.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/create_getter.dart
@@ -56,7 +56,7 @@
       if (targetType is! InterfaceType) {
         return;
       }
-      targetElement = targetType.element2;
+      targetElement = targetType.element;
       // maybe static
       if (target is Identifier) {
         var targetIdentifier = target;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_method_or_function.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_method_or_function.dart
index 4652473..57bdf4d 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/create_method_or_function.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/create_method_or_function.dart
@@ -38,7 +38,7 @@
         if (target != null) {
           var targetType = target.staticType;
           if (targetType is InterfaceType) {
-            targetElement = targetType.element2;
+            targetElement = targetType.element;
             argument = target.parent as Expression;
           } else {
             return;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_setter.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_setter.dart
index a0a9a54..75374f2 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/create_setter.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/create_setter.dart
@@ -55,7 +55,7 @@
       if (targetType is! InterfaceType) {
         return;
       }
-      targetElement = targetType.element2;
+      targetElement = targetType.element;
       // maybe static
       if (target is Identifier) {
         var targetIdentifier = target;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart b/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart
index f635044..1b4ce54 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart
@@ -255,11 +255,11 @@
 
     final firstArgument = type.typeArguments.singleOrNull;
     if (firstArgument is! InterfaceType ||
-        firstArgument.element2 != widgetClassElement) {
+        firstArgument.element != widgetClassElement) {
       return false;
     }
 
-    var classElement = type.element2;
+    var classElement = type.element;
     return classElement is ClassElement &&
         Flutter.instance.isExactState(classElement);
   }
@@ -383,7 +383,7 @@
   void visitInstanceCreationExpression(InstanceCreationExpression node) {
     super.visitInstanceCreationExpression(node);
     final type = node.staticType;
-    if (type is! InterfaceType || type.element2 != stateClassElement) {
+    if (type is! InterfaceType || type.element != stateClassElement) {
       return;
     }
     var methodDeclaration = node.thisOrAncestorOfType<MethodDeclaration>();
@@ -402,7 +402,7 @@
     if (type is InterfaceType &&
         node.methodName.name == 'createState' &&
         (FlutterConvertToStatelessWidget._isState(widgetClassElement, type) ||
-            type.element2 == stateClassElement)) {
+            type.element == stateClassElement)) {
       used = true;
     }
   }
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/move_type_arguments_to_class.dart b/pkg/analysis_server/lib/src/services/correction/dart/move_type_arguments_to_class.dart
index a255bf5..a443d0a 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/move_type_arguments_to_class.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/move_type_arguments_to_class.dart
@@ -34,7 +34,7 @@
 
     final type = namedType.typeOrThrow;
     if (type is InterfaceType) {
-      final element = type.element2;
+      final element = type.element;
       if (element.typeParameters.length == typeArguments.arguments.length) {
         await builder.addDartFileEdit(file, (builder) {
           var argumentText = utils.getNodeText(typeArguments);
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart
index d107148..7b68ecf 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart
@@ -154,11 +154,11 @@
             return true;
           }
           if (type is InterfaceType) {
-            if (components[1] == type.element2.name) {
+            if (components[1] == type.element.name) {
               return true;
             }
             for (var supertype in type.allSupertypes) {
-              if (components[1] == supertype.element2.name) {
+              if (components[1] == supertype.element.name) {
                 return true;
               }
             }
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart
index 3abc44d..982d896 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart
@@ -397,7 +397,7 @@
     var targetType = node.prefix.staticType;
     if (targetType is InterfaceType) {
       _addMatcher(
-        components: [node.identifier.name, targetType.element2.name],
+        components: [node.identifier.name, targetType.element.name],
         kinds: const [
           ElementKind.constantKind,
           ElementKind.fieldKind,
@@ -543,7 +543,7 @@
       var type = target.staticType;
       if (type != null) {
         if (type is InterfaceType) {
-          return type.element2.name;
+          return type.element.name;
         } else if (type.isDynamic) {
           // The name is likely to be undefined.
           return target.name;
@@ -554,7 +554,7 @@
     } else if (target != null) {
       var type = target.staticType;
       if (type is InterfaceType) {
-        return type.element2.name;
+        return type.element.name;
       }
       return null;
     }
diff --git a/pkg/analysis_server/lib/src/services/correction/name_suggestion.dart b/pkg/analysis_server/lib/src/services/correction/name_suggestion.dart
index 85c3549..00a24a4 100644
--- a/pkg/analysis_server/lib/src/services/correction/name_suggestion.dart
+++ b/pkg/analysis_server/lib/src/services/correction/name_suggestion.dart
@@ -66,7 +66,7 @@
     } else if (expectedType.isDartCoreString) {
       _addSingleCharacterName(excluded, res, 0x73);
     } else if (expectedType is InterfaceType) {
-      var className = expectedType.element2.name;
+      var className = expectedType.element.name;
       _addAll(excluded, res, getCamelWordCombinations(className));
     }
   }
diff --git a/pkg/analysis_server/lib/src/services/correction/util.dart b/pkg/analysis_server/lib/src/services/correction/util.dart
index afceabc..95a27b8 100644
--- a/pkg/analysis_server/lib/src/services/correction/util.dart
+++ b/pkg/analysis_server/lib/src/services/correction/util.dart
@@ -911,7 +911,7 @@
     if (type is InterfaceType) {
       return _getTypeCodeElementArguments(
         librariesToImport: librariesToImport,
-        element: type.element2,
+        element: type.element,
         isNullable: type.nullabilitySuffix == NullabilitySuffix.question,
         typeArguments: type.typeArguments,
       );
@@ -929,7 +929,7 @@
     }
 
     if (type is TypeParameterType) {
-      var element = type.element2;
+      var element = type.element;
       if (_isTypeParameterVisible(element)) {
         return element.name;
       } else {
diff --git a/pkg/analysis_server/lib/src/services/flutter/class_description.dart b/pkg/analysis_server/lib/src/services/flutter/class_description.dart
index 0bdd780..e3f5643 100644
--- a/pkg/analysis_server/lib/src/services/flutter/class_description.dart
+++ b/pkg/analysis_server/lib/src/services/flutter/class_description.dart
@@ -56,7 +56,7 @@
   /// Return `true` if properties should be created for instances of [type].
   bool hasNestedProperties(DartType type) {
     if (type is InterfaceType) {
-      return _isOptedInClass(type.element2);
+      return _isOptedInClass(type.element);
     }
     return false;
   }
diff --git a/pkg/analysis_server/lib/src/services/flutter/widget_descriptions.dart b/pkg/analysis_server/lib/src/services/flutter/widget_descriptions.dart
index 40b7cba..693c461 100644
--- a/pkg/analysis_server/lib/src/services/flutter/widget_descriptions.dart
+++ b/pkg/analysis_server/lib/src/services/flutter/widget_descriptions.dart
@@ -390,7 +390,7 @@
       var type = parameter.type;
       if (type is InterfaceType) {
         var classDescription = classRegistry.get(
-          type.element2,
+          type.element,
         );
         if (classDescription != null) {
           _addProperties(
@@ -462,7 +462,7 @@
       );
     }
     if (type is InterfaceType) {
-      var classElement = type.element2;
+      var classElement = type.element;
       if (classElement is EnumElement) {
         return protocol.FlutterWidgetPropertyEditor(
           protocol.FlutterWidgetPropertyEditorKind.ENUM,
diff --git a/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart b/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart
index dc9d3f0..1fe0e3e 100644
--- a/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart
+++ b/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart
@@ -305,7 +305,7 @@
 
       // extends
       var supertype = _enclosingClassElement!.supertype;
-      var supertypeElement = supertype?.element2;
+      var supertypeElement = supertype?.element;
       if (supertypeElement != null) {
         var recordSupertypeVName =
             _vNameFromElement(supertypeElement, schema.RECORD_KIND);
@@ -317,7 +317,7 @@
       var interfaces = _enclosingClassElement!.interfaces;
       for (var interface in interfaces) {
         var recordInterfaceVName =
-            _vNameFromElement(interface.element2, schema.RECORD_KIND);
+            _vNameFromElement(interface.element, schema.RECORD_KIND);
         addEdge(
             _enclosingClassVName!, schema.EXTENDS_EDGE, recordInterfaceVName);
       }
@@ -326,7 +326,7 @@
       var mixins = _enclosingClassElement!.mixins;
       for (var mixin in mixins) {
         var recordMixinVName =
-            _vNameFromElement(mixin.element2, schema.RECORD_KIND);
+            _vNameFromElement(mixin.element, schema.RECORD_KIND);
         addEdge(_enclosingClassVName!, schema.EXTENDS_EDGE, recordMixinVName);
       }
 
@@ -383,7 +383,7 @@
       var interfaces = _enclosingClassElement!.interfaces;
       for (var interface in interfaces) {
         var recordInterfaceVName =
-            _vNameFromElement(interface.element2, schema.RECORD_KIND);
+            _vNameFromElement(interface.element, schema.RECORD_KIND);
         addEdge(
             _enclosingClassVName!, schema.EXTENDS_EDGE, recordInterfaceVName);
       }
@@ -392,7 +392,7 @@
       var mixins = _enclosingClassElement!.mixins;
       for (var mixin in mixins) {
         var recordMixinVName =
-            _vNameFromElement(mixin.element2, schema.RECORD_KIND);
+            _vNameFromElement(mixin.element, schema.RECORD_KIND);
         addEdge(_enclosingClassVName!, schema.EXTENDS_EDGE, recordMixinVName);
       }
 
@@ -1024,14 +1024,14 @@
       // Expected SuperExpression.staticType to return the type of the
       // supertype, but it returns the type of the enclosing class (same as
       // ThisExpression), do some additional work to correct assumption:
-      if (thisOrSuperNode is SuperExpression && type.element2 is ClassElement) {
-        var supertype = (type.element2 as ClassElement).supertype;
+      if (thisOrSuperNode is SuperExpression && type.element is ClassElement) {
+        var supertype = (type.element as ClassElement).supertype;
         if (supertype != null) {
           type = supertype;
         }
       }
       // vname
-      var vName = _vNameFromElement(type.element2, schema.RECORD_KIND);
+      var vName = _vNameFromElement(type.element, schema.RECORD_KIND);
 
       // anchor
       var anchorVName = addAnchorEdgesContainingEdge(
@@ -1316,7 +1316,7 @@
         var declaredElement = paramNode.declaredElement!;
         var type = declaredElement.type;
         if (type is InterfaceType) {
-          paramTypeVName = _vNameFromElement(type.element2, schema.TAPP_KIND);
+          paramTypeVName = _vNameFromElement(type.element, schema.TAPP_KIND);
         }
         addEdge(funcTypeVName, schema.PARAM_EDGE, paramTypeVName,
             ordinalIntValue: i++);
@@ -1393,7 +1393,7 @@
     } else if (type.isVoid) {
       return voidBuiltin;
     } else if (type is InterfaceType) {
-      return _vNameFromElement(type.element2, schema.RECORD_KIND);
+      return _vNameFromElement(type.element, schema.RECORD_KIND);
     } else {
       return dynamicBuiltin;
     }
diff --git a/pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart b/pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart
index b106c81..53cf3e3 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart
@@ -803,7 +803,7 @@
       variableType = _getTypeCode(returnTypeObj);
       if (_hasAwait) {
         if (returnTypeObj is InterfaceType &&
-            returnTypeObj.element2 != typeProvider.futureElement) {
+            returnTypeObj.element != typeProvider.futureElement) {
           returnType = _getTypeCode(typeProvider.futureType(returnTypeObj));
         }
       } else {
diff --git a/pkg/analysis_server/lib/src/services/refactoring/legacy/extract_widget.dart b/pkg/analysis_server/lib/src/services/refactoring/legacy/extract_widget.dart
index f1c5758..64a1e80 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/legacy/extract_widget.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/legacy/extract_widget.dart
@@ -667,7 +667,7 @@
     if (enclosingClass != null) {
       final enclosingClasses = this.enclosingClasses ??= <InterfaceElement>[
         enclosingClass,
-        ...enclosingClass.allSupertypes.map((t) => t.element2)
+        ...enclosingClass.allSupertypes.map((t) => t.element)
       ];
       return enclosingClasses.contains(element.enclosingElement);
     }
diff --git a/pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart b/pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart
index ecabaa1..36b44ae 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart
@@ -165,7 +165,7 @@
     var enclosingInterfaceElement = node.enclosingInterfaceElement;
     if (enclosingInterfaceElement != null) {
       var elements = [
-        ...enclosingInterfaceElement.allSupertypes.map((e) => e.element2),
+        ...enclosingInterfaceElement.allSupertypes.map((e) => e.element),
         enclosingInterfaceElement,
       ];
       for (var interfaceElement in elements) {
diff --git a/pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart b/pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart
index e43571d..808e760 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart
@@ -225,7 +225,7 @@
     required Set<InterfaceElement> subClasses,
   }) async {
     var superClasses =
-        interfaceElement.allSupertypes.map((e) => e.element2).toSet();
+        interfaceElement.allSupertypes.map((e) => e.element).toSet();
     // check shadowing in the hierarchy
     var declarations = await searchEngine.searchMemberDeclarations(name);
     for (var declaration in declarations) {
diff --git a/pkg/analysis_server/lib/src/services/search/hierarchy.dart b/pkg/analysis_server/lib/src/services/search/hierarchy.dart
index d99b873..b75ed3e 100644
--- a/pkg/analysis_server/lib/src/services/search/hierarchy.dart
+++ b/pkg/analysis_server/lib/src/services/search/hierarchy.dart
@@ -96,7 +96,7 @@
   if (enclosingElement is InterfaceElement) {
     var name = member.displayName;
     var searchClasses = [
-      ...enclosingElement.allSupertypes.map((e) => e.element2),
+      ...enclosingElement.allSupertypes.map((e) => e.element),
       enclosingElement,
     ];
     for (var superClass in searchClasses) {
@@ -155,7 +155,7 @@
 /// Excludes: constructors and synthetic elements.
 List<Element> getMembers(InterfaceElement clazz) {
   var classElements = [
-    ...clazz.allSupertypes.map((e) => e.element2),
+    ...clazz.allSupertypes.map((e) => e.element),
     clazz,
   ];
   var members = <Element>[];
diff --git a/pkg/analysis_server/lib/src/utilities/flutter.dart b/pkg/analysis_server/lib/src/utilities/flutter.dart
index 625d6c8..fa2700d 100644
--- a/pkg/analysis_server/lib/src/utilities/flutter.dart
+++ b/pkg/analysis_server/lib/src/utilities/flutter.dart
@@ -318,14 +318,14 @@
         return true;
       }
       for (var type in element.allSupertypes) {
-        if (isExactColor(type.element2)) {
+        if (isExactColor(type.element)) {
           return true;
         }
       }
       return false;
     }
 
-    return isColorElement(type.element2);
+    return isColorElement(type.element);
   }
 
   /// Return `true` if the given [type] is the flutter mixin `Diagnosticable`
@@ -344,14 +344,14 @@
         return true;
       }
       for (var type in element.allSupertypes) {
-        if (isExactDiagnosticable(type.element2)) {
+        if (isExactDiagnosticable(type.element)) {
           return true;
         }
       }
       return false;
     }
 
-    return isDiagnosticableElement(type.element2);
+    return isDiagnosticableElement(type.element);
   }
 
   /// Return `true` if the [element] is the Flutter class `Alignment`.
@@ -373,7 +373,7 @@
   /// Return `true` if the [type] is the Flutter type `EdgeInsetsGeometry`.
   bool isExactEdgeInsetsGeometryType(DartType type) {
     return type is InterfaceType &&
-        _isExactWidget(type.element2, 'EdgeInsetsGeometry', _uriEdgeInsets);
+        _isExactWidget(type.element, 'EdgeInsetsGeometry', _uriEdgeInsets);
   }
 
   /// Return `true` if the [node] is creation of `Align`.
@@ -397,13 +397,13 @@
   /// Return `true` if the given [type] is the Flutter class `StatefulWidget`.
   bool isExactlyStatefulWidgetType(DartType? type) {
     return type is InterfaceType &&
-        _isExactWidget(type.element2, _nameStatefulWidget, _uriFramework);
+        _isExactWidget(type.element, _nameStatefulWidget, _uriFramework);
   }
 
   /// Return `true` if the given [type] is the Flutter class `StatelessWidget`.
   bool isExactlyStatelessWidgetType(DartType type) {
     return type is InterfaceType &&
-        _isExactWidget(type.element2, _nameStatelessWidget, _uriFramework);
+        _isExactWidget(type.element, _nameStatelessWidget, _uriFramework);
   }
 
   /// Return `true` if the given [element] is the Flutter class `State`.
@@ -414,43 +414,43 @@
   /// Return `true` if the given [type] is the Flutter class `Align`.
   bool isExactWidgetTypeAlign(DartType? type) {
     return type is InterfaceType &&
-        _isExactWidget(type.element2, _nameAlign, _uriBasic);
+        _isExactWidget(type.element, _nameAlign, _uriBasic);
   }
 
   /// Return `true` if the given [type] is the Flutter class `StreamBuilder`.
   bool isExactWidgetTypeBuilder(DartType type) {
     return type is InterfaceType &&
-        _isExactWidget(type.element2, _nameBuilder, _uriBasic);
+        _isExactWidget(type.element, _nameBuilder, _uriBasic);
   }
 
   /// Return `true` if the given [type] is the Flutter class `Center`.
   bool isExactWidgetTypeCenter(DartType type) {
     return type is InterfaceType &&
-        _isExactWidget(type.element2, _nameCenter, _uriBasic);
+        _isExactWidget(type.element, _nameCenter, _uriBasic);
   }
 
   /// Return `true` if the given [type] is the Flutter class `Container`.
   bool isExactWidgetTypeContainer(DartType? type) {
     return type is InterfaceType &&
-        _isExactWidget(type.element2, _nameContainer, _uriContainer);
+        _isExactWidget(type.element, _nameContainer, _uriContainer);
   }
 
   /// Return `true` if the given [type] is the Flutter class `Padding`.
   bool isExactWidgetTypePadding(DartType? type) {
     return type is InterfaceType &&
-        _isExactWidget(type.element2, _namePadding, _uriBasic);
+        _isExactWidget(type.element, _namePadding, _uriBasic);
   }
 
   /// Return `true` if the given [type] is the Flutter class `SizedBox`.
   bool isExactWidgetTypeSizedBox(DartType type) {
     return type is InterfaceType &&
-        _isExactWidget(type.element2, _nameSizedBox, _uriBasic);
+        _isExactWidget(type.element, _nameSizedBox, _uriBasic);
   }
 
   /// Return `true` if the given [type] is the Flutter class `StreamBuilder`.
   bool isExactWidgetTypeStreamBuilder(DartType type) {
     return type is InterfaceType &&
-        _isExactWidget(type.element2, _nameStreamBuilder, _uriAsync);
+        _isExactWidget(type.element, _nameStreamBuilder, _uriAsync);
   }
 
   /// Return `true` if the given [type] is the Flutter class `Widget`, or its
@@ -476,14 +476,14 @@
         return true;
       }
       for (var type in element.allSupertypes) {
-        if (isExactMatrix4(type.element2)) {
+        if (isExactMatrix4(type.element)) {
           return true;
         }
       }
       return false;
     }
 
-    return isMatrix4Element(type.element2);
+    return isMatrix4Element(type.element);
   }
 
   /// Return `true` if the given [element] has the Flutter class `State` as
@@ -511,7 +511,7 @@
       return true;
     }
     for (var type in element.allSupertypes) {
-      if (_isExactWidget(type.element2, _nameWidget, _uriFramework)) {
+      if (_isExactWidget(type.element, _nameWidget, _uriFramework)) {
         return true;
       }
     }
@@ -549,7 +549,7 @@
   /// Return `true` if the given [type] is the Flutter class `Widget`, or its
   /// subtype.
   bool isWidgetType(DartType? type) {
-    return type is InterfaceType && isWidget(type.element2);
+    return type is InterfaceType && isWidget(type.element);
   }
 
   /// Return `true` if the given [element] has a supertype with the
@@ -560,8 +560,8 @@
       return false;
     }
     for (var type in element.allSupertypes) {
-      if (type.element2.name == requiredName) {
-        var uri = type.element2.source.uri;
+      if (type.element.name == requiredName) {
+        var uri = type.element.source.uri;
         if (uri == requiredUri) {
           return true;
         }
diff --git a/pkg/analysis_server/tool/bulk_fix/parse_utils.dart b/pkg/analysis_server/tool/bulk_fix/parse_utils.dart
index d0264a0..211de59 100644
--- a/pkg/analysis_server/tool/bulk_fix/parse_utils.dart
+++ b/pkg/analysis_server/tool/bulk_fix/parse_utils.dart
@@ -32,7 +32,7 @@
         var classElement = classDecl.declaredElement;
         if (classElement != null &&
             classElement.allSupertypes.any(
-                (element) => element.element2.name == 'CorrectionProducer')) {
+                (element) => element.element.name == 'CorrectionProducer')) {
           var correctionName = classDecl.name.lexeme;
 
           for (var method in classDecl.members.whereType<MethodDeclaration>()) {
diff --git a/pkg/analysis_server/tool/code_completion/relevance_metrics.dart b/pkg/analysis_server/tool/code_completion/relevance_metrics.dart
index 71dc018..7c1b1ba 100644
--- a/pkg/analysis_server/tool/code_completion/relevance_metrics.dart
+++ b/pkg/analysis_server/tool/code_completion/relevance_metrics.dart
@@ -1570,7 +1570,7 @@
       return;
     }
     if (targetType is InterfaceType) {
-      var targetClass = targetType.element2;
+      var targetClass = targetType.element;
       var extension = member.thisOrAncestorOfType<ExtensionElement>();
       if (extension != null) {
         _recordDistance('member (extension)', 0);
@@ -1592,12 +1592,12 @@
             }
             for (var mixin in currentClass.mixins.reversed) {
               depth++;
-              if (mixin.element2 == memberClass) {
+              if (mixin.element == memberClass) {
                 return depth;
               }
             }
             depth++;
-            currentClass = currentClass.supertype?.element2;
+            currentClass = currentClass.supertype?.element;
           }
           return -1;
         }
@@ -1609,7 +1609,7 @@
           InterfaceElement? currentClass = targetClass;
           while (currentClass != null) {
             depth += currentClass.mixins.length + 1;
-            currentClass = currentClass.supertype?.element2;
+            currentClass = currentClass.supertype?.element;
           }
           return depth;
         }
@@ -1816,20 +1816,20 @@
           argumentType is InterfaceType &&
           parameterType is InterfaceType) {
         int distance;
-        if (parameterType.element2 == typeProvider.futureOrElement) {
+        if (parameterType.element == typeProvider.futureOrElement) {
           var typeArgument = parameterType.typeArguments[0];
           distance = featureComputer.inheritanceDistance(
-              argumentType.element2, typeProvider.futureElement);
+              argumentType.element, typeProvider.futureElement);
           if (typeArgument is InterfaceType) {
             var argDistance = featureComputer.inheritanceDistance(
-                argumentType.element2, typeArgument.element2);
+                argumentType.element, typeArgument.element);
             if (distance < 0 || (argDistance >= 0 && argDistance < distance)) {
               distance = argDistance;
             }
           }
         } else {
           distance = featureComputer.inheritanceDistance(
-              argumentType.element2, parameterType.element2);
+              argumentType.element, parameterType.element);
         }
         data.recordDistance('Subtype of context type ($descriptor)', distance);
         data.recordDistance('Subtype of context type (all)', distance);
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index d025623..b9d9772 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -3,6 +3,7 @@
 * Deprecated `Directive.element2`, use `element` instead.
 * Deprecated `CatchClause.exceptionParameter2`, use `exceptionParameter` instead.
 * Deprecated `CatchClause.stackTraceParameter2`, use `stackTraceParameter` instead.
+* Deprecated `DartType.element2`, use `element` instead.
 
 ## 5.1.0
 * Deprecated `AstNode.name2`, use `name` instead.
diff --git a/pkg/analyzer/lib/dart/element/type.dart b/pkg/analyzer/lib/dart/element/type.dart
index 23038b5..0b6e1fb 100644
--- a/pkg/analyzer/lib/dart/element/type.dart
+++ b/pkg/analyzer/lib/dart/element/type.dart
@@ -35,6 +35,11 @@
 
   /// Return the element representing the declaration of this type, or `null`
   /// if the type is not associated with an element.
+  Element? get element;
+
+  /// Return the element representing the declaration of this type, or `null`
+  /// if the type is not associated with an element.
+  @Deprecated('Use element instead')
   Element? get element2;
 
   /// Return `true` if this type represents the bottom type.
@@ -196,6 +201,10 @@
 /// Clients may not extend, implement or mix-in this class.
 abstract class FunctionType implements DartType {
   @override
+  Null get element;
+
+  @Deprecated('Use element instead')
+  @override
   Null get element2;
 
   /// Return a map from the names of named parameters to the types of the named
@@ -276,6 +285,10 @@
   List<ConstructorElement> get constructors;
 
   @override
+  InterfaceElement get element;
+
+  @Deprecated('Use element instead')
+  @override
   InterfaceElement get element2;
 
   /// Return a list containing all of the interfaces that are implemented by
@@ -419,6 +432,10 @@
 @experimental
 abstract class RecordType implements DartType {
   @override
+  Null get element;
+
+  @Deprecated('Use element instead')
+  @override
   Null get element2;
 
   /// The named fields (might be empty).
@@ -468,6 +485,10 @@
   ElementLocation get definition;
 
   @override
+  TypeParameterElement get element;
+
+  @Deprecated('Use element instead')
+  @override
   TypeParameterElement get element2;
 }
 
@@ -475,5 +496,9 @@
 /// expression is meaningless, and intended to be discarded.
 abstract class VoidType implements DartType {
   @override
+  Null get element;
+
+  @Deprecated('Use element instead')
+  @override
   Null get element2;
 }
diff --git a/pkg/analyzer/lib/error/listener.dart b/pkg/analyzer/lib/error/listener.dart
index 79ed12f..acc1838 100644
--- a/pkg/analyzer/lib/error/listener.dart
+++ b/pkg/analyzer/lib/error/listener.dart
@@ -299,7 +299,7 @@
             addElementsFrom(parameter.type);
           }
         } else if (type is InterfaceType) {
-          if (elements.add(type.element2)) {
+          if (elements.add(type.element)) {
             for (DartType typeArgument in type.typeArguments) {
               addElementsFrom(typeArgument);
             }
diff --git a/pkg/analyzer/lib/src/dart/analysis/index.dart b/pkg/analyzer/lib/src/dart/analysis/index.dart
index 5716fd1..087743c 100644
--- a/pkg/analyzer/lib/src/dart/analysis/index.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/index.dart
@@ -563,7 +563,7 @@
     _addSubtypeForClassDeclaration(node);
     var declaredElement = node.declaredElement!;
     if (node.extendsClause == null) {
-      final objectElement = declaredElement.supertype?.element2;
+      final objectElement = declaredElement.supertype?.element;
       recordRelationOffset(objectElement, IndexRelationKind.IS_EXTENDED_BY,
           node.name.offset, 0, true);
     }
@@ -1034,21 +1034,20 @@
       var superType = ancestor.supertype;
       if (superType != null) {
         _recordIsAncestorOf(
-            descendant, superType.element2, true, visitedElements);
+            descendant, superType.element, true, visitedElements);
       }
     }
     for (InterfaceType mixinType in ancestor.mixins) {
-      _recordIsAncestorOf(
-          descendant, mixinType.element2, true, visitedElements);
+      _recordIsAncestorOf(descendant, mixinType.element, true, visitedElements);
     }
     if (ancestor is MixinElement) {
       for (InterfaceType type in ancestor.superclassConstraints) {
-        _recordIsAncestorOf(descendant, type.element2, true, visitedElements);
+        _recordIsAncestorOf(descendant, type.element, true, visitedElements);
       }
     }
     for (InterfaceType implementedType in ancestor.interfaces) {
       _recordIsAncestorOf(
-          descendant, implementedType.element2, true, visitedElements);
+          descendant, implementedType.element, true, visitedElements);
     }
   }
 }
diff --git a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
index b045a60..cdb6705 100644
--- a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
+++ b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
@@ -371,7 +371,7 @@
     }
     // prepare ClassElement
     if (type is InterfaceType) {
-      var element = type.element2;
+      var element = type.element;
       // lookup for ==
       var method = element.lookUpConcreteMethod("==", _currentLibrary);
       if (method == null ||
diff --git a/pkg/analyzer/lib/src/dart/constant/evaluation.dart b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
index 2d40948..b22a50f 100644
--- a/pkg/analyzer/lib/src/dart/constant/evaluation.dart
+++ b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
@@ -269,7 +269,7 @@
           var superclass = constant.returnType.superclass;
           if (superclass != null && !superclass.isDartCoreObject) {
             var unnamedConstructor =
-                superclass.element2.unnamedConstructor?.declaration;
+                superclass.element.unnamedConstructor?.declaration;
             if (unnamedConstructor != null && unnamedConstructor.isConst) {
               callback(unnamedConstructor);
             }
@@ -747,7 +747,7 @@
       if (typeArgumentTypes != null) {
         var instantiatedTypeArgumentTypes = typeArgumentTypes.map((type) {
           if (type is TypeParameterType) {
-            return _lexicalTypeEnvironment?[type.element2] ?? type;
+            return _lexicalTypeEnvironment?[type.element] ?? type;
           } else {
             return type;
           }
@@ -1470,7 +1470,7 @@
       DartObjectImpl targetResult, SimpleIdentifier identifier) {
     final targetType = targetResult.type;
     if (!(targetType is InterfaceType &&
-        targetType.element2 == _typeProvider.stringElement)) {
+        targetType.element == _typeProvider.stringElement)) {
       return false;
     }
     return identifier.name == 'length' &&
diff --git a/pkg/analyzer/lib/src/dart/element/class_hierarchy.dart b/pkg/analyzer/lib/src/dart/element/class_hierarchy.dart
index f666d98..18764b6 100644
--- a/pkg/analyzer/lib/src/dart/element/class_hierarchy.dart
+++ b/pkg/analyzer/lib/src/dart/element/class_hierarchy.dart
@@ -55,7 +55,7 @@
       interfacesMerger.add(type);
 
       var substitution = Substitution.fromInterfaceType(type);
-      var rawInterfaces = implementedInterfaces(type.element2);
+      var rawInterfaces = implementedInterfaces(type.element);
       for (var rawInterface in rawInterfaces) {
         var newInterface =
             substitution.substituteType(rawInterface) as InterfaceType;
@@ -125,7 +125,7 @@
   }
 
   void add(InterfaceType type) {
-    var element = type.element2;
+    var element = type.element;
     var classResult = _map[element];
     if (classResult == null) {
       classResult = _ClassInterfaceType(_typeSystem);
diff --git a/pkg/analyzer/lib/src/dart/element/display_string_builder.dart b/pkg/analyzer/lib/src/dart/element/display_string_builder.dart
index b3c4b83..26bff4b 100644
--- a/pkg/analyzer/lib/src/dart/element/display_string_builder.dart
+++ b/pkg/analyzer/lib/src/dart/element/display_string_builder.dart
@@ -144,7 +144,7 @@
   }
 
   void writeInterfaceType(InterfaceType type) {
-    _write(type.element2.name);
+    _write(type.element.name);
     _writeTypeArguments(type.typeArguments);
     _writeNullability(type.nullabilitySuffix);
   }
@@ -242,14 +242,14 @@
       if (hasSuffix) {
         _write('(');
       }
-      _write(type.element2.displayName);
+      _write(type.element.displayName);
       _write(' & ');
       _writeType(promotedBound);
       if (hasSuffix) {
         _write(')');
       }
     } else {
-      _write(type.element2.displayName);
+      _write(type.element.displayName);
     }
     _writeNullability(type.nullabilitySuffix);
   }
@@ -450,7 +450,7 @@
 
     void collectTypeParameters(DartType? type) {
       if (type is TypeParameterType) {
-        referencedTypeParameters.add(type.element2);
+        referencedTypeParameters.add(type.element);
       } else if (type is FunctionType) {
         for (var typeParameter in type.typeFormals) {
           collectTypeParameters(typeParameter.bound);
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index f5fbe97..b7ca741 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -270,7 +270,7 @@
     required NullabilitySuffix nullabilitySuffix,
   }) {
     return InterfaceTypeImpl(
-      element2: this,
+      element: this,
       typeArguments: typeArguments,
       nullabilitySuffix: nullabilitySuffix,
     );
@@ -415,12 +415,12 @@
         yield getter;
       }
       for (InterfaceType mixin in classElement.mixins.reversed) {
-        getter = mixin.element2.getGetter(getterName);
+        getter = mixin.element.getGetter(getterName);
         if (getter != null) {
           yield getter;
         }
       }
-      classElement = classElement.supertype?.element2;
+      classElement = classElement.supertype?.element;
     }
   }
 
@@ -444,12 +444,12 @@
         yield method;
       }
       for (InterfaceType mixin in classElement.mixins.reversed) {
-        method = mixin.element2.getMethod(methodName);
+        method = mixin.element.getMethod(methodName);
         if (method != null) {
           yield method;
         }
       }
-      classElement = classElement.supertype?.element2;
+      classElement = classElement.supertype?.element;
     }
   }
 
@@ -474,12 +474,12 @@
         yield setter;
       }
       for (InterfaceType mixin in classElement.mixins.reversed) {
-        setter = mixin.element2.getSetter(setterName);
+        setter = mixin.element.getSetter(setterName);
         if (setter != null) {
           yield setter;
         }
       }
-      classElement = classElement.supertype?.element2;
+      classElement = classElement.supertype?.element;
     }
   }
 
@@ -633,12 +633,12 @@
         }
         // check mixins
         for (InterfaceType mixinType in currentElement.mixins) {
-          classesToVisit.add(mixinType.element2);
+          classesToVisit.add(mixinType.element);
         }
         // check super
         final supertype = currentElement.supertype;
         if (supertype != null) {
-          classesToVisit.add(supertype.element2);
+          classesToVisit.add(supertype.element);
         }
       }
     }
@@ -708,7 +708,7 @@
     // No subclasses in the library.
     for (var unit in library.units) {
       for (var class_ in unit.classes) {
-        if (class_.supertype?.element2 == this) {
+        if (class_.supertype?.element == this) {
           return false;
         }
       }
@@ -788,7 +788,7 @@
       return <ConstructorElement>[];
     }
 
-    var superElement = supertype!.element2 as ClassElementImpl;
+    var superElement = supertype!.element as ClassElementImpl;
 
     // First get the list of constructors of the superclass which need to be
     // forwarded to this class.
@@ -834,7 +834,7 @@
         Substitution.fromPairs(superClassParameters, argumentTypes);
 
     bool typeHasInstanceVariables(InterfaceType type) =>
-        type.element2.fields.any((e) => !e.isSynthetic);
+        type.element.fields.any((e) => !e.isSynthetic);
 
     // Now create an implicit constructor for every constructor found above,
     // substituting type parameters as appropriate.
@@ -1816,7 +1816,7 @@
 /// The synthetic element representing the declaration of the type `dynamic`.
 class DynamicElementImpl extends ElementImpl implements TypeDefiningElement {
   /// Return the unique instance of this class.
-  static DynamicElementImpl get instance => DynamicTypeImpl.instance.element2;
+  static DynamicElementImpl get instance => DynamicTypeImpl.instance.element;
 
   /// Initialize a newly created instance of this class. Instances of this class
   /// should <b>not</b> be created except as part of creating the type
@@ -6027,7 +6027,7 @@
     if (aliasedType_ is! InterfaceType) {
       return false;
     }
-    var aliasedClass = aliasedType_.element2;
+    var aliasedClass = aliasedType_.element;
     var typeArguments = aliasedType_.typeArguments;
     var typeParameterCount = typeParameters.length;
     if (typeParameterCount != aliasedClass.typeParameters.length) {
@@ -6043,7 +6043,7 @@
       }
       final typeArgument = typeArguments[i];
       if (typeArgument is TypeParameterType &&
-          typeParameters[i] != typeArgument.element2) {
+          typeParameters[i] != typeArgument.element) {
         return false;
       }
     }
@@ -6153,7 +6153,7 @@
       );
     } else if (type is InterfaceType) {
       return InterfaceTypeImpl(
-        element2: type.element2,
+        element: type.element,
         typeArguments: type.typeArguments,
         nullabilitySuffix: resultNullability,
         alias: InstantiatedTypeAliasElementImpl(
@@ -6173,7 +6173,7 @@
       );
     } else if (type is TypeParameterType) {
       return TypeParameterTypeImpl(
-        element2: type.element2,
+        element: type.element,
         nullabilitySuffix: resultNullability,
         alias: InstantiatedTypeAliasElementImpl(
           element: this,
@@ -6292,7 +6292,7 @@
     required NullabilitySuffix nullabilitySuffix,
   }) {
     return TypeParameterTypeImpl(
-      element2: this,
+      element: this,
       nullabilitySuffix: nullabilitySuffix,
     );
   }
diff --git a/pkg/analyzer/lib/src/dart/element/extensions.dart b/pkg/analyzer/lib/src/dart/element/extensions.dart
index 073aae7..09d9093 100644
--- a/pkg/analyzer/lib/src/dart/element/extensions.dart
+++ b/pkg/analyzer/lib/src/dart/element/extensions.dart
@@ -22,7 +22,7 @@
       if (element.isGetter) {
         var type = element.returnType;
         if (type is InterfaceType) {
-          interfaceElement = type.element2;
+          interfaceElement = type.element;
         }
       }
     } else if (element is ConstructorElement) {
@@ -42,7 +42,7 @@
           // may have been compiled with a different version of pkg:meta.
           var index = kindObject.getField('index')!.toIntValue()!;
           var targetKindClass =
-              (kindObject.type as InterfaceType).element2 as EnumElementImpl;
+              (kindObject.type as InterfaceType).element as EnumElementImpl;
           // Instead, map constants to their TargetKind by comparing getter
           // names.
           var getter = targetKindClass.constants[index];
diff --git a/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart b/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
index 84ba313..ec047ee 100644
--- a/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
+++ b/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
@@ -564,7 +564,7 @@
       return;
     }
     if (errorNode is ConstructorName &&
-        !(errorNode.type.type as InterfaceType).element2.hasOptionalTypeArgs) {
+        !(errorNode.type.type as InterfaceType).element.hasOptionalTypeArgs) {
       String constructorName = errorNode.name == null
           ? errorNode.type.name.name
           : '${errorNode.type}.${errorNode.name}';
@@ -592,7 +592,7 @@
         if (element is VariableElement) {
           // For variable elements, we check their type and possible alias type.
           var type = element.type;
-          final typeElement = type is InterfaceType ? type.element2 : null;
+          final typeElement = type is InterfaceType ? type.element : null;
           if (typeElement != null && typeElement.hasOptionalTypeArgs) {
             return;
           }
diff --git a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
index 12f7996..a96c8f4 100644
--- a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
+++ b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
@@ -115,7 +115,7 @@
 
   /// Return the result of [getInherited2] with [type] substitution.
   ExecutableElement? getInherited(InterfaceType type, Name name) {
-    var rawElement = getInherited2(type.element2, name);
+    var rawElement = getInherited2(type.element, name);
     if (rawElement == null) {
       return null;
     }
@@ -143,7 +143,7 @@
     var result = <Name, ExecutableElement>{};
 
     var substitution = Substitution.fromInterfaceType(type);
-    var rawMap = getInheritedConcreteMap2(type.element2);
+    var rawMap = getInheritedConcreteMap2(type.element);
     for (var rawEntry in rawMap.entries) {
       result[rawEntry.key] = ExecutableMember.from2(
         rawEntry.value,
@@ -171,7 +171,7 @@
     var result = <Name, ExecutableElement>{};
 
     var substitution = Substitution.fromInterfaceType(type);
-    var rawMap = getInheritedMap2(type.element2);
+    var rawMap = getInheritedMap2(type.element);
     for (var rawEntry in rawMap.entries) {
       result[rawEntry.key] = ExecutableMember.from2(
         rawEntry.value,
@@ -237,7 +237,7 @@
     bool forSuper = false,
   }) {
     var rawElement = getMember2(
-      type.element2,
+      type.element,
       name,
       concrete: concrete,
       forMixinIndex: forMixinIndex,
@@ -293,7 +293,7 @@
   /// if no members would be overridden.
   @Deprecated('Use getOverridden2')
   List<ExecutableElement>? getOverridden(InterfaceType type, Name name) {
-    return getOverridden2(type.element2, name);
+    return getOverridden2(type.element, name);
   }
 
   /// Return all members of mixins, superclasses, and interfaces that a member
@@ -459,7 +459,7 @@
     Interface? superTypeInterface;
     if (superType != null) {
       var substitution = Substitution.fromInterfaceType(superType);
-      superTypeInterface = getInterface(superType.element2);
+      superTypeInterface = getInterface(superType.element);
       _addCandidates(
         namedCandidates: namedCandidates,
         substitution: substitution,
@@ -485,7 +485,7 @@
     // interfaces. Consider using `Map<Name, ExecutableElement>` here.
     var mixinsConflicts = <List<Conflict>>[];
     for (var mixin in element.mixins) {
-      var mixinElement = mixin.element2;
+      var mixinElement = mixin.element;
       var substitution = Substitution.fromInterfaceType(mixin);
       var mixinInterface = getInterface(mixinElement);
       // `class X extends S with M1, M2 {}` is semantically a sequence of:
@@ -576,7 +576,7 @@
       _addCandidates(
         namedCandidates: namedCandidates,
         substitution: Substitution.fromInterfaceType(interface),
-        interface: getInterface(interface.element2),
+        interface: getInterface(interface.element),
         isNonNullableByDefault: isNonNullableByDefault,
       );
     }
@@ -653,7 +653,7 @@
     var superCandidates = <Name, List<ExecutableElement>>{};
     for (var constraint in element.superclassConstraints) {
       var substitution = Substitution.fromInterfaceType(constraint);
-      var interfaceObj = getInterface(constraint.element2);
+      var interfaceObj = getInterface(constraint.element);
       _addCandidates(
         namedCandidates: superCandidates,
         substitution: substitution,
@@ -677,7 +677,7 @@
       _addCandidates(
         namedCandidates: interfaceCandidates,
         substitution: Substitution.fromInterfaceType(interface),
-        interface: getInterface(interface.element2),
+        interface: getInterface(interface.element),
         isNonNullableByDefault: isNonNullableByDefault,
       );
     }
diff --git a/pkg/analyzer/lib/src/dart/element/least_greatest_closure.dart b/pkg/analyzer/lib/src/dart/element/least_greatest_closure.dart
index 6e6f691..d96fd08 100644
--- a/pkg/analyzer/lib/src/dart/element/least_greatest_closure.dart
+++ b/pkg/analyzer/lib/src/dart/element/least_greatest_closure.dart
@@ -82,7 +82,7 @@
 
   @override
   DartType? visitTypeParameterType(TypeParameterType type) {
-    if (eliminationTargets.contains(type.element2)) {
+    if (eliminationTargets.contains(type.element)) {
       var replacement = _typeParameterReplacement as TypeImpl;
       return replacement.withNullability(
         uniteNullabilities(
diff --git a/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart b/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart
index 11caa4d..16f5abc 100644
--- a/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart
+++ b/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart
@@ -37,7 +37,7 @@
   /// Return the [InstantiatedClass] that corresponds to the [type] - with the
   /// same element and type arguments, ignoring its nullability suffix.
   factory InstantiatedClass.of(InterfaceType type) {
-    return InstantiatedClass(type.element2, type.typeArguments);
+    return InstantiatedClass(type.element, type.typeArguments);
   }
 
   @override
@@ -133,7 +133,7 @@
 
   InterfaceTypeImpl withNullability(NullabilitySuffix nullability) {
     return InterfaceTypeImpl(
-      element2: element,
+      element: element,
       typeArguments: arguments,
       nullabilitySuffix: nullability,
     );
@@ -197,10 +197,10 @@
       return type1.withNullability(nullability);
     }
 
-    if (type1.element2 == type2.element2) {
+    if (type1.element == type2.element) {
       var args1 = type1.typeArguments;
       var args2 = type2.typeArguments;
-      var params = type1.element2.typeParameters;
+      var params = type1.element.typeParameters;
       assert(args1.length == args2.length);
       assert(args1.length == params.length);
 
@@ -233,7 +233,7 @@
       }
 
       return InterfaceTypeImpl(
-        element2: type1.element2,
+        element: type1.element,
         typeArguments: args,
         nullabilitySuffix: nullability,
       );
@@ -362,7 +362,7 @@
       if (element is MixinElement) {
         for (InterfaceType interface in element.superclassConstraints) {
           var pathLength = _computeLongestInheritancePathToObject(
-              interface.element2, visitedElements);
+              interface.element, visitedElements);
           longestPath = max(longestPath, 1 + pathLength);
         }
       }
@@ -371,7 +371,7 @@
       // method and keeping track of the longest path to return
       for (InterfaceType interface in element.interfaces) {
         var pathLength = _computeLongestInheritancePathToObject(
-            interface.element2, visitedElements);
+            interface.element, visitedElements);
         longestPath = max(longestPath, 1 + pathLength);
       }
 
@@ -385,14 +385,14 @@
       }
 
       var superLength = _computeLongestInheritancePathToObject(
-          supertype.element2, visitedElements);
+          supertype.element, visitedElements);
 
       var mixins = element.mixins;
       for (var i = 0; i < mixins.length; i++) {
         // class _X&S&M extends S implements M {}
         // So, we choose the maximum length from S and M.
         var mixinLength = _computeLongestInheritancePathToObject(
-          mixins[i].element2,
+          mixins[i].element,
           visitedElements,
         );
         superLength = max(superLength, mixinLength);
@@ -459,7 +459,7 @@
   LeastUpperBoundHelper(this._typeSystem);
 
   InterfaceType get _interfaceTypeFunctionNone {
-    return _typeSystem.typeProvider.functionType.element2.instantiate(
+    return _typeSystem.typeProvider.functionType.element.instantiate(
       typeArguments: const [],
       nullabilitySuffix: NullabilitySuffix.none,
     );
@@ -658,7 +658,7 @@
       // otherwise UP(B1a, T2)
       //   where B1a is the greatest closure of B1 with respect to X1
       var bound = _typeParameterBound(T1);
-      var closure = _typeSystem.greatestClosure(bound, [T1.element2]);
+      var closure = _typeSystem.greatestClosure(bound, [T1.element]);
       return getLeastUpperBound(closure, T2);
     }
 
@@ -677,7 +677,7 @@
       // otherwise UP(T1, B2a)
       //   where B2a is the greatest closure of B2 with respect to X2
       var bound = _typeParameterBound(T2);
-      var closure = _typeSystem.greatestClosure(bound, [T2.element2]);
+      var closure = _typeSystem.greatestClosure(bound, [T2.element]);
       return getLeastUpperBound(T1, closure);
     }
 
@@ -968,7 +968,7 @@
 
   /// Return the promoted or declared bound of the type parameter.
   DartType _typeParameterBound(TypeParameterTypeImpl type) {
-    var bound = type.promotedBound ?? type.element2.bound;
+    var bound = type.promotedBound ?? type.element.bound;
     if (bound != null) {
       return bound;
     }
diff --git a/pkg/analyzer/lib/src/dart/element/normalize.dart b/pkg/analyzer/lib/src/dart/element/normalize.dart
index ed65d5f..a556a96 100644
--- a/pkg/analyzer/lib/src/dart/element/normalize.dart
+++ b/pkg/analyzer/lib/src/dart/element/normalize.dart
@@ -139,7 +139,7 @@
 
     // NORM(C<T0, ..., Tn>) = C<R0, ..., Rn> where Ri is NORM(Ti)
     if (T is InterfaceType) {
-      return T.element2.instantiate(
+      return T.element.instantiate(
         typeArguments: T.typeArguments.map(_normalize).toList(),
         nullabilitySuffix: NullabilitySuffix.none,
       );
@@ -253,7 +253,7 @@
   /// NORM(X & T)
   /// NORM(X extends T)
   DartType _typeParameterType(TypeParameterTypeImpl T) {
-    var element = T.element2;
+    var element = T.element;
 
     // NORM(X & T)
     var promotedBound = T.promotedBound;
@@ -304,7 +304,7 @@
     // * if S is X then X
     if (S is TypeParameterType &&
         S.nullabilitySuffix == NullabilitySuffix.none &&
-        S.element2 == X.declaration) {
+        S.element == X.declaration) {
       return X.declaration.instantiate(
         nullabilitySuffix: NullabilitySuffix.none,
       );
@@ -326,7 +326,7 @@
 
     // * else X & S
     return TypeParameterTypeImpl(
-      element2: X.declaration,
+      element: X.declaration,
       nullabilitySuffix: NullabilitySuffix.none,
       promotedBound: S,
     );
diff --git a/pkg/analyzer/lib/src/dart/element/replace_top_bottom_visitor.dart b/pkg/analyzer/lib/src/dart/element/replace_top_bottom_visitor.dart
index 03cf14f..2db9a85 100644
--- a/pkg/analyzer/lib/src/dart/element/replace_top_bottom_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/element/replace_top_bottom_visitor.dart
@@ -113,7 +113,7 @@
   }
 
   DartType _interfaceType(InterfaceType type, Variance variance) {
-    var typeParameters = type.element2.typeParameters;
+    var typeParameters = type.element.typeParameters;
     if (typeParameters.isEmpty) {
       return type;
     }
@@ -128,7 +128,7 @@
     }
 
     return InterfaceTypeImpl(
-      element2: type.element2,
+      element: type.element,
       nullabilitySuffix: type.nullabilitySuffix,
       typeArguments: newTypeArguments,
     );
diff --git a/pkg/analyzer/lib/src/dart/element/replacement_visitor.dart b/pkg/analyzer/lib/src/dart/element/replacement_visitor.dart
index 3e68fea..1e6ea1b 100644
--- a/pkg/analyzer/lib/src/dart/element/replacement_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/element/replacement_visitor.dart
@@ -86,7 +86,7 @@
     }
 
     return InterfaceTypeImpl(
-      element2: type.element2,
+      element: type.element,
       typeArguments: newTypeArguments ?? type.typeArguments,
       nullabilitySuffix: newNullability ?? type.nullabilitySuffix,
       alias: newAlias ?? type.alias,
@@ -105,7 +105,7 @@
     return NamedTypeBuilder(
       type.linker,
       type.typeSystem,
-      type.element2,
+      type.element,
       newTypeArguments ?? type.arguments,
       newNullability ?? type.nullabilitySuffix,
     );
@@ -133,7 +133,7 @@
 
     var promotedBound = (type as TypeParameterTypeImpl).promotedBound;
     return TypeParameterTypeImpl(
-      element2: type.element2,
+      element: type.element,
       nullabilitySuffix: newNullability ?? type.nullabilitySuffix,
       promotedBound: newPromotedBound ?? promotedBound,
       alias: type.alias,
@@ -149,7 +149,7 @@
     }
 
     return TypeParameterTypeImpl(
-      element2: type.element2,
+      element: type.element,
       nullabilitySuffix: newNullability,
       alias: type.alias,
     );
@@ -373,7 +373,7 @@
     }
 
     var newTypeArguments = _typeArguments(
-      type.element2.typeParameters,
+      type.element.typeParameters,
       type.typeArguments,
     );
 
@@ -390,7 +390,7 @@
     var newNullability = visitNullability(type);
 
     var parameters = const <TypeParameterElement>[];
-    var element = type.element2;
+    var element = type.element;
     if (element is InterfaceElement) {
       parameters = element.typeParameters;
     } else if (element is TypeAliasElement) {
diff --git a/pkg/analyzer/lib/src/dart/element/runtime_type_equality.dart b/pkg/analyzer/lib/src/dart/element/runtime_type_equality.dart
index 3f67085..924e8d1 100644
--- a/pkg/analyzer/lib/src/dart/element/runtime_type_equality.dart
+++ b/pkg/analyzer/lib/src/dart/element/runtime_type_equality.dart
@@ -88,7 +88,7 @@
   @override
   bool visitInterfaceType(InterfaceType T1, DartType T2) {
     if (T2 is InterfaceType &&
-        T1.element2 == T2.element2 &&
+        T1.element == T2.element &&
         _compatibleNullability(T1, T2)) {
       var T1_typeArguments = T1.typeArguments;
       var T2_typeArguments = T2.typeArguments;
@@ -162,7 +162,7 @@
   bool visitTypeParameterType(TypeParameterType T1, DartType T2) {
     return T2 is TypeParameterType &&
         _compatibleNullability(T1, T2) &&
-        T1.element2 == T2.element2;
+        T1.element == T2.element;
   }
 
   @override
diff --git a/pkg/analyzer/lib/src/dart/element/subtype.dart b/pkg/analyzer/lib/src/dart/element/subtype.dart
index aa8e43b..74f2a96 100644
--- a/pkg/analyzer/lib/src/dart/element/subtype.dart
+++ b/pkg/analyzer/lib/src/dart/element/subtype.dart
@@ -83,7 +83,7 @@
           T0 is TypeParameterTypeImpl) {
         var S = T0.promotedBound;
         if (S == null) {
-          var B = T0.element2.bound ?? _objectQuestion;
+          var B = T0.element.bound ?? _objectQuestion;
           return isSubtypeOf(B, _objectNone);
         } else {
           return isSubtypeOf(S, _objectNone);
@@ -185,7 +185,7 @@
     if (T0 is TypeParameterTypeImpl &&
         T1 is TypeParameterTypeImpl &&
         T1.promotedBound == null &&
-        T0.element2 == T1.element2) {
+        T0.element == T1.element) {
       return true;
     }
 
@@ -195,7 +195,7 @@
       var T1_promotedBound = T1.promotedBound;
       if (T1_promotedBound != null) {
         var X1 = TypeParameterTypeImpl(
-          element2: T1.element2,
+          element: T1.element,
           nullabilitySuffix: T1.nullabilitySuffix,
         );
         return isSubtypeOf(T0, X1) && isSubtypeOf(T0, T1_promotedBound);
@@ -227,7 +227,7 @@
         if (S0 != null && isSubtypeOf(S0, T1)) {
           return true;
         }
-        var B0 = T0.element2.bound;
+        var B0 = T0.element.bound;
         if (B0 != null && isSubtypeOf(B0, T1)) {
           return true;
         }
@@ -255,7 +255,7 @@
         if (S0 != null && isSubtypeOf(S0, T1)) {
           return true;
         }
-        var B0 = T0.element2.bound;
+        var B0 = T0.element.bound;
         if (B0 != null && isSubtypeOf(B0, T1)) {
           return true;
         }
@@ -281,7 +281,7 @@
         return true;
       }
 
-      var B0 = T0.element2.bound;
+      var B0 = T0.element.bound;
       if (B0 != null && isSubtypeOf(B0, T1)) {
         return true;
       }
@@ -456,8 +456,8 @@
       return false;
     }
 
-    var subElement = subType.element2;
-    var superElement = superType.element2;
+    var subElement = subType.element;
+    var superElement = superType.element;
     if (subElement == superElement) {
       return _interfaceArguments(superElement, subType, superType);
     }
@@ -468,7 +468,7 @@
     }
 
     for (var interface in subElement.allSupertypes) {
-      if (interface.element2 == superElement) {
+      if (interface.element == superElement) {
         var substitution = Substitution.fromInterfaceType(subType);
         var substitutedInterface =
             substitution.substituteType(interface) as InterfaceType;
diff --git a/pkg/analyzer/lib/src/dart/element/top_merge.dart b/pkg/analyzer/lib/src/dart/element/top_merge.dart
index 1d84ffe..b60f3b1 100644
--- a/pkg/analyzer/lib/src/dart/element/top_merge.dart
+++ b/pkg/analyzer/lib/src/dart/element/top_merge.dart
@@ -160,7 +160,7 @@
     }
 
     if (T is TypeParameterType && S is TypeParameterType) {
-      if (T.element2 == S.element2) {
+      if (T.element == S.element) {
         return T;
       } else {
         throw _TopMergeStateError(T, S, 'Not the same type parameters');
@@ -271,7 +271,7 @@
   }
 
   InterfaceType _interfaceTypes(InterfaceType T, InterfaceType S) {
-    if (T.element2 != S.element2) {
+    if (T.element != S.element) {
       throw _TopMergeStateError(T, S, 'Different class elements');
     }
 
@@ -284,7 +284,7 @@
         T_arguments.length,
         (i) => topMerge(T_arguments[i], S_arguments[i]),
       );
-      return T.element2.instantiate(
+      return T.element.instantiate(
         typeArguments: arguments,
         nullabilitySuffix: NullabilitySuffix.none,
       );
diff --git a/pkg/analyzer/lib/src/dart/element/type.dart b/pkg/analyzer/lib/src/dart/element/type.dart
index 82bd2da..849404a 100644
--- a/pkg/analyzer/lib/src/dart/element/type.dart
+++ b/pkg/analyzer/lib/src/dart/element/type.dart
@@ -24,11 +24,15 @@
   static final DynamicTypeImpl instance = DynamicTypeImpl._();
 
   @override
-  final DynamicElementImpl element2 = DynamicElementImpl();
+  final DynamicElementImpl element = DynamicElementImpl();
 
   /// Prevent the creation of instances of this class.
   DynamicTypeImpl._();
 
+  @Deprecated('Use element instead')
+  @override
+  DynamicElementImpl get element2 => element;
+
   @override
   int get hashCode => 1;
 
@@ -93,7 +97,11 @@
   }) : parameters = _sortNamedParameters(parameters);
 
   @override
-  Null get element2 => null;
+  Null get element => null;
+
+  @Deprecated('Use element instead')
+  @override
+  Null get element2 => element;
 
   @override
   int get hashCode {
@@ -432,7 +440,7 @@
 /// A concrete implementation of an [InterfaceType].
 class InterfaceTypeImpl extends TypeImpl implements InterfaceType {
   @override
-  final InterfaceElement element2;
+  final InterfaceElement element;
 
   @override
   final List<DartType> typeArguments;
@@ -450,17 +458,17 @@
   List<MethodElement>? _methods;
 
   InterfaceTypeImpl({
-    required this.element2,
+    required this.element,
     required this.typeArguments,
     required this.nullabilitySuffix,
     super.alias,
   }) {
-    var typeParameters = element2.typeParameters;
+    var typeParameters = element.typeParameters;
     if (typeArguments.length != typeParameters.length) {
       throw ArgumentError(
         '[typeParameters.length: ${typeParameters.length}]'
         '[typeArguments.length: ${typeArguments.length}]'
-        '[element: $element2]'
+        '[element: $element]'
         '[typeParameters: $typeParameters]'
         '[typeArguments: $typeArguments]',
       );
@@ -470,7 +478,7 @@
   @override
   List<PropertyAccessorElement> get accessors {
     if (_accessors == null) {
-      List<PropertyAccessorElement> accessors = element2.accessors;
+      List<PropertyAccessorElement> accessors = element.accessors;
       var members = <PropertyAccessorElement>[];
       for (int i = 0; i < accessors.length; i++) {
         members.add(PropertyAccessorMember.from(accessors[i], this)!);
@@ -483,7 +491,7 @@
   @override
   List<InterfaceType> get allSupertypes {
     var substitution = Substitution.fromInterfaceType(this);
-    return element2.allSupertypes
+    return element.allSupertypes
         .map((t) => substitution.substituteType(t) as InterfaceType)
         .toList();
   }
@@ -491,7 +499,7 @@
   @override
   List<ConstructorElement> get constructors {
     if (_constructors == null) {
-      List<ConstructorElement> constructors = element2.constructors;
+      List<ConstructorElement> constructors = element.constructors;
       var members = <ConstructorElement>[];
       for (int i = 0; i < constructors.length; i++) {
         members.add(ConstructorMember.from(constructors[i], this));
@@ -501,111 +509,115 @@
     return _constructors!;
   }
 
+  @Deprecated('Use element instead')
+  @override
+  InterfaceElement get element2 => element;
+
   @override
   int get hashCode {
-    return element2.hashCode;
+    return element.hashCode;
   }
 
   @override
   List<InterfaceType> get interfaces {
-    return _instantiateSuperTypes(element2.interfaces);
+    return _instantiateSuperTypes(element.interfaces);
   }
 
   @override
   bool get isDartAsyncFuture {
-    return element2.name == "Future" && element2.library.isDartAsync;
+    return element.name == "Future" && element.library.isDartAsync;
   }
 
   @override
   bool get isDartAsyncFutureOr {
-    return element2.name == "FutureOr" && element2.library.isDartAsync;
+    return element.name == "FutureOr" && element.library.isDartAsync;
   }
 
   @override
   bool get isDartAsyncStream {
-    return element2.name == "Stream" && element2.library.isDartAsync;
+    return element.name == "Stream" && element.library.isDartAsync;
   }
 
   @override
   bool get isDartCoreBool {
-    return element2.name == "bool" && element2.library.isDartCore;
+    return element.name == "bool" && element.library.isDartCore;
   }
 
   @override
   bool get isDartCoreDouble {
-    return element2.name == "double" && element2.library.isDartCore;
+    return element.name == "double" && element.library.isDartCore;
   }
 
   @override
   bool get isDartCoreEnum {
-    final element2 = this.element2;
-    return element2 is ClassElement && element2.isDartCoreEnum;
+    final element = this.element;
+    return element is ClassElement && element.isDartCoreEnum;
   }
 
   @override
   bool get isDartCoreFunction {
-    return element2.name == "Function" && element2.library.isDartCore;
+    return element.name == "Function" && element.library.isDartCore;
   }
 
   @override
   bool get isDartCoreInt {
-    return element2.name == "int" && element2.library.isDartCore;
+    return element.name == "int" && element.library.isDartCore;
   }
 
   @override
   bool get isDartCoreIterable {
-    return element2.name == "Iterable" && element2.library.isDartCore;
+    return element.name == "Iterable" && element.library.isDartCore;
   }
 
   @override
   bool get isDartCoreList {
-    return element2.name == "List" && element2.library.isDartCore;
+    return element.name == "List" && element.library.isDartCore;
   }
 
   @override
   bool get isDartCoreMap {
-    return element2.name == "Map" && element2.library.isDartCore;
+    return element.name == "Map" && element.library.isDartCore;
   }
 
   @override
   bool get isDartCoreNull {
-    return element2.name == "Null" && element2.library.isDartCore;
+    return element.name == "Null" && element.library.isDartCore;
   }
 
   @override
   bool get isDartCoreNum {
-    return element2.name == "num" && element2.library.isDartCore;
+    return element.name == "num" && element.library.isDartCore;
   }
 
   @override
   bool get isDartCoreObject {
-    return element2.name == "Object" && element2.library.isDartCore;
+    return element.name == "Object" && element.library.isDartCore;
   }
 
   @override
   bool get isDartCoreRecord {
-    return element2.name == "Record" && element2.library.isDartCore;
+    return element.name == "Record" && element.library.isDartCore;
   }
 
   @override
   bool get isDartCoreSet {
-    return element2.name == "Set" && element2.library.isDartCore;
+    return element.name == "Set" && element.library.isDartCore;
   }
 
   @override
   bool get isDartCoreString {
-    return element2.name == "String" && element2.library.isDartCore;
+    return element.name == "String" && element.library.isDartCore;
   }
 
   @override
   bool get isDartCoreSymbol {
-    return element2.name == "Symbol" && element2.library.isDartCore;
+    return element.name == "Symbol" && element.library.isDartCore;
   }
 
   @override
   List<MethodElement> get methods {
     if (_methods == null) {
-      List<MethodElement> methods = element2.methods;
+      List<MethodElement> methods = element.methods;
       var members = <MethodElement>[];
       for (int i = 0; i < methods.length; i++) {
         members.add(MethodMember.from(methods[i], this)!);
@@ -617,17 +629,17 @@
 
   @override
   List<InterfaceType> get mixins {
-    List<InterfaceType> mixins = element2.mixins;
+    List<InterfaceType> mixins = element.mixins;
     return _instantiateSuperTypes(mixins);
   }
 
   @Deprecated('Check element, or use getDisplayString()')
   @override
-  String get name => element2.name;
+  String get name => element.name;
 
   @override
   InterfaceType? get superclass {
-    var supertype = element2.supertype;
+    var supertype = element.supertype;
     if (supertype == null) {
       return null;
     }
@@ -638,9 +650,9 @@
 
   @override
   List<InterfaceType> get superclassConstraints {
-    final element2 = this.element2;
-    if (element2 is MixinElement) {
-      final constraints = element2.superclassConstraints;
+    final element = this.element;
+    if (element is MixinElement) {
+      final constraints = element.superclassConstraints;
       return _instantiateSuperTypes(constraints);
     } else {
       return [];
@@ -648,7 +660,7 @@
   }
 
   InheritanceManager3 get _inheritanceManager =>
-      (element2.library.session as AnalysisSessionImpl).inheritanceManager;
+      (element.library.session as AnalysisSessionImpl).inheritanceManager;
 
   @override
   bool operator ==(Object other) {
@@ -659,7 +671,7 @@
       if (other.nullabilitySuffix != nullabilitySuffix) {
         return false;
       }
-      return other.element2 == element2 &&
+      return other.element == element &&
           TypeImpl.equalArrays(other.typeArguments, typeArguments);
     }
     return false;
@@ -685,12 +697,12 @@
 
   @override
   InterfaceType? asInstanceOf(InterfaceElement targetElement) {
-    if (element2 == targetElement) {
+    if (element == targetElement) {
       return this;
     }
 
-    for (var rawInterface in element2.allSupertypes) {
-      if (rawInterface.element2 == targetElement) {
+    for (var rawInterface in element.allSupertypes) {
+      if (rawInterface.element == targetElement) {
         var substitution = Substitution.fromInterfaceType(this);
         return substitution.substituteType(rawInterface) as InterfaceType;
       }
@@ -701,15 +713,15 @@
 
   @override
   PropertyAccessorElement? getGetter(String getterName) =>
-      PropertyAccessorMember.from(element2.getGetter(getterName), this);
+      PropertyAccessorMember.from(element.getGetter(getterName), this);
 
   @override
   MethodElement? getMethod(String methodName) =>
-      MethodMember.from(element2.getMethod(methodName), this);
+      MethodMember.from(element.getMethod(methodName), this);
 
   @override
   PropertyAccessorElement? getSetter(String setterName) =>
-      PropertyAccessorMember.from(element2.getSetter(setterName), this);
+      PropertyAccessorMember.from(element.getSetter(setterName), this);
 
   @override
   ConstructorElement? lookUpConstructor(
@@ -717,9 +729,9 @@
     // prepare base ConstructorElement
     ConstructorElement? constructorElement;
     if (constructorName == null) {
-      constructorElement = element2.unnamedConstructor;
+      constructorElement = element.unnamedConstructor;
     } else {
-      constructorElement = element2.getNamedConstructor(constructorName);
+      constructorElement = element.getNamedConstructor(constructorName);
     }
     // not found or not accessible
     if (constructorElement == null ||
@@ -762,8 +774,8 @@
     }
 
     if (recoveryStatic) {
-      final element2 = this.element2 as AbstractClassElementImpl;
-      return element2.lookupStaticGetter(name, library);
+      final element = this.element as AbstractClassElementImpl;
+      return element.lookupStaticGetter(name, library);
     }
 
     return null;
@@ -801,8 +813,8 @@
     }
 
     if (recoveryStatic) {
-      final element2 = this.element2 as AbstractClassElementImpl;
-      return element2.lookupStaticMethod(name, library);
+      final element = this.element as AbstractClassElementImpl;
+      return element.lookupStaticMethod(name, library);
     }
 
     return null;
@@ -840,8 +852,8 @@
     }
 
     if (recoveryStatic) {
-      final element2 = this.element2 as AbstractClassElementImpl;
-      return element2.lookupStaticSetter(name, library);
+      final element = this.element as AbstractClassElementImpl;
+      return element.lookupStaticSetter(name, library);
     }
 
     return null;
@@ -860,7 +872,7 @@
     if (this.nullabilitySuffix == nullabilitySuffix) return this;
 
     return InterfaceTypeImpl(
-      element2: element2,
+      element: element,
       typeArguments: typeArguments,
       nullabilitySuffix: nullabilitySuffix,
     );
@@ -869,7 +881,7 @@
   List<InterfaceType> _instantiateSuperTypes(List<InterfaceType> defined) {
     if (defined.isEmpty) return defined;
 
-    var typeParameters = element2.typeParameters;
+    var typeParameters = element.typeParameters;
     if (typeParameters.isEmpty) return defined;
 
     var substitution = Substitution.fromInterfaceType(this);
@@ -907,7 +919,7 @@
   static final NeverTypeImpl instance = NeverTypeImpl._(NullabilitySuffix.none);
 
   @override
-  final NeverElementImpl element2 = NeverElementImpl.instance;
+  final NeverElementImpl element = NeverElementImpl.instance;
 
   @override
   final NullabilitySuffix nullabilitySuffix;
@@ -915,6 +927,10 @@
   /// Prevent the creation of instances of this class.
   NeverTypeImpl._(this.nullabilitySuffix);
 
+  @Deprecated('Use element instead')
+  @override
+  Element? get element2 => element;
+
   @override
   int get hashCode => 0;
 
@@ -992,7 +1008,11 @@
   }) : namedFields = _sortNamedFields(namedFields);
 
   @override
-  Null get element2 => null;
+  Null get element => null;
+
+  @Deprecated('Use element instead')
+  @override
+  Null get element2 => element;
 
   @override
   int get hashCode {
@@ -1258,7 +1278,7 @@
 /// A concrete implementation of a [TypeParameterType].
 class TypeParameterTypeImpl extends TypeImpl implements TypeParameterType {
   @override
-  final TypeParameterElement element2;
+  final TypeParameterElement element;
 
   @override
   final NullabilitySuffix nullabilitySuffix;
@@ -1266,13 +1286,13 @@
   /// An optional promoted bound on the type parameter.
   ///
   /// 'null' indicates that the type parameter's bound has not been promoted and
-  /// is therefore the same as the bound of [element2].
+  /// is therefore the same as the bound of [element].
   final DartType? promotedBound;
 
   /// Initialize a newly created type parameter type to be declared by the given
   /// [element] and to have the given name.
   TypeParameterTypeImpl({
-    required this.element2,
+    required this.element,
     required this.nullabilitySuffix,
     this.promotedBound,
     super.alias,
@@ -1280,13 +1300,17 @@
 
   @override
   DartType get bound =>
-      promotedBound ?? element2.bound ?? DynamicTypeImpl.instance;
+      promotedBound ?? element.bound ?? DynamicTypeImpl.instance;
 
   @override
-  ElementLocation get definition => element2.location!;
+  ElementLocation get definition => element.location!;
+
+  @Deprecated('Use element instead')
+  @override
+  TypeParameterElement get element2 => element;
 
   @override
-  int get hashCode => element2.hashCode;
+  int get hashCode => element.hashCode;
 
   @override
   bool get isBottom {
@@ -1295,7 +1319,7 @@
     // bounds form a loop.  So we have to be more careful.
     Set<TypeParameterElement> seenTypes = {};
     TypeParameterType type = this;
-    while (seenTypes.add(type.element2)) {
+    while (seenTypes.add(type.element)) {
       var bound = type.bound;
       if (bound is TypeParameterType) {
         type = bound;
@@ -1309,7 +1333,7 @@
 
   @Deprecated('Check element, or use getDisplayString()')
   @override
-  String get name => element2.name;
+  String get name => element.name;
 
   @override
   bool operator ==(Object other) {
@@ -1317,7 +1341,7 @@
       return true;
     }
 
-    if (other is TypeParameterTypeImpl && other.element2 == element2) {
+    if (other is TypeParameterTypeImpl && other.element == element) {
       if (other.nullabilitySuffix != nullabilitySuffix) {
         return false;
       }
@@ -1352,7 +1376,7 @@
 
   @override
   bool referencesAny(Set<TypeParameterElement> parameters) {
-    return parameters.contains(element2);
+    return parameters.contains(element);
   }
 
   @Deprecated('Use TypeSystem.resolveToBound() instead')
@@ -1363,7 +1387,7 @@
       return promotedBound.resolveToBound(objectType);
     }
 
-    var bound = element2.bound;
+    var bound = element.bound;
     if (bound == null) {
       return objectType;
     }
@@ -1387,7 +1411,7 @@
   TypeImpl withNullability(NullabilitySuffix nullabilitySuffix) {
     if (this.nullabilitySuffix == nullabilitySuffix) return this;
     return TypeParameterTypeImpl(
-      element2: element2,
+      element: element,
       nullabilitySuffix: nullabilitySuffix,
       promotedBound: promotedBound,
     );
@@ -1403,7 +1427,11 @@
   VoidTypeImpl._();
 
   @override
-  Null get element2 => null;
+  Null get element => null;
+
+  @Deprecated('Use element instead')
+  @override
+  Null get element2 => element;
 
   @override
   int get hashCode => 2;
diff --git a/pkg/analyzer/lib/src/dart/element/type_algebra.dart b/pkg/analyzer/lib/src/dart/element/type_algebra.dart
index 3020df7..3844a5b 100644
--- a/pkg/analyzer/lib/src/dart/element/type_algebra.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_algebra.dart
@@ -31,7 +31,7 @@
   var map = <TypeParameterElement, DartType>{};
   for (int i = 0; i < typeParameters.length; ++i) {
     map[typeParameters[i]] = TypeParameterTypeImpl(
-      element2: freshParameters[i],
+      element: freshParameters[i],
       nullabilitySuffix: NullabilitySuffix.none,
     );
   }
@@ -184,7 +184,7 @@
     if (type.typeArguments.isEmpty) {
       return _NullSubstitution.instance;
     }
-    return fromPairs(type.element2.typeParameters, type.typeArguments);
+    return fromPairs(type.element.typeParameters, type.typeArguments);
   }
 
   /// Substitutes each parameter to the type it maps to in [map].
@@ -320,7 +320,7 @@
   @override
   DartType getSubstitute(TypeParameterElement parameter, bool upperBound) {
     return TypeParameterTypeImpl(
-      element2: parameter,
+      element: parameter,
       nullabilitySuffix: NullabilitySuffix.star,
     );
   }
@@ -515,7 +515,7 @@
     }
 
     return InterfaceTypeImpl(
-      element2: type.element2,
+      element: type.element,
       typeArguments: typeArguments,
       nullabilitySuffix: type.nullabilitySuffix,
       alias: alias,
@@ -537,7 +537,7 @@
     return NamedTypeBuilder(
       type.linker,
       type.typeSystem,
-      type.element2,
+      type.element,
       arguments,
       type.nullabilitySuffix,
     );
@@ -584,7 +584,7 @@
 
   @override
   DartType visitTypeParameterType(TypeParameterType type) {
-    var argument = getSubstitute(type.element2);
+    var argument = getSubstitute(type.element);
     if (argument == null) {
       return type;
     }
diff --git a/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart b/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart
index 7c53947..6716a69 100644
--- a/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart
@@ -109,8 +109,8 @@
     var P_nullability = P.nullabilitySuffix;
     if (P is TypeParameterType &&
         P_nullability == NullabilitySuffix.none &&
-        _typeParameters.contains(P.element2)) {
-      _addUpper(P.element2, Q);
+        _typeParameters.contains(P.element)) {
+      _addUpper(P.element, Q);
       return true;
     }
 
@@ -119,8 +119,8 @@
     var Q_nullability = Q.nullabilitySuffix;
     if (Q is TypeParameterType &&
         Q_nullability == NullabilitySuffix.none &&
-        _typeParameters.contains(Q.element2)) {
-      _addLower(Q.element2, P);
+        _typeParameters.contains(Q.element)) {
+      _addLower(Q.element, P);
       return true;
     }
 
@@ -308,7 +308,7 @@
     // Note: we have already eliminated the case that `X` is a variable in `L`.
     if (P_nullability == NullabilitySuffix.none && P is TypeParameterTypeImpl) {
       var rewind = _constraints.length;
-      var B = P.promotedBound ?? P.element2.bound;
+      var B = P.promotedBound ?? P.element.bound;
       if (B != null && trySubtypeMatch(B, Q, leftSchema)) {
         return true;
       }
@@ -547,7 +547,7 @@
     // holds under constraints `C0 + ... + Ck`:
     //   If `Mi` is a subtype match for `Ni` with respect to L under
     //   constraints `Ci`.
-    if (P.element2 == Q.element2) {
+    if (P.element == Q.element) {
       if (!_interfaceType_arguments(P, Q, leftSchema)) {
         return false;
       }
@@ -559,10 +559,10 @@
     //   If `C1<B0, ..., Bj>` is a superinterface of `C0<M0, ..., Mk>` and
     //   `C1<B0, ..., Bj>` is a subtype match for `C1<N0, ..., Nj>` with
     //   respect to `L` under constraints `C`.
-    var C0 = P.element2;
-    var C1 = Q.element2;
+    var C0 = P.element;
+    var C1 = Q.element;
     for (var interface in C0.allSupertypes) {
-      if (interface.element2 == C1) {
+      if (interface.element == C1) {
         var substitution = Substitution.fromInterfaceType(P);
         return _interfaceType_arguments(
           substitution.substituteType(interface) as InterfaceType,
@@ -582,13 +582,13 @@
     InterfaceType Q,
     bool leftSchema,
   ) {
-    assert(P.element2 == Q.element2);
+    assert(P.element == Q.element);
 
     var rewind = _constraints.length;
 
     for (var i = 0; i < P.typeArguments.length; i++) {
       var variance =
-          (P.element2.typeParameters[i] as TypeParameterElementImpl).variance;
+          (P.element.typeParameters[i] as TypeParameterElementImpl).variance;
       var M = P.typeArguments[i];
       var N = Q.typeArguments[i];
       if ((variance.isCovariant || variance.isInvariant) &&
diff --git a/pkg/analyzer/lib/src/dart/element/type_demotion.dart b/pkg/analyzer/lib/src/dart/element/type_demotion.dart
index 5647d53..4839abe 100644
--- a/pkg/analyzer/lib/src/dart/element/type_demotion.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_demotion.dart
@@ -36,7 +36,7 @@
       var typeImpl = type as TypeParameterTypeImpl;
       if (typeImpl.promotedBound != null) {
         return TypeParameterTypeImpl(
-          element2: type.element2,
+          element: type.element,
           nullabilitySuffix: newNullability ?? type.nullabilitySuffix,
           alias: type.alias,
         );
diff --git a/pkg/analyzer/lib/src/dart/element/type_provider.dart b/pkg/analyzer/lib/src/dart/element/type_provider.dart
index 5e32f6c..719c256 100644
--- a/pkg/analyzer/lib/src/dart/element/type_provider.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_provider.dart
@@ -80,7 +80,7 @@
 abstract class TypeProviderBase implements TypeProvider {
   @override
   bool isObjectGetter(String id) {
-    var element = objectType.element2.getGetter(id);
+    var element = objectType.element.getGetter(id);
     return element != null && !element.isStatic;
   }
 
@@ -91,7 +91,7 @@
 
   @override
   bool isObjectMethod(String id) {
-    var element = objectType.element2.getMethod(id);
+    var element = objectType.element.getMethod(id);
     return element != null && !element.isStatic;
   }
 }
@@ -241,7 +241,7 @@
       var element = enumElement;
       if (element != null) {
         _enumType = InterfaceTypeImpl(
-          element2: element,
+          element: element,
           typeArguments: const [],
           nullabilitySuffix: _nullabilitySuffix,
         );
@@ -258,7 +258,7 @@
   @override
   InterfaceType get futureDynamicType {
     return _futureDynamicType ??= InterfaceTypeImpl(
-      element2: futureElement,
+      element: futureElement,
       typeArguments: [dynamicType],
       nullabilitySuffix: _nullabilitySuffix,
     );
@@ -272,7 +272,7 @@
   @override
   InterfaceType get futureNullType {
     return _futureNullType ??= InterfaceTypeImpl(
-      element2: futureElement,
+      element: futureElement,
       typeArguments: [nullType],
       nullabilitySuffix: _nullabilitySuffix,
     );
@@ -286,7 +286,7 @@
   @override
   InterfaceType get futureOrNullType {
     return _futureOrNullType ??= InterfaceTypeImpl(
-      element2: futureOrElement,
+      element: futureOrElement,
       typeArguments: [nullType],
       nullabilitySuffix: _nullabilitySuffix,
     );
@@ -309,7 +309,7 @@
   @override
   InterfaceType get iterableDynamicType {
     return _iterableDynamicType ??= InterfaceTypeImpl(
-      element2: iterableElement,
+      element: iterableElement,
       typeArguments: [dynamicType],
       nullabilitySuffix: _nullabilitySuffix,
     );
@@ -323,7 +323,7 @@
   @override
   InterfaceType get iterableObjectType {
     return _iterableObjectType ??= InterfaceTypeImpl(
-      element2: iterableElement,
+      element: iterableElement,
       typeArguments: [objectType],
       nullabilitySuffix: _nullabilitySuffix,
     );
@@ -342,7 +342,7 @@
   @override
   InterfaceType get mapObjectObjectType {
     return _mapObjectObjectType ??= InterfaceTypeImpl(
-      element2: mapElement,
+      element: mapElement,
       typeArguments: [objectType, objectType],
       nullabilitySuffix: _nullabilitySuffix,
     );
@@ -419,7 +419,7 @@
   @override
   InterfaceType get streamDynamicType {
     return _streamDynamicType ??= InterfaceTypeImpl(
-      element2: streamElement,
+      element: streamElement,
       typeArguments: [dynamicType],
       nullabilitySuffix: _nullabilitySuffix,
     );
@@ -553,14 +553,14 @@
     if (typeParameters.isNotEmpty) {
       typeArguments = typeParameters.map((e) {
         return TypeParameterTypeImpl(
-          element2: e,
+          element: e,
           nullabilitySuffix: _nullabilitySuffix,
         );
       }).toList(growable: false);
     }
 
     return InterfaceTypeImpl(
-      element2: element,
+      element: element,
       typeArguments: typeArguments,
       nullabilitySuffix: _nullabilitySuffix,
     );
diff --git a/pkg/analyzer/lib/src/dart/element/type_schema.dart b/pkg/analyzer/lib/src/dart/element/type_schema.dart
index cda14dd..75103b7 100644
--- a/pkg/analyzer/lib/src/dart/element/type_schema.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_schema.dart
@@ -23,7 +23,11 @@
   UnknownInferredType._();
 
   @override
-  Element? get element2 => null;
+  Element? get element => null;
+
+  @Deprecated('Use element instead')
+  @override
+  Element? get element2 => element;
 
   @override
   int get hashCode => 1;
diff --git a/pkg/analyzer/lib/src/dart/element/type_system.dart b/pkg/analyzer/lib/src/dart/element/type_system.dart
index fd97800..584a403 100644
--- a/pkg/analyzer/lib/src/dart/element/type_system.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_system.dart
@@ -332,7 +332,7 @@
       }
     }
     return candidates
-        .where((type) => type.element2.typeParameters.isNotEmpty)
+        .where((type) => type.element.typeParameters.isNotEmpty)
         .toList();
   }
 
@@ -345,7 +345,7 @@
   FunctionType? getCallMethodType(DartType t) {
     if (t is InterfaceType) {
       return t
-          .lookUpMethod2(FunctionElement.CALL_METHOD_NAME, t.element2.library)
+          .lookUpMethod2(FunctionElement.CALL_METHOD_NAME, t.element.library)
           ?.type;
     }
     return null;
@@ -372,7 +372,7 @@
       }
       visitedTypes.add(type);
       if (type is TypeParameterType) {
-        var element = type.element2;
+        var element = type.element;
         if ((candidates == null || candidates.contains(element)) &&
             !boundTypeParameters.contains(element)) {
           parameters ??= <TypeParameterElement>[];
@@ -562,7 +562,7 @@
       return type.instantiate(typeArguments);
     } else if (type is InterfaceTypeImpl) {
       // TODO(scheglov) Use `ClassElement.instantiate()`, don't use raw types.
-      return type.element2.instantiate(
+      return type.element.instantiate(
         typeArguments: typeArguments,
         nullabilitySuffix: type.nullabilitySuffix,
       );
@@ -740,7 +740,7 @@
         return result;
       }
 
-      T = type.element2.bound;
+      T = type.element.bound;
       if (T != null) {
         var result = isBottom(T);
         assert(type.isBottom == result);
@@ -762,7 +762,7 @@
     }
 
     if (type is TypeParameterTypeImpl) {
-      var bound = type.element2.bound;
+      var bound = type.element.bound;
       if (bound != null && isDynamicBounded(bound)) {
         return true;
       }
@@ -798,7 +798,7 @@
     }
 
     if (type is TypeParameterTypeImpl) {
-      var bound = type.element2.bound;
+      var bound = type.element.bound;
       if (bound != null && isFunctionBounded(bound)) {
         return true;
       }
@@ -884,8 +884,8 @@
       // is anything except none by this point.
       assert(T_nullability == NullabilitySuffix.none);
       assert(S_nullability == NullabilitySuffix.none);
-      var T_element = T.element2;
-      var S_element = S.element2;
+      var T_element = T.element;
+      var S_element = S.element;
 
       // MOREBOTTOM(X&T, Y&S) = MOREBOTTOM(T, S)
       var T_promotedBound = T.promotedBound;
@@ -1026,7 +1026,7 @@
     } else if (type is InterfaceType && type.isDartAsyncFutureOr) {
       return isNonNullable(type.typeArguments[0]);
     } else if (type is TypeParameterType) {
-      var bound = type.element2.bound;
+      var bound = type.element.bound;
       return bound != null && isNonNullable(bound);
     }
     return true;
@@ -1313,13 +1313,13 @@
     if (type.isDartCoreNull) return NeverTypeImpl.instance;
 
     if (type is TypeParameterTypeImpl) {
-      var element = type.element2;
+      var element = type.element;
 
       // NonNull(X & T) = X & NonNull(T)
       if (type.promotedBound != null) {
         var promotedBound = promoteToNonNull(type.promotedBound!);
         return TypeParameterTypeImpl(
-          element2: element,
+          element: element,
           nullabilitySuffix: NullabilitySuffix.none,
           promotedBound: promotedBound,
         );
@@ -1333,7 +1333,7 @@
         promotedBound = null;
       }
       return TypeParameterTypeImpl(
-        element2: element,
+        element: element,
         nullabilitySuffix: NullabilitySuffix.none,
         promotedBound: promotedBound,
       );
@@ -1428,7 +1428,7 @@
       freshTypeParameters.add(freshTypeParameter);
       freshTypeParameterTypes.add(
         TypeParameterTypeImpl(
-          element2: freshTypeParameter,
+          element: freshTypeParameter,
           nullabilitySuffix: NullabilitySuffix.none,
         ),
       );
@@ -1497,7 +1497,7 @@
         return resolveToBound(promotedBound);
       }
 
-      final bound = type.element2.bound;
+      final bound = type.element.bound;
       if (bound == null) {
         return isNonNullableByDefault ? objectQuestion : objectStar;
       }
@@ -1592,9 +1592,9 @@
     // `U` to `S` where `S <: U`, yielding a type parameter `T extends S`.
     if (from is TypeParameterType) {
       if (isSubtypeOf(to, from.bound)) {
-        var declaration = from.element2.declaration;
+        var declaration = from.element.declaration;
         return TypeParameterTypeImpl(
-          element2: declaration,
+          element: declaration,
           nullabilitySuffix: _promotedTypeParameterTypeNullability(
             from.nullabilitySuffix,
             to.nullabilitySuffix,
@@ -1616,7 +1616,7 @@
     if (type is FunctionType) {
       return type.typeFormals;
     } else if (type is InterfaceType) {
-      return type.element2.typeParameters;
+      return type.element.typeParameters;
     } else {
       return const <TypeParameterElement>[];
     }
diff --git a/pkg/analyzer/lib/src/dart/element/well_bounded.dart b/pkg/analyzer/lib/src/dart/element/well_bounded.dart
index 7eada0f..9ca8629 100644
--- a/pkg/analyzer/lib/src/dart/element/well_bounded.dart
+++ b/pkg/analyzer/lib/src/dart/element/well_bounded.dart
@@ -84,8 +84,8 @@
       typeParameters = alias.element.typeParameters;
       typeArguments = alias.typeArguments;
     } else if (type is InterfaceType) {
-      elementName = type.element2.name;
-      typeParameters = type.element2.typeParameters;
+      elementName = type.element.name;
+      typeParameters = type.element.typeParameters;
       typeArguments = type.typeArguments;
     } else {
       return const RegularBoundedTypeResult._();
diff --git a/pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart
index 79044b5..3bff573 100644
--- a/pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart
@@ -242,43 +242,43 @@
     // prefix.*
     if (element1 is PrefixElement) {
       if (name2 != null) {
-        var element2 = element1.scope.lookup(name2.name).getter;
-        name2.staticElement = element2;
+        var element = element1.scope.lookup(name2.name).getter;
+        name2.staticElement = element;
         // prefix.Class(args) or prefix.Class.CONST
-        if (element2 is InterfaceElement) {
-          if (element2 is ClassElement && argumentList != null) {
+        if (element is InterfaceElement) {
+          if (element is ClassElement && argumentList != null) {
             _classConstructorInvocation(
-                node, element2, name3, argumentList, whyNotPromotedList);
+                node, element, name3, argumentList, whyNotPromotedList);
           } else {
-            _classGetter(node, element2, name3, whyNotPromotedList);
+            _classGetter(node, element, name3, whyNotPromotedList);
           }
           return;
         }
         // prefix.Extension.CONST
-        if (element2 is ExtensionElement) {
-          _extensionGetter(node, element2, name3, whyNotPromotedList);
+        if (element is ExtensionElement) {
+          _extensionGetter(node, element, name3, whyNotPromotedList);
           return;
         }
         // prefix.CONST
-        if (element2 is PropertyAccessorElement) {
-          _propertyAccessorElement(node, name2, element2, whyNotPromotedList);
+        if (element is PropertyAccessorElement) {
+          _propertyAccessorElement(node, name2, element, whyNotPromotedList);
           return;
         }
 
         // prefix.TypeAlias(args) or prefix.TypeAlias.CONST
-        if (element2 is TypeAliasElement) {
-          var aliasedType = element2.aliasedType;
+        if (element is TypeAliasElement) {
+          var aliasedType = element.aliasedType;
           var argumentList = node.arguments;
           if (aliasedType is InterfaceType && argumentList != null) {
-            _typeAliasConstructorInvocation(node, element2, name3, aliasedType,
+            _typeAliasConstructorInvocation(node, element, name3, aliasedType,
                 argumentList, whyNotPromotedList);
           } else {
-            _typeAliasGetter(node, element2, name3, whyNotPromotedList);
+            _typeAliasGetter(node, element, name3, whyNotPromotedList);
           }
           return;
         }
         // undefined
-        if (element2 == null) {
+        if (element == null) {
           _errorReporter.reportErrorForNode(
             CompileTimeErrorCode.UNDEFINED_ANNOTATION,
             node,
@@ -374,7 +374,7 @@
     ExecutableElement? getter;
     var aliasedType = typeAliasElement.aliasedType;
     if (aliasedType is InterfaceType) {
-      var classElement = aliasedType.element2;
+      var classElement = aliasedType.element;
       if (getterName != null) {
         getter = classElement.getGetter(getterName.name);
         getter = _resolver.toLegacyElement(getter);
diff --git a/pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart b/pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart
index 03f5026..efcbcd3 100644
--- a/pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart
@@ -184,7 +184,7 @@
             node: node,
             typeIdentifier: target,
             constructorIdentifier: methodName,
-            classElement: aliasedType.element2,
+            classElement: aliasedType.element,
           );
         }
       }
@@ -209,7 +209,7 @@
               node: node,
               typeNameIdentifier: target,
               constructorIdentifier: methodName,
-              classElement: aliasedType.element2,
+              classElement: aliasedType.element,
             );
           }
         }
@@ -263,7 +263,7 @@
         //     X.named
         return _toConstructorReference_prefixed(
           node: node,
-          classElement: aliasedType.element2,
+          classElement: aliasedType.element,
         );
       }
     }
@@ -352,7 +352,7 @@
           node: node,
           receiver: receiverIdentifier,
           typeArguments: typeArguments,
-          classElement: aliasedType.element2,
+          classElement: aliasedType.element,
         );
       }
     }
diff --git a/pkg/analyzer/lib/src/dart/resolver/constructor_reference_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/constructor_reference_resolver.dart
index f6380a7..61983de 100644
--- a/pkg/analyzer/lib/src/dart/resolver/constructor_reference_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/constructor_reference_resolver.dart
@@ -55,7 +55,7 @@
       if (enclosingElement is TypeAliasElement) {
         final aliasedType = enclosingElement.aliasedType;
         enclosingElement =
-            aliasedType is InterfaceType ? aliasedType.element2 : null;
+            aliasedType is InterfaceType ? aliasedType.element : null;
       }
       // TODO(srawlins): Handle `enclosingElement` being a function typedef:
       // typedef F<T> = void Function(); var a = F<int>.extensionOnType;`.
diff --git a/pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart
index 416c3ce..beb03d8 100644
--- a/pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart
@@ -163,7 +163,7 @@
     // Otherwise, a 'call' method on the interface, or on an applicable
     // extension method applies.
     return type.lookUpMethod2(
-            FunctionElement.CALL_METHOD_NAME, type.element2.library) ??
+            FunctionElement.CALL_METHOD_NAME, type.element.library) ??
         _extensionResolver
             .findExtension(type, node, FunctionElement.CALL_METHOD_NAME)
             .getter;
@@ -233,7 +233,7 @@
       // If the type of the function is a type parameter, the tearoff is
       // disallowed, reported in [_resolveDisallowedExpression]. Use the type
       // parameter's bound here in an attempt to assign the intended types.
-      rawType = rawType.element2.bound;
+      rawType = rawType.element.bound;
     }
 
     if (rawType is FunctionType) {
@@ -846,7 +846,7 @@
       } else if (receiverElement is TypeAliasElement) {
         var aliasedType = receiverElement.aliasedType;
         if (aliasedType is InterfaceType) {
-          var element = _resolveStaticElement(aliasedType.element2, name);
+          var element = _resolveStaticElement(aliasedType.element, name);
           name.staticElement = element;
           return element?.referenceType;
         } else {
diff --git a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
index ee8890ef5..d2c10b9 100644
--- a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
@@ -142,7 +142,7 @@
         var aliasedType = element.aliasedType;
         if (aliasedType is InterfaceType) {
           _resolveReceiverTypeLiteral(
-              node, aliasedType.element2, nameNode, name, whyNotPromotedList,
+              node, aliasedType.element, nameNode, name, whyNotPromotedList,
               contextType: contextType);
           return;
         }
@@ -799,7 +799,7 @@
 
     String receiverClassName = '<unknown>';
     if (receiverType is InterfaceType) {
-      receiverClassName = receiverType.element2.name;
+      receiverClassName = receiverType.element.name;
     } else if (receiverType is FunctionType) {
       receiverClassName = 'Function';
     }
@@ -821,7 +821,7 @@
       List<WhyNotPromotedGetter> whyNotPromotedList,
       {required DartType? contextType}) {
     if (node.isCascaded) {
-      receiver = _typeType.element2;
+      receiver = _typeType.element;
     }
 
     var element = _resolveElement(receiver, nameNode);
diff --git a/pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart
index 0465c72..d6643e5 100644
--- a/pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart
@@ -238,7 +238,7 @@
     if (element is InterfaceElement) {
       if (identical(node, withClause_namedType)) {
         for (var mixin in enclosingClass!.mixins) {
-          if (mixin.element2 == element) {
+          if (mixin.element == element) {
             return mixin;
           }
         }
diff --git a/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
index e113b09..1372067 100644
--- a/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
@@ -391,7 +391,7 @@
         var aliasedType = targetElement.aliasedType;
         if (aliasedType is InterfaceType) {
           return _resolveTargetInterfaceElement(
-            typeReference: aliasedType.element2,
+            typeReference: aliasedType.element,
             isCascaded: isCascaded,
             propertyName: propertyName,
             hasRead: hasRead,
@@ -634,7 +634,7 @@
     required bool hasWrite,
   }) {
     if (isCascaded) {
-      typeReference = _resolver.typeProvider.typeType.element2;
+      typeReference = _resolver.typeProvider.typeType.element;
     }
 
     ExecutableElement? readElement;
@@ -766,7 +766,7 @@
       if (hasRead) {
         var name = Name(_definingLibrary.source.uri, propertyName.name);
         readElement = _resolver.inheritance
-            .getMember2(targetType.element2, name, forSuper: true);
+            .getMember2(targetType.element, name, forSuper: true);
 
         if (readElement != null) {
           readElement = _resolver.toLegacyElement(readElement);
@@ -776,7 +776,7 @@
           // But we would like to give the user at least some resolution.
           // So, we retry simply looking for an inherited member.
           readElement =
-              _resolver.inheritance.getInherited2(targetType.element2, name);
+              _resolver.inheritance.getInherited2(targetType.element, name);
           if (readElement != null) {
             errorReporter.reportErrorForNode(
               CompileTimeErrorCode.ABSTRACT_SUPER_MEMBER_REFERENCE,
diff --git a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
index 3d8d487..9103a58 100644
--- a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
@@ -1458,7 +1458,7 @@
 
     DartType type = namedType.typeOrThrow;
     if (type is InterfaceType) {
-      final element = type.element2;
+      final element = type.element;
       if (element is EnumElement || element is MixinElement && asClass) {
         _errorReporter.reportErrorForNode(errorCode, namedType);
         return;
diff --git a/pkg/analyzer/lib/src/dart/resolver/scope.dart b/pkg/analyzer/lib/src/dart/resolver/scope.dart
index 30cf781..9249da9 100644
--- a/pkg/analyzer/lib/src/dart/resolver/scope.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/scope.dart
@@ -185,7 +185,7 @@
     // which is not possible for `dynamic`.
     if (library.isDartCore) {
       definedNames['dynamic'] = DynamicElementImpl.instance;
-      definedNames['Never'] = NeverTypeImpl.instance.element2;
+      definedNames['Never'] = NeverTypeImpl.instance.element;
     }
 
     return Namespace(definedNames);
diff --git a/pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart
index f220df5..9f8c075 100644
--- a/pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart
@@ -255,7 +255,7 @@
     _needsGetterError = _getterRequested == null;
 
     if (_getterRequested == null && recoverWithStatic) {
-      var classElement = type.element2 as AbstractClassElementImpl;
+      var classElement = type.element as AbstractClassElementImpl;
       _getterRecovery ??=
           classElement.lookupStaticGetter(_name, _definingLibrary) ??
               classElement.lookupStaticMethod(_name, _definingLibrary);
@@ -268,7 +268,7 @@
     _needsSetterError = _setterRequested == null;
 
     if (_setterRequested == null && recoverWithStatic) {
-      var classElement = type.element2 as AbstractClassElementImpl;
+      var classElement = type.element as AbstractClassElementImpl;
       _setterRecovery ??=
           classElement.lookupStaticSetter(_name, _definingLibrary);
       _needsSetterError = _setterRecovery == null;
diff --git a/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart
index 7440121..203305e 100644
--- a/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart
@@ -683,11 +683,11 @@
       // The literal is ambiguous, and further analysis won't resolve the
       // ambiguity.  Leave it as neither a set nor a map.
     } else if (literalType is InterfaceType &&
-        literalType.element2 == _typeProvider.mapElement) {
+        literalType.element == _typeProvider.mapElement) {
       node.becomeMap();
     } else {
       assert(literalType is InterfaceType &&
-          literalType.element2 == _typeProvider.setElement);
+          literalType.element == _typeProvider.setElement);
       node.becomeSet();
     }
     if (_strictInference &&
diff --git a/pkg/analyzer/lib/src/dart/resolver/variance.dart b/pkg/analyzer/lib/src/dart/resolver/variance.dart
index db8599f..b248774 100644
--- a/pkg/analyzer/lib/src/dart/resolver/variance.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/variance.dart
@@ -27,7 +27,7 @@
   /// Computes the variance of the [typeParameter] in the [type].
   factory Variance(TypeParameterElement typeParameter, DartType type) {
     if (type is TypeParameterType) {
-      if (type.element2 == typeParameter) {
+      if (type.element == typeParameter) {
         return covariant;
       } else {
         return unrelated;
@@ -36,7 +36,7 @@
       var result = unrelated;
       for (int i = 0; i < type.typeArguments.length; ++i) {
         var argument = type.typeArguments[i];
-        var parameter = type.element2.typeParameters[i];
+        var parameter = type.element.typeParameters[i];
 
         // TODO (kallentu) : Clean up TypeParameterElementImpl casting once
         // variance is added to the interface.
diff --git a/pkg/analyzer/lib/src/error/best_practices_verifier.dart b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
index d663d31..dcbd48e 100644
--- a/pkg/analyzer/lib/src/error/best_practices_verifier.dart
+++ b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
@@ -748,7 +748,7 @@
       var type = node.typeOrThrow;
       // Only report non-aliased, non-user-defined `Null?` and `dynamic?`. Do
       // not report synthetic `dynamic` in place of an unresolved type.
-      if ((type is InterfaceType && type.element2 == _nullType.element2 ||
+      if ((type is InterfaceType && type.element == _nullType.element ||
               (type.isDynamic && name == 'dynamic')) &&
           type.alias == null) {
         _errorReporter.reportErrorForToken(
@@ -1017,17 +1017,17 @@
           return true;
         }
         for (InterfaceType interface in element.mixins) {
-          if (isOrInheritsImmutable(interface.element2, visited)) {
+          if (isOrInheritsImmutable(interface.element, visited)) {
             return true;
           }
         }
         for (InterfaceType mixin in element.interfaces) {
-          if (isOrInheritsImmutable(mixin.element2, visited)) {
+          if (isOrInheritsImmutable(mixin.element, visited)) {
             return true;
           }
         }
         if (element.supertype != null) {
-          return isOrInheritsImmutable(element.supertype!.element2, visited);
+          return isOrInheritsImmutable(element.supertype!.element, visited);
         }
       }
       return false;
@@ -1046,11 +1046,11 @@
       if (visited.add(element)) {
         nonFinalFields = nonFinalInstanceFields(element);
         nonFinalFields = nonFinalFields.followedBy(element.mixins.expand(
-            (InterfaceType mixin) => nonFinalInstanceFields(mixin.element2)));
+            (InterfaceType mixin) => nonFinalInstanceFields(mixin.element)));
         if (element.supertype != null) {
           nonFinalFields = nonFinalFields.followedBy(
               definedOrInheritedNonFinalInstanceFields(
-                  element.supertype!.element2, visited));
+                  element.supertype!.element, visited));
         }
       }
       return nonFinalFields;
@@ -1181,7 +1181,7 @@
     // TODO(srawlins): Perhaps replace this with a getter on Element, like
     // `Element.hasOrInheritsSealed`?
     for (InterfaceType supertype in element.allSupertypes) {
-      final superclass = supertype.element2;
+      final superclass = supertype.element;
       if (superclass.hasSealed) {
         if (!currentPackageContains(superclass)) {
           if (element is MixinElement &&
diff --git a/pkg/analyzer/lib/src/error/correct_override.dart b/pkg/analyzer/lib/src/error/correct_override.dart
index cd2c317..5c38438 100644
--- a/pkg/analyzer/lib/src/error/correct_override.dart
+++ b/pkg/analyzer/lib/src/error/correct_override.dart
@@ -149,7 +149,7 @@
 
     var superMembers = <_SuperMember>[];
     for (var interface in interfaces) {
-      var superMember = _correspondingMember(interface.element2, _thisMember);
+      var superMember = _correspondingMember(interface.element, _thisMember);
       if (superMember != null) {
         superMembers.add(
           _SuperMember(interface, superMember),
diff --git a/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart b/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart
index c3164a2..c66c073 100644
--- a/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart
+++ b/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart
@@ -176,7 +176,7 @@
     } else if (node is MethodInvocation &&
         displayName == FunctionElement.CALL_METHOD_NAME) {
       var invokeType = node.staticInvokeType as InterfaceType;
-      var invokeClass = invokeType.element2;
+      var invokeClass = invokeType.element;
       displayName = "${invokeClass.name}.${element.displayName}";
     }
     var message = _deprecatedMessage(element);
diff --git a/pkg/analyzer/lib/src/error/error_handler_verifier.dart b/pkg/analyzer/lib/src/error/error_handler_verifier.dart
index 5ba6a5c..0706474 100644
--- a/pkg/analyzer/lib/src/error/error_handler_verifier.dart
+++ b/pkg/analyzer/lib/src/error/error_handler_verifier.dart
@@ -251,8 +251,8 @@
   /// Returns whether [element] represents the []
   bool _isDartCoreAsyncType(DartType type, String typeName) =>
       type is InterfaceType &&
-      type.element2.name == typeName &&
-      type.element2.library.isDartAsync;
+      type.element.name == typeName &&
+      type.element.library.isDartAsync;
 }
 
 /// Visits a function body, looking for return statements.
diff --git a/pkg/analyzer/lib/src/error/inheritance_override.dart b/pkg/analyzer/lib/src/error/inheritance_override.dart
index 1dba8ec..6eca3ba 100644
--- a/pkg/analyzer/lib/src/error/inheritance_override.dart
+++ b/pkg/analyzer/lib/src/error/inheritance_override.dart
@@ -368,7 +368,7 @@
   /// corresponding instance members in each of [directSuperInterfaces].
   void _checkDeclaredMembers(AstNode node, InterfaceType type,
       {required int mixinIndex}) {
-    var libraryUri = type.element2.library.source.uri;
+    var libraryUri = type.element.library.source.uri;
     for (var method in type.methods) {
       _checkDeclaredMember(node, libraryUri, method, mixinIndex: mixinIndex);
     }
@@ -395,7 +395,7 @@
       return false;
     }
 
-    final typeElement = type.element2;
+    final typeElement = type.element;
 
     final classElement = this.classElement;
     if (typeElement is ClassElement &&
@@ -476,7 +476,7 @@
       return false;
     }
 
-    var interfaceElement = type.element2;
+    var interfaceElement = type.element;
     if (interfaceElement is EnumElement) {
       return false;
     }
@@ -544,26 +544,26 @@
     // n-case
     final supertype = element.supertype;
     if (supertype != null &&
-        _checkForRecursiveInterfaceInheritance(supertype.element2, path)) {
+        _checkForRecursiveInterfaceInheritance(supertype.element, path)) {
       return true;
     }
 
     for (InterfaceType type in element.mixins) {
-      if (_checkForRecursiveInterfaceInheritance(type.element2, path)) {
+      if (_checkForRecursiveInterfaceInheritance(type.element, path)) {
         return true;
       }
     }
 
     if (element is MixinElement) {
       for (InterfaceType type in element.superclassConstraints) {
-        if (_checkForRecursiveInterfaceInheritance(type.element2, path)) {
+        if (_checkForRecursiveInterfaceInheritance(type.element, path)) {
           return true;
         }
       }
     }
 
     for (InterfaceType type in element.interfaces) {
-      if (_checkForRecursiveInterfaceInheritance(type.element2, path)) {
+      if (_checkForRecursiveInterfaceInheritance(type.element, path)) {
         return true;
       }
     }
@@ -657,20 +657,20 @@
   /// Return the error code that should be used when the given class [element]
   /// references itself directly.
   ErrorCode _getRecursiveErrorCode(InterfaceElement element) {
-    if (element.supertype?.element2 == classElement) {
+    if (element.supertype?.element == classElement) {
       return CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_EXTENDS;
     }
 
     if (element is MixinElement) {
       for (InterfaceType type in element.superclassConstraints) {
-        if (type.element2 == classElement) {
+        if (type.element == classElement) {
           return CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_ON;
         }
       }
     }
 
     for (InterfaceType type in element.mixins) {
-      if (type.element2 == classElement) {
+      if (type.element == classElement) {
         return CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_WITH;
       }
     }
diff --git a/pkg/analyzer/lib/src/error/must_call_super_verifier.dart b/pkg/analyzer/lib/src/error/must_call_super_verifier.dart
index 7bbe7f8..ccd47a5 100644
--- a/pkg/analyzer/lib/src/error/must_call_super_verifier.dart
+++ b/pkg/analyzer/lib/src/error/must_call_super_verifier.dart
@@ -84,11 +84,11 @@
     final superclasses = Queue<InterfaceElement?>();
 
     void addToQueue(InterfaceElement element) {
-      superclasses.addAll(element.mixins.map((i) => i.element2));
-      superclasses.add(element.supertype?.element2);
+      superclasses.addAll(element.mixins.map((i) => i.element));
+      superclasses.add(element.supertype?.element);
       if (element is MixinElement) {
         superclasses
-            .addAll(element.superclassConstraints.map((i) => i.element2));
+            .addAll(element.superclassConstraints.map((i) => i.element));
       }
     }
 
@@ -154,7 +154,7 @@
   bool isConcrete(String name) {
     var self = this;
     if (self == null) return false;
-    var element = self.element2;
+    var element = self.element;
     return element.lookUpConcreteMethod(name, element.library) != null;
   }
 }
diff --git a/pkg/analyzer/lib/src/error/null_safe_api_verifier.dart b/pkg/analyzer/lib/src/error/null_safe_api_verifier.dart
index 3336cd2..7043bd2 100644
--- a/pkg/analyzer/lib/src/error/null_safe_api_verifier.dart
+++ b/pkg/analyzer/lib/src/error/null_safe_api_verifier.dart
@@ -47,7 +47,7 @@
     final targetType = node.realTarget?.staticType;
     if (targetType is! InterfaceType) return;
 
-    final targetClass = targetType.element2;
+    final targetClass = targetType.element;
 
     if (targetClass.library.isDartAsync == true &&
         targetClass.name == 'Completer' &&
diff --git a/pkg/analyzer/lib/src/error/type_arguments_verifier.dart b/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
index 56b58ed..ce1acff 100644
--- a/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
+++ b/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
@@ -330,8 +330,8 @@
       typeParameters = alias.element.typeParameters;
       typeArguments = alias.typeArguments;
     } else if (type is InterfaceType) {
-      elementName = type.element2.name;
-      typeParameters = type.element2.typeParameters;
+      elementName = type.element.name;
+      typeParameters = type.element.typeParameters;
       typeArguments = type.typeArguments;
     } else {
       return;
diff --git a/pkg/analyzer/lib/src/generated/element_resolver.dart b/pkg/analyzer/lib/src/generated/element_resolver.dart
index 634659b..1ed66e5 100644
--- a/pkg/analyzer/lib/src/generated/element_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/element_resolver.dart
@@ -505,7 +505,7 @@
       } else if (element is TypeAliasElement) {
         var aliasedType = element.aliasedType;
         if (aliasedType is InterfaceType) {
-          return aliasedType.element2;
+          return aliasedType.element;
         }
       }
     }
diff --git a/pkg/analyzer/lib/src/generated/error_detection_helpers.dart b/pkg/analyzer/lib/src/generated/error_detection_helpers.dart
index d774a53..e3f078a 100644
--- a/pkg/analyzer/lib/src/generated/error_detection_helpers.dart
+++ b/pkg/analyzer/lib/src/generated/error_detection_helpers.dart
@@ -237,7 +237,7 @@
         type is InterfaceType &&
         type.nullabilitySuffix != NullabilitySuffix.question) {
       return type.lookUpMethod2(
-          FunctionElement.CALL_METHOD_NAME, type.element2.library);
+          FunctionElement.CALL_METHOD_NAME, type.element.library);
     } else {
       return null;
     }
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index c4a00c0..5ff0860 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -282,7 +282,7 @@
   /// The language team is thinking about adding abstract fields, or external
   /// fields. But for now we will ignore such fields in `Struct` subtypes.
   bool get _isEnclosingClassFfiStruct {
-    var superClass = _enclosingClass?.supertype?.element2;
+    var superClass = _enclosingClass?.supertype?.element;
     return superClass != null &&
         superClass.library.name == 'dart.ffi' &&
         superClass.name == 'Struct';
@@ -291,7 +291,7 @@
   /// The language team is thinking about adding abstract fields, or external
   /// fields. But for now we will ignore such fields in `Struct` subtypes.
   bool get _isEnclosingClassFfiUnion {
-    var superClass = _enclosingClass?.supertype?.element2;
+    var superClass = _enclosingClass?.supertype?.element;
     return superClass != null &&
         superClass.library.name == 'dart.ffi' &&
         superClass.name == 'Union';
@@ -1459,7 +1459,7 @@
             mixinName, CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS)) {
           problemReported = true;
         } else {
-          final mixinElement = mixinType.element2;
+          final mixinElement = mixinType.element;
           if (_checkForExtendsOrImplementsDeferredClass(
               mixinName, CompileTimeErrorCode.MIXIN_DEFERRED_CLASS)) {
             problemReported = true;
@@ -2039,7 +2039,7 @@
         redirectingInitializerCount == 0 &&
         superInitializerCount == 1 &&
         superInitializer != declaration.initializers.last) {
-      var superNamedType = enclosingClass.supertype!.element2.displayName;
+      var superNamedType = enclosingClass.supertype!.element.displayName;
       var constructorStrName = superNamedType;
       var constructorName = superInitializer.constructorName;
       if (constructorName != null) {
@@ -2076,7 +2076,7 @@
     // check for mixins
     var instanceFields = <FieldElement>[];
     for (var mixin in enclosingClass.mixins) {
-      instanceFields.addAll(mixin.element2.fields.where((field) {
+      instanceFields.addAll(mixin.element.fields.where((field) {
         if (field.isStatic) {
           return false;
         }
@@ -2138,7 +2138,7 @@
     if (supertype.isDartCoreObject) {
       return false;
     }
-    var unnamedConstructor = supertype.element2.unnamedConstructor;
+    var unnamedConstructor = supertype.element.unnamedConstructor;
     if (unnamedConstructor == null || unnamedConstructor.isConst) {
       return false;
     }
@@ -2207,7 +2207,7 @@
       InstanceCreationExpression expression,
       NamedType namedType,
       InterfaceType type) {
-    final element = type.element2;
+    final element = type.element;
     if (element is! MixinElement &&
         element is ClassElement &&
         element.isAbstract) {
@@ -2229,7 +2229,7 @@
   /// Verify that the given [expression] is not a mixin instantiation.
   void _checkForConstOrNewWithMixin(InstanceCreationExpression expression,
       NamedType namedType, InterfaceType type) {
-    if (type.element2 is MixinElement) {
+    if (type.element is MixinElement) {
       errorReporter.reportErrorForNode(
           CompileTimeErrorCode.MIXIN_INSTANTIATE, namedType);
     }
@@ -2275,7 +2275,7 @@
     }
     DartType type = namedType.typeOrThrow;
     if (type is InterfaceType) {
-      if (type.element2 is EnumElement) {
+      if (type.element is EnumElement) {
         // We have already reported the error.
         return;
       }
@@ -2634,7 +2634,7 @@
     }
     var type = namedType.type;
     return type is InterfaceType &&
-        _typeProvider.isNonSubtypableClass(type.element2);
+        _typeProvider.isNonSubtypableClass(type.element);
   }
 
   void _checkForExtensionDeclaresMemberOfObject(MethodDeclaration node) {
@@ -3302,7 +3302,7 @@
 
     var hasCaseNull = false;
     if (expressionType is InterfaceType) {
-      var enumElement = expressionType.element2;
+      var enumElement = expressionType.element;
       if (enumElement is EnumElement) {
         var constantNames = enumElement.fields
             .where((field) => field.isEnumConstant)
@@ -3521,7 +3521,7 @@
         }
         names[name] = namedType.name.name;
         var inheritedMember = _inheritanceManager.getMember2(
-          declaredSupertype.element2,
+          declaredSupertype.element,
           Name(library.source.uri, name),
           concrete: true,
         );
@@ -3545,7 +3545,7 @@
     for (NamedType mixinType in withClause.mixinTypes) {
       DartType type = mixinType.typeOrThrow;
       if (type is InterfaceType) {
-        LibraryElement library = type.element2.library;
+        LibraryElement library = type.element.library;
         if (library != _currentLibrary) {
           for (PropertyAccessorElement accessor in type.accessors) {
             if (accessor.isStatic) {
@@ -3596,7 +3596,7 @@
     }
     DartType type = namedType.typeOrThrow;
     if (type is InterfaceType) {
-      final element = type.element2;
+      final element = type.element;
       if (element is EnumElement || element is MixinElement) {
         // We have already reported the error.
         return;
@@ -3636,7 +3636,7 @@
     if (superType == null) {
       return;
     }
-    final superElement = superType.element2;
+    final superElement = superType.element;
     // try to find default generative super constructor
     var superUnnamedConstructor = superElement.unnamedConstructor;
     superUnnamedConstructor = superUnnamedConstructor != null
@@ -3658,7 +3658,7 @@
       }
     }
 
-    if (!_typeProvider.isNonSubtypableClass(superType.element2)) {
+    if (!_typeProvider.isNonSubtypableClass(superType.element)) {
       // Don't report this diagnostic for non-subtypable classes because the
       // real problem was already reported.
       errorReporter.reportErrorForToken(
@@ -3679,7 +3679,7 @@
       // subclass has only factory constructors.
       return false;
     }
-    final superElement = superType.element2;
+    final superElement = superType.element;
     if (superElement.constructors.isEmpty) {
       // Exclude empty constructor set, which indicates other errors occurred.
       return false;
@@ -4124,11 +4124,11 @@
       if (!detectedRepeatOnIndex[i]) {
         var type = namedTypes[i].type;
         if (type is InterfaceType) {
-          var element = type.element2;
+          var element = type.element;
           for (int j = i + 1; j < count; j++) {
             var otherNode = namedTypes[j];
             var otherType = otherNode.type;
-            if (otherType is InterfaceType && otherType.element2 == element) {
+            if (otherType is InterfaceType && otherType.element == element) {
               detectedRepeatOnIndex[j] = true;
               errorReporter
                   .reportErrorForNode(errorCode, otherNode, [element.name]);
@@ -4381,7 +4381,7 @@
     if (superType == null) {
       return;
     }
-    final superElement = superType.element2;
+    final superElement = superType.element;
 
     if (superElement.constructors
         .every((constructor) => constructor.isFactory)) {
@@ -4910,14 +4910,14 @@
       return;
     }
 
-    var superElement = _enclosingClass!.supertype?.element2;
+    var superElement = _enclosingClass!.supertype?.element;
     if (superElement == null) {
       return;
     }
 
     for (var interfaceNode in implementsClause.interfaces) {
       var type = interfaceNode.type;
-      if (type is InterfaceType && type.element2 == superElement) {
+      if (type is InterfaceType && type.element == superElement) {
         errorReporter.reportErrorForNode(
           CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS,
           interfaceNode,
@@ -4957,14 +4957,14 @@
       return;
     }
 
-    var superElement = _enclosingClass!.supertype?.element2;
+    var superElement = _enclosingClass!.supertype?.element;
     if (superElement == null) {
       return;
     }
 
     for (var mixinNode in withClause.mixinTypes) {
       var type = mixinNode.type;
-      if (type is InterfaceType && type.element2 == superElement) {
+      if (type is InterfaceType && type.element == superElement) {
         errorReporter.reportErrorForNode(
           CompileTimeErrorCode.MIXINS_SUPER_CLASS,
           mixinNode,
diff --git a/pkg/analyzer/lib/src/generated/ffi_verifier.dart b/pkg/analyzer/lib/src/generated/ffi_verifier.dart
index 6ab5842..a1c5f19 100644
--- a/pkg/analyzer/lib/src/generated/ffi_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/ffi_verifier.dart
@@ -156,7 +156,7 @@
       if (implementsClause != null) {
         final compoundType = node.declaredElement!.thisType;
         final structType = compoundType.superclass!;
-        final ffiLibrary = structType.element2.library;
+        final ffiLibrary = structType.element.library;
         final finalizableElement = ffiLibrary.getClass(_finalizableClassName)!;
         final finalizableType = finalizableElement.thisType;
         if (typeSystem.isSubtypeOf(compoundType, finalizableType)) {
@@ -428,7 +428,7 @@
           'NativeFieldWrapperClass1') {
         return true;
       }
-      final element = type.element2;
+      final element = type.element;
       type = element.supertype;
     }
     return false;
@@ -540,7 +540,7 @@
       }
       if (nativeType.isCompoundSubtype) {
         if (!allowEmptyStruct) {
-          if (nativeType.element2.isEmptyStruct) {
+          if (nativeType.element.isEmptyStruct) {
             // TODO(dartbug.com/36780): This results in an error message not
             // mentioning empty structs at all.
             return false;
@@ -587,7 +587,7 @@
 
   _PrimitiveDartType _primitiveNativeType(DartType nativeType) {
     if (nativeType is InterfaceType) {
-      final element = nativeType.element2;
+      final element = nativeType.element;
       if (element.isFfiClass) {
         final String name = element.name;
         if (_primitiveIntegerNativeTypes.contains(name)) {
@@ -673,7 +673,7 @@
           if (element is MapLiteralEntry) {
             final valueType = element.value.staticType;
             if (valueType is InterfaceType) {
-              final name = valueType.element2.name;
+              final name = valueType.element.name;
               if (!_primitiveIntegerNativeTypesFixedSize.contains(name)) {
                 _errorReporter.reportErrorForNode(
                   FfiCode.ABI_SPECIFIC_INTEGER_MAPPING_UNSUPPORTED,
@@ -696,7 +696,7 @@
     for (final nativeType in mappingValues.values) {
       final type = nativeType?.type;
       if (type is InterfaceType) {
-        final nativeTypeName = type.element2.name;
+        final nativeTypeName = type.element.name;
         if (!_primitiveIntegerNativeTypesFixedSize.contains(nativeTypeName)) {
           _errorReporter.reportErrorForNode(
             FfiCode.ABI_SPECIFIC_INTEGER_MAPPING_UNSUPPORTED,
@@ -883,7 +883,7 @@
     final nativeReturnType = _primitiveNativeType(nativeType);
     if (nativeReturnType == _PrimitiveDartType.int ||
         (nativeType is InterfaceType &&
-            nativeType.superclass?.element2.name ==
+            nativeType.superclass?.element.name ==
                 _abiSpecificIntegerClassName)) {
       return dartType.isDartCoreInt;
     } else if (nativeReturnType == _PrimitiveDartType.double) {
@@ -1009,7 +1009,7 @@
         final arrayDimensions = declaredType.arrayDimensions;
         _validateSizeOfAnnotation(fieldType, annotations, arrayDimensions);
       } else if (declaredType.isCompoundSubtype) {
-        final clazz = (declaredType as InterfaceType).element2;
+        final clazz = (declaredType as InterfaceType).element;
         if (clazz.isEmptyStruct) {
           _errorReporter.reportErrorForNode(FfiCode.EMPTY_STRUCT, node, [
             clazz.name,
@@ -1530,17 +1530,17 @@
 extension on DartType? {
   bool get isAbiSpecificInteger {
     final self = this;
-    return self is InterfaceType && self.element2.isAbiSpecificInteger;
+    return self is InterfaceType && self.element.isAbiSpecificInteger;
   }
 
   bool get isStruct {
     final self = this;
-    return self is InterfaceType && self.element2.isStruct;
+    return self is InterfaceType && self.element.isStruct;
   }
 
   bool get isUnion {
     final self = this;
-    return self is InterfaceType && self.element2.isUnion;
+    return self is InterfaceType && self.element.isUnion;
   }
 }
 
@@ -1549,8 +1549,8 @@
     DartType iterator = this;
     int dimensions = 0;
     while (iterator is InterfaceType &&
-        iterator.element2.name == FfiVerifier._arrayClassName &&
-        iterator.element2.isFfiClass) {
+        iterator.element.name == FfiVerifier._arrayClassName &&
+        iterator.element.isFfiClass) {
       dimensions++;
       iterator = iterator.typeArguments.single;
     }
@@ -1560,7 +1560,7 @@
   bool get isAbiSpecificInteger {
     final self = this;
     if (self is InterfaceType) {
-      final element = self.element2;
+      final element = self.element;
       final name = element.name;
       return name == FfiVerifier._abiSpecificIntegerClassName &&
           element.isFfiClass;
@@ -1573,9 +1573,9 @@
   bool get isAbiSpecificIntegerSubtype {
     final self = this;
     if (self is InterfaceType) {
-      final superType = self.element2.supertype;
+      final superType = self.element.supertype;
       if (superType != null) {
-        final superClassElement = superType.element2;
+        final superClassElement = superType.element;
         return superClassElement.name ==
                 FfiVerifier._abiSpecificIntegerClassName &&
             superClassElement.isFfiClass;
@@ -1588,7 +1588,7 @@
   bool get isArray {
     final self = this;
     if (self is InterfaceType) {
-      final element = self.element2;
+      final element = self.element;
       return element.name == FfiVerifier._arrayClassName && element.isFfiClass;
     }
     return false;
@@ -1597,7 +1597,7 @@
   bool get isCompound {
     final self = this;
     if (self is InterfaceType) {
-      final element = self.element2;
+      final element = self.element;
       final name = element.name;
       return (name == FfiVerifier._structClassName ||
               name == FfiVerifier._unionClassName) &&
@@ -1610,7 +1610,7 @@
   bool get isCompoundSubtype {
     final self = this;
     if (self is InterfaceType) {
-      final superType = self.element2.supertype;
+      final superType = self.element.supertype;
       if (superType != null) {
         return superType.isCompound;
       }
@@ -1621,7 +1621,7 @@
   bool get isHandle {
     final self = this;
     if (self is InterfaceType) {
-      final element = self.element2;
+      final element = self.element;
       return element.name == 'Handle' && element.isFfiClass;
     }
     return false;
@@ -1631,7 +1631,7 @@
   bool get isNativeFunction {
     final self = this;
     if (self is InterfaceType) {
-      final element = self.element2;
+      final element = self.element;
       return element.name == 'NativeFunction' && element.isFfiClass;
     }
     return false;
@@ -1641,7 +1641,7 @@
   bool get isNativeType {
     final self = this;
     if (self is InterfaceType) {
-      final element = self.element2;
+      final element = self.element;
       return element.name == 'NativeType' && element.isFfiClass;
     }
     return false;
@@ -1651,9 +1651,9 @@
   bool get isOpaqueSubtype {
     final self = this;
     if (self is InterfaceType) {
-      final superType = self.element2.supertype;
+      final superType = self.element.supertype;
       if (superType != null) {
-        final superClassElement = superType.element2;
+        final superClassElement = superType.element;
         return superClassElement.name == FfiVerifier._opaqueClassName &&
             superClassElement.isFfiClass;
       }
@@ -1663,7 +1663,7 @@
 
   bool get isPointer {
     final self = this;
-    return self is InterfaceType && self.element2.isPointer;
+    return self is InterfaceType && self.element.isPointer;
   }
 }
 
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index a7ab20f..c71bb61 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -4146,7 +4146,7 @@
 
   factory SwitchExhaustiveness(DartType expressionType) {
     if (expressionType is InterfaceType) {
-      var enum_ = expressionType.element2;
+      var enum_ = expressionType.element;
       if (enum_ is EnumElementImpl) {
         return SwitchExhaustiveness._(
           enum_.constants.toSet(),
diff --git a/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart b/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart
index 9ccbffa..589730e 100644
--- a/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart
+++ b/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart
@@ -269,7 +269,7 @@
       }
       _errorReporter.reportErrorForNode(
           HintCode.SDK_VERSION_ASYNC_EXPORTED_FROM_CORE, node, [element.name]);
-    } else if (checkNnbd && element == _typeProvider.neverType.element2) {
+    } else if (checkNnbd && element == _typeProvider.neverType.element) {
       _errorReporter.reportErrorForNode(HintCode.SDK_VERSION_NEVER, node);
     }
   }
diff --git a/pkg/analyzer/lib/src/summary2/bundle_reader.dart b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
index da908c4..e11a637 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
@@ -1701,7 +1701,7 @@
       var typeArguments = _readTypeList();
       var nullability = _readNullability();
       var type = InterfaceTypeImpl(
-        element2: element,
+        element: element,
         typeArguments: typeArguments,
         nullabilitySuffix: nullability,
       );
@@ -1709,7 +1709,7 @@
     } else if (tag == Tag.InterfaceType_noTypeArguments_none) {
       var element = readElement() as InterfaceElement;
       var type = InterfaceTypeImpl(
-        element2: element,
+        element: element,
         typeArguments: const <DartType>[],
         nullabilitySuffix: NullabilitySuffix.none,
       );
@@ -1717,7 +1717,7 @@
     } else if (tag == Tag.InterfaceType_noTypeArguments_question) {
       var element = readElement() as InterfaceElement;
       var type = InterfaceTypeImpl(
-        element2: element,
+        element: element,
         typeArguments: const <DartType>[],
         nullabilitySuffix: NullabilitySuffix.question,
       );
@@ -1725,7 +1725,7 @@
     } else if (tag == Tag.InterfaceType_noTypeArguments_star) {
       var element = readElement() as InterfaceElement;
       var type = InterfaceTypeImpl(
-        element2: element,
+        element: element,
         typeArguments: const <DartType>[],
         nullabilitySuffix: NullabilitySuffix.star,
       );
@@ -1741,7 +1741,7 @@
       var element = readElement() as TypeParameterElement;
       var nullability = _readNullability();
       var type = TypeParameterTypeImpl(
-        element2: element,
+        element: element,
         nullabilitySuffix: nullability,
       );
       return _readAliasElementArguments(type);
@@ -1824,7 +1824,7 @@
         );
       } else if (type is InterfaceType) {
         return InterfaceTypeImpl(
-          element2: type.element2,
+          element: type.element,
           typeArguments: type.typeArguments,
           nullabilitySuffix: type.nullabilitySuffix,
           alias: InstantiatedTypeAliasElementImpl(
@@ -1844,7 +1844,7 @@
         );
       } else if (type is TypeParameterType) {
         return TypeParameterTypeImpl(
-          element2: type.element2,
+          element: type.element,
           nullabilitySuffix: type.nullabilitySuffix,
           alias: InstantiatedTypeAliasElementImpl(
             element: aliasElement,
diff --git a/pkg/analyzer/lib/src/summary2/bundle_writer.dart b/pkg/analyzer/lib/src/summary2/bundle_writer.dart
index 93ea875..126343b 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_writer.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_writer.dart
@@ -659,11 +659,11 @@
           writeByte(Tag.InterfaceType_noTypeArguments_star);
         }
         // TODO(scheglov) Write raw
-        writeElement(type.element2);
+        writeElement(type.element);
       } else {
         writeByte(Tag.InterfaceType);
         // TODO(scheglov) Write raw
-        writeElement(type.element2);
+        writeElement(type.element);
         writeUInt30(typeArguments.length);
         for (var i = 0; i < typeArguments.length; ++i) {
           writeType(typeArguments[i]);
@@ -680,7 +680,7 @@
       _writeTypeAliasElementArguments(type);
     } else if (type is TypeParameterType) {
       writeByte(Tag.TypeParameterType);
-      writeElement(type.element2);
+      writeElement(type.element);
       _writeNullabilitySuffix(type.nullabilitySuffix);
       _writeTypeAliasElementArguments(type);
     } else if (type is VoidType) {
diff --git a/pkg/analyzer/lib/src/summary2/default_types_builder.dart b/pkg/analyzer/lib/src/summary2/default_types_builder.dart
index 6e5caf2..d37b32d 100644
--- a/pkg/analyzer/lib/src/summary2/default_types_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/default_types_builder.dart
@@ -243,13 +243,13 @@
   ) {
     var paths = <List<_CycleElement>>[];
     if (startType is NamedTypeBuilder) {
-      var declaration = startType.element2;
+      var declaration = startType.element;
       if (startType.arguments.isEmpty) {
-        if (startType.element2 == end) {
+        if (startType.element == end) {
           paths.add([
             _CycleElement(startParameter, startType),
           ]);
-        } else if (visited.add(startType.element2)) {
+        } else if (visited.add(startType.element)) {
           void recurseParameters(List<TypeParameterElement> parameters) {
             for (var parameter in parameters) {
               var parameterNode = _linker.getLinkingNode(parameter);
@@ -278,7 +278,7 @@
           } else if (declaration is TypeAliasElement) {
             recurseParameters(declaration.typeParameters);
           }
-          visited.remove(startType.element2);
+          visited.remove(startType.element);
         }
       } else {
         for (var argument in startType.arguments) {
@@ -387,7 +387,7 @@
         _collectReferencesFrom(index, argument);
       }
     } else if (type is TypeParameterType) {
-      var typeIndex = _parameterToIndex[type.element2];
+      var typeIndex = _parameterToIndex[type.element];
       if (typeIndex != null) {
         _edges[typeIndex].add(index);
       }
@@ -440,9 +440,9 @@
   @override
   DartType? visitTypeParameterType(TypeParameterType type) {
     if (_variance == Variance.contravariant) {
-      return _lower[type.element2];
+      return _lower[type.element];
     } else {
-      return _upper[type.element2];
+      return _upper[type.element];
     }
   }
 }
diff --git a/pkg/analyzer/lib/src/summary2/macro_application.dart b/pkg/analyzer/lib/src/summary2/macro_application.dart
index 377dfb7..40ca9ad 100644
--- a/pkg/analyzer/lib/src/summary2/macro_application.dart
+++ b/pkg/analyzer/lib/src/summary2/macro_application.dart
@@ -305,7 +305,7 @@
         final variableType = variable.type;
         if (variable is ConstTopLevelVariableElementImpl &&
             variableType is InterfaceType) {
-          final macroClass = variableType.element2;
+          final macroClass = variableType.element;
           final initializer = variable.constantInitializer;
           if (macroClass is ClassElementImpl &&
               macroClass.isMacro &&
diff --git a/pkg/analyzer/lib/src/summary2/macro_declarations.dart b/pkg/analyzer/lib/src/summary2/macro_declarations.dart
index a8c9cd8..2a123a3 100644
--- a/pkg/analyzer/lib/src/summary2/macro_declarations.dart
+++ b/pkg/analyzer/lib/src/summary2/macro_declarations.dart
@@ -98,14 +98,14 @@
       return macro.NamedTypeAnnotationImpl(
         id: macro.RemoteInstance.uniqueId,
         isNullable: type.nullabilitySuffix == NullabilitySuffix.question,
-        identifier: identifier(type.element2),
+        identifier: identifier(type.element),
         typeArguments: type.typeArguments.map(_dartType).toList(),
       );
     } else if (type is TypeParameterType) {
       return macro.NamedTypeAnnotationImpl(
         id: macro.RemoteInstance.uniqueId,
         isNullable: type.nullabilitySuffix == NullabilitySuffix.question,
-        identifier: identifier(type.element2),
+        identifier: identifier(type.element),
         typeArguments: const [],
       );
     } else {
diff --git a/pkg/analyzer/lib/src/summary2/named_type_builder.dart b/pkg/analyzer/lib/src/summary2/named_type_builder.dart
index 28836a0..722a9c1 100644
--- a/pkg/analyzer/lib/src/summary2/named_type_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/named_type_builder.dart
@@ -30,7 +30,7 @@
   final TypeSystemImpl typeSystem;
 
   @override
-  final Element element2;
+  final Element element;
 
   final List<DartType> arguments;
 
@@ -48,7 +48,7 @@
   /// and set for the [node].
   DartType? _type;
 
-  NamedTypeBuilder(this.linker, this.typeSystem, this.element2, this.arguments,
+  NamedTypeBuilder(this.linker, this.typeSystem, this.element, this.arguments,
       this.nullabilitySuffix,
       {this.node});
 
@@ -74,7 +74,7 @@
 
   /// TODO(scheglov) Only when enabled both in the element, and target?
   bool get _isNonFunctionTypeAliasesEnabled {
-    return element2.library!.featureSet.isEnabled(
+    return element.library!.featureSet.isEnabled(
       Feature.nonfunction_type_aliases,
     );
   }
@@ -96,7 +96,7 @@
     }
 
     // ignore: unnecessary_this
-    final element = this.element2;
+    final element = this.element;
     if (element is InterfaceElement) {
       var parameters = element.typeParameters;
       var arguments = _buildArguments(parameters);
@@ -125,7 +125,7 @@
       }
     } else if (element is TypeParameterElement) {
       _type = TypeParameterTypeImpl(
-        element2: element,
+        element: element,
         nullabilitySuffix: nullabilitySuffix,
       );
     } else {
@@ -139,7 +139,7 @@
   @override
   String toString() {
     var buffer = StringBuffer();
-    buffer.write(element2.displayName);
+    buffer.write(element.displayName);
     if (arguments.isNotEmpty) {
       buffer.write('<');
       buffer.write(arguments.join(', '));
@@ -155,7 +155,7 @@
     }
 
     return NamedTypeBuilder(
-        linker, typeSystem, element2, arguments, nullabilitySuffix,
+        linker, typeSystem, element, arguments, nullabilitySuffix,
         node: node);
   }
 
diff --git a/pkg/analyzer/lib/src/summary2/reference_resolver.dart b/pkg/analyzer/lib/src/summary2/reference_resolver.dart
index b8333bb..76bc1ef 100644
--- a/pkg/analyzer/lib/src/summary2/reference_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/reference_resolver.dart
@@ -367,7 +367,7 @@
       node.type = DynamicTypeImpl.instance;
     } else if (element is TypeParameterElement) {
       node.type = TypeParameterTypeImpl(
-        element2: element,
+        element: element,
         nullabilitySuffix: nullabilitySuffix,
       );
     } else {
diff --git a/pkg/analyzer/lib/src/summary2/top_level_inference.dart b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
index f40a23c..0d0c076 100644
--- a/pkg/analyzer/lib/src/summary2/top_level_inference.dart
+++ b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
@@ -179,7 +179,7 @@
       var superType = classElement.supertype;
       if (superType != null) {
         var index = classElement.constructors.indexOf(_constructor);
-        var superConstructors = superType.element2.constructors
+        var superConstructors = superType.element.constructors
             .where((element) => element.isAccessibleIn2(classElement.library))
             .toList();
         if (index < superConstructors.length) {
diff --git a/pkg/analyzer/lib/src/summary2/types_builder.dart b/pkg/analyzer/lib/src/summary2/types_builder.dart
index db708c2..044a7c5 100644
--- a/pkg/analyzer/lib/src/summary2/types_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/types_builder.dart
@@ -19,7 +19,7 @@
 
 /// Return `true` if [type] can be used as a class.
 bool _isInterfaceTypeClass(InterfaceType type) {
-  if (type.element2 is MixinElement) {
+  if (type.element is MixinElement) {
     return false;
   }
   return _isInterfaceTypeInterface(type);
@@ -27,7 +27,7 @@
 
 /// Return `true` if [type] can be used as an interface or a mixin.
 bool _isInterfaceTypeInterface(InterfaceType type) {
-  if (type.element2 is EnumElement) {
+  if (type.element is EnumElement) {
     return false;
   }
   if (type.isDartCoreFunction || type.isDartCoreNull) {
@@ -397,7 +397,7 @@
     List<InterfaceType> interfaceTypes,
   ) {
     for (var interfaceType in interfaceTypes) {
-      if (interfaceType.element2 == element) return interfaceType;
+      if (interfaceType.element == element) return interfaceType;
     }
     return null;
   }
@@ -409,7 +409,7 @@
     var result = <InterfaceType>[];
     for (var constraint in constraints) {
       var interfaceType = _findInterfaceTypeForElement(
-        constraint.element2,
+        constraint.element,
         interfaceTypes,
       );
 
diff --git a/pkg/analyzer/lib/src/summary2/variance_builder.dart b/pkg/analyzer/lib/src/summary2/variance_builder.dart
index 4bed065..803a3b3 100644
--- a/pkg/analyzer/lib/src/summary2/variance_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/variance_builder.dart
@@ -57,13 +57,13 @@
 
   Variance _compute(TypeParameterElement variable, DartType? type) {
     if (type is TypeParameterType) {
-      if (type.element2 == variable) {
+      if (type.element == variable) {
         return Variance.covariant;
       } else {
         return Variance.unrelated;
       }
     } else if (type is NamedTypeBuilder) {
-      var element = type.element2;
+      var element = type.element;
       var arguments = type.arguments;
       if (element is InterfaceElement) {
         var result = Variance.unrelated;
diff --git a/pkg/analyzer/lib/src/task/strong/checker.dart b/pkg/analyzer/lib/src/task/strong/checker.dart
index 47e2661..2511b49 100644
--- a/pkg/analyzer/lib/src/task/strong/checker.dart
+++ b/pkg/analyzer/lib/src/task/strong/checker.dart
@@ -579,7 +579,7 @@
       } else {
         // Future<T> -> FutureOr<T>
         var typeArg = (type is InterfaceType &&
-                type.element2 == _typeProvider.futureElement)
+                type.element == _typeProvider.futureElement)
             ? type.typeArguments[0]
             : _typeProvider.dynamicType;
         return _typeProvider.futureOrType(typeArg);
@@ -608,7 +608,7 @@
     }
     if (type.isDynamic) {
       return type;
-    } else if (type is InterfaceType && type.element2 == expectedElement) {
+    } else if (type is InterfaceType && type.element == expectedElement) {
       return type.typeArguments[0];
     } else {
       // Malformed type - fallback on analyzer error.
diff --git a/pkg/analyzer/lib/src/task/strong_mode.dart b/pkg/analyzer/lib/src/task/strong_mode.dart
index 93f68d9..034d0cf 100644
--- a/pkg/analyzer/lib/src/task/strong_mode.dart
+++ b/pkg/analyzer/lib/src/task/strong_mode.dart
@@ -504,7 +504,7 @@
   /// interface [type].
   void _inferType(InterfaceType? type) {
     if (type != null) {
-      _inferClass(type.element2);
+      _inferClass(type.element);
     }
   }
 
diff --git a/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart b/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart
index 5a10a24..0d1c6fd 100644
--- a/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart
+++ b/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart
@@ -1075,7 +1075,7 @@
     List<DartType> typeArguments = const [],
   }) {
     return InterfaceTypeImpl(
-      element2: element,
+      element: element,
       typeArguments: typeArguments,
       nullabilitySuffix: NullabilitySuffix.none,
     );
@@ -1151,7 +1151,7 @@
 
   TypeParameterType _typeParameterType(TypeParameterElement element) {
     return TypeParameterTypeImpl(
-      element2: element,
+      element: element,
       nullabilitySuffix: NullabilitySuffix.none,
     );
   }
diff --git a/pkg/analyzer/test/error/error_reporter_test.dart b/pkg/analyzer/test/error/error_reporter_test.dart
index 5777af9..d83df43 100644
--- a/pkg/analyzer/test/error/error_reporter_test.dart
+++ b/pkg/analyzer/test/error/error_reporter_test.dart
@@ -97,7 +97,7 @@
 
     var reporter = ErrorReporter(
       listener,
-      firstType.element2.source,
+      firstType.element.source,
       isNonNullableByDefault: false,
     );
 
@@ -136,7 +136,7 @@
 
     var reporter = ErrorReporter(
       listener,
-      firstType.element2.source,
+      firstType.element.source,
       isNonNullableByDefault: false,
     );
     reporter.reportErrorForNode(
diff --git a/pkg/analyzer/test/generated/elements_types_mixin.dart b/pkg/analyzer/test/generated/elements_types_mixin.dart
index 1f0bca7..ad51e60 100644
--- a/pkg/analyzer/test/generated/elements_types_mixin.dart
+++ b/pkg/analyzer/test/generated/elements_types_mixin.dart
@@ -33,17 +33,17 @@
   }
 
   InterfaceType get doubleNone {
-    var element = typeProvider.doubleType.element2;
+    var element = typeProvider.doubleType.element;
     return interfaceTypeNone(element);
   }
 
   InterfaceType get doubleQuestion {
-    var element = typeProvider.doubleType.element2;
+    var element = typeProvider.doubleType.element;
     return interfaceTypeQuestion(element);
   }
 
   InterfaceType get doubleStar {
-    var element = typeProvider.doubleType.element2;
+    var element = typeProvider.doubleType.element;
     return interfaceTypeStar(element);
   }
 
@@ -52,32 +52,32 @@
   DynamicTypeImpl get dynamicType => DynamicTypeImpl.instance;
 
   InterfaceType get functionNone {
-    var element = typeProvider.functionType.element2;
+    var element = typeProvider.functionType.element;
     return interfaceTypeNone(element);
   }
 
   InterfaceType get functionQuestion {
-    var element = typeProvider.functionType.element2;
+    var element = typeProvider.functionType.element;
     return interfaceTypeQuestion(element);
   }
 
   InterfaceType get functionStar {
-    var element = typeProvider.functionType.element2;
+    var element = typeProvider.functionType.element;
     return interfaceTypeStar(element);
   }
 
   InterfaceType get intNone {
-    var element = typeProvider.intType.element2;
+    var element = typeProvider.intType.element;
     return interfaceTypeNone(element);
   }
 
   InterfaceType get intQuestion {
-    var element = typeProvider.intType.element2;
+    var element = typeProvider.intType.element;
     return interfaceTypeQuestion(element);
   }
 
   InterfaceType get intStar {
-    var element = typeProvider.intType.element2;
+    var element = typeProvider.intType.element;
     return interfaceTypeStar(element);
   }
 
@@ -88,47 +88,47 @@
   NeverTypeImpl get neverStar => NeverTypeImpl.instanceLegacy;
 
   InterfaceTypeImpl get nullNone {
-    var element = typeProvider.nullType.element2;
+    var element = typeProvider.nullType.element;
     return interfaceTypeNone(element) as InterfaceTypeImpl;
   }
 
   InterfaceTypeImpl get nullQuestion {
-    var element = typeProvider.nullType.element2;
+    var element = typeProvider.nullType.element;
     return interfaceTypeQuestion(element) as InterfaceTypeImpl;
   }
 
   InterfaceTypeImpl get nullStar {
-    var element = typeProvider.nullType.element2;
+    var element = typeProvider.nullType.element;
     return interfaceTypeStar(element) as InterfaceTypeImpl;
   }
 
   InterfaceType get numNone {
-    var element = typeProvider.numType.element2;
+    var element = typeProvider.numType.element;
     return interfaceTypeNone(element);
   }
 
   InterfaceType get numQuestion {
-    var element = typeProvider.numType.element2;
+    var element = typeProvider.numType.element;
     return interfaceTypeQuestion(element);
   }
 
   InterfaceType get numStar {
-    var element = typeProvider.numType.element2;
+    var element = typeProvider.numType.element;
     return interfaceTypeStar(element);
   }
 
   InterfaceType get objectNone {
-    var element = typeProvider.objectType.element2;
+    var element = typeProvider.objectType.element;
     return interfaceTypeNone(element);
   }
 
   InterfaceType get objectQuestion {
-    var element = typeProvider.objectType.element2;
+    var element = typeProvider.objectType.element;
     return interfaceTypeQuestion(element);
   }
 
   InterfaceType get objectStar {
-    var element = typeProvider.objectType.element2;
+    var element = typeProvider.objectType.element;
     return interfaceTypeStar(element);
   }
 
@@ -138,17 +138,17 @@
   }
 
   InterfaceType get stringNone {
-    var element = typeProvider.stringType.element2;
+    var element = typeProvider.stringType.element;
     return interfaceTypeNone(element);
   }
 
   InterfaceType get stringQuestion {
-    var element = typeProvider.stringType.element2;
+    var element = typeProvider.stringType.element;
     return interfaceTypeQuestion(element);
   }
 
   InterfaceType get stringStar {
-    var element = typeProvider.stringType.element2;
+    var element = typeProvider.stringType.element;
     return interfaceTypeStar(element);
   }
 
@@ -520,7 +520,7 @@
     required DartType promotedBound,
   }) {
     return TypeParameterTypeImpl(
-      element2: element,
+      element: element,
       nullabilitySuffix: nullabilitySuffix,
       promotedBound: promotedBound,
     );
@@ -664,7 +664,7 @@
     DartType? promotedBound,
   }) {
     return TypeParameterTypeImpl(
-      element2: element,
+      element: element,
       nullabilitySuffix: nullabilitySuffix,
       promotedBound: promotedBound,
     );
diff --git a/pkg/analyzer/test/generated/strong_mode_test.dart b/pkg/analyzer/test/generated/strong_mode_test.dart
index 3f85ffa..2dc19b0 100644
--- a/pkg/analyzer/test/generated/strong_mode_test.dart
+++ b/pkg/analyzer/test/generated/strong_mode_test.dart
@@ -372,7 +372,7 @@
     ClassElement elementB = AstFinder.getClass(unit, "B").declaredElement!;
     ClassElement elementA = AstFinder.getClass(unit, "A").declaredElement!;
     final type = exp.constructorName.type.typeOrThrow as InterfaceType;
-    expect(type.element2, elementB);
+    expect(type.element, elementB);
     _isInstantiationOf(_hasElement(elementB))([
       _isType(elementA.typeParameters[0]
           .instantiate(nullabilitySuffix: NullabilitySuffix.star))
diff --git a/pkg/analyzer/test/generated/type_system_test.dart b/pkg/analyzer/test/generated/type_system_test.dart
index dcce53d..d326f62 100644
--- a/pkg/analyzer/test/generated/type_system_test.dart
+++ b/pkg/analyzer/test/generated/type_system_test.dart
@@ -430,7 +430,7 @@
       NullabilitySuffix nullability,
       DartType promotedBound,
     ) {
-      expect(type.element2, element);
+      expect(type.element, element);
       expect(type.nullabilitySuffix, nullability);
       expect(type.promotedBound, promotedBound);
     }
diff --git a/pkg/analyzer/test/id_tests/inheritance_test.dart b/pkg/analyzer/test/id_tests/inheritance_test.dart
index 6abbf99..b73730d 100644
--- a/pkg/analyzer/test/id_tests/inheritance_test.dart
+++ b/pkg/analyzer/test/id_tests/inheritance_test.dart
@@ -36,7 +36,7 @@
 
 String supertypeToString(InterfaceType type) {
   var sb = StringBuffer();
-  sb.write(type.element2.name);
+  sb.write(type.element.name);
   if (type.typeArguments.isNotEmpty) {
     sb.write('<');
     var comma = '';
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
index 27c658b..790882d 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
@@ -743,7 +743,7 @@
       expect(target.staticType, typeProvider.numType);
 
       var intName = asExpression.type as NamedType;
-      expect(intName.name.staticElement, typeProvider.intType.element2);
+      expect(intName.name.staticElement, typeProvider.intType.element);
       expect(intName.name.staticType, isNull);
     }
   }
@@ -1972,7 +1972,7 @@
     var fType = findElement.localVar('f').type as FunctionType;
     var fTypeTypeParameter = fType.typeFormals[0];
     var fTypeParameter = fType.normalParameterTypes[0] as TypeParameterType;
-    expect(fTypeParameter.element2, same(fTypeTypeParameter));
+    expect(fTypeParameter.element, same(fTypeTypeParameter));
     var tRef = findNode.typeParameter('T>');
     var functionTypeNode = tRef.parent!.parent as GenericFunctionType;
     var functionType = functionTypeNode.type as FunctionType;
@@ -3845,7 +3845,7 @@
     expect(target.staticType, dynamicType);
 
     var numName = isExpression.type as NamedType;
-    expect(numName.name.staticElement, typeProvider.numType.element2);
+    expect(numName.name.staticElement, typeProvider.numType.element);
     expect(numName.name.staticType, isNull);
   }
 
@@ -3865,7 +3865,7 @@
     expect(target.staticType, dynamicType);
 
     var numName = isExpression.type as NamedType;
-    expect(numName.name.staticElement, typeProvider.numType.element2);
+    expect(numName.name.staticElement, typeProvider.numType.element);
     expect(numName.name.staticType, isNull);
   }
 
@@ -3970,7 +3970,7 @@
     assertType(fElement.type, fTypeString);
 
     var fReturnTypeNode = fNode.returnType as NamedType;
-    expect(fReturnTypeNode.name.staticElement, same(doubleType.element2));
+    expect(fReturnTypeNode.name.staticElement, same(doubleType.element));
     expect(fReturnTypeNode.type, doubleType);
 
     expect(fExpression.declaredElement, same(fElement));
@@ -4121,8 +4121,8 @@
     var tElement = fElement.typeParameters[0];
     var uElement = fElement.typeParameters[1];
     var vElement = fElement.typeParameters[2];
-    expect((tElement.bound as TypeParameterType).element2, same(uElement));
-    expect((vElement.bound as TypeParameterType).element2, same(uElement));
+    expect((tElement.bound as TypeParameterType).element, same(uElement));
+    expect((vElement.bound as TypeParameterType).element, same(uElement));
   }
 
   test_local_function_generic_with_named_parameter() async {
@@ -4141,7 +4141,7 @@
     assertType(fElement.type, 'void Function<T>({T x})');
     var tElement = fElement.typeParameters[0];
     expect(fElement.type.typeFormals[0], same(tElement));
-    expect((fElement.type.parameters[0].type as TypeParameterType).element2,
+    expect((fElement.type.parameters[0].type as TypeParameterType).element,
         same(tElement));
   }
 
@@ -4161,7 +4161,7 @@
     assertType(fElement.type, 'void Function<T>([T])');
     var tElement = fElement.typeParameters[0];
     expect(fElement.type.typeFormals[0], same(tElement));
-    expect((fElement.type.parameters[0].type as TypeParameterType).element2,
+    expect((fElement.type.parameters[0].type as TypeParameterType).element,
         same(tElement));
   }
 
@@ -4187,7 +4187,7 @@
     assertType(fElement.type, fTypeString);
 
     var fReturnTypeNode = fNode.returnType as NamedType;
-    expect(fReturnTypeNode.name.staticElement, same(doubleType.element2));
+    expect(fReturnTypeNode.name.staticElement, same(doubleType.element));
     expect(fReturnTypeNode.type, doubleType);
 
     expect(fExpression.declaredElement, same(fElement));
@@ -4273,7 +4273,7 @@
     assertType(fElement.type, fTypeString);
 
     var fReturnTypeNode = fNode.returnType as NamedType;
-    expect(fReturnTypeNode.name.staticElement, same(doubleType.element2));
+    expect(fReturnTypeNode.name.staticElement, same(doubleType.element));
     expect(fReturnTypeNode.type, doubleType);
 
     expect(fExpression.declaredElement, same(fElement));
@@ -4478,7 +4478,7 @@
     var gTypeType = gType.type as FunctionType;
     var gTypeParameterType =
         gTypeType.namedParameterTypes['t'] as TypeParameterType;
-    expect(gTypeParameterType.element2, same(tElement));
+    expect(gTypeParameterType.element, same(tElement));
     var gParameterType =
         ((gType.parameters.parameters[0] as DefaultFormalParameter).parameter
                 as SimpleFormalParameter)
@@ -4510,7 +4510,7 @@
     var gTypeType = gType.type as FunctionType;
     var gTypeParameterType =
         gTypeType.normalParameterTypes[0] as TypeParameterType;
-    expect(gTypeParameterType.element2, same(tElement));
+    expect(gTypeParameterType.element, same(tElement));
     var gParameterType =
         (gType.parameters.parameters[0] as SimpleFormalParameter).type
             as NamedType;
@@ -4541,7 +4541,7 @@
     var gTypeType = gType.type as FunctionType;
     var gTypeParameterType =
         gTypeType.optionalParameterTypes[0] as TypeParameterType;
-    expect(gTypeParameterType.element2, same(tElement));
+    expect(gTypeParameterType.element, same(tElement));
     var gParameterType =
         ((gType.parameters.parameters[0] as DefaultFormalParameter).parameter
                 as SimpleFormalParameter)
@@ -4572,7 +4572,7 @@
     var gType = gDeclaration.variables.type as GenericFunctionType;
     var gTypeType = gType.type as FunctionType;
     var gTypeReturnType = gTypeType.returnType as TypeParameterType;
-    expect(gTypeReturnType.element2, same(tElement));
+    expect(gTypeReturnType.element, same(tElement));
     var gReturnType = gType.returnType as NamedType;
     var tReference = gReturnType.name;
     assertElement(tReference, tElement);
@@ -4600,7 +4600,7 @@
     var yType = yDeclaration.variables.type as NamedType;
     var yTypeType = yType.type as InterfaceType;
     var yTypeTypeArgument = yTypeType.typeArguments[0] as TypeParameterType;
-    expect(yTypeTypeArgument.element2, same(tElement));
+    expect(yTypeTypeArgument.element, same(tElement));
     var yElementType = yType.typeArguments!.arguments[0] as NamedType;
     var tReference = yElementType.name;
     assertElement(tReference, tElement);
@@ -4650,7 +4650,7 @@
 
     var gTypeParameterType =
         gTypeType.namedParameterTypes['u'] as TypeParameterType;
-    expect(gTypeParameterType.element2, same(tElement));
+    expect(gTypeParameterType.element, same(tElement));
 
     var gArgumentType = gType.typeArguments!.arguments[0] as NamedType;
     var tReference = gArgumentType.name;
@@ -4677,7 +4677,7 @@
 
     var gTypeParameterType =
         gTypeType.normalParameterTypes[0] as TypeParameterType;
-    expect(gTypeParameterType.element2, same(tElement));
+    expect(gTypeParameterType.element, same(tElement));
 
     var gArgumentType = gType.typeArguments!.arguments[0] as NamedType;
     var tReference = gArgumentType.name;
@@ -4704,7 +4704,7 @@
 
     var gTypeParameterType =
         gTypeType.optionalParameterTypes[0] as TypeParameterType;
-    expect(gTypeParameterType.element2, same(tElement));
+    expect(gTypeParameterType.element, same(tElement));
 
     var gArgumentType = gType.typeArguments!.arguments[0] as NamedType;
     var tReference = gArgumentType.name;
@@ -4730,7 +4730,7 @@
     var gTypeType = gType.type as FunctionType;
 
     var gTypeReturnType = gTypeType.returnType as TypeParameterType;
-    expect(gTypeReturnType.element2, same(tElement));
+    expect(gTypeReturnType.element, same(tElement));
 
     var gArgumentType = gType.typeArguments!.arguments[0] as NamedType;
     var tReference = gArgumentType.name;
@@ -4935,7 +4935,7 @@
     expect(vNamedType.type, typeProvider.numType);
 
     var vTypeIdentifier = vNamedType.name as SimpleIdentifier;
-    expect(vTypeIdentifier.staticElement, typeProvider.numType.element2);
+    expect(vTypeIdentifier.staticElement, typeProvider.numType.element);
     expect(vTypeIdentifier.staticType, isNull);
 
     var statement = forBlock.statements[0] as ExpressionStatement;
@@ -5103,7 +5103,7 @@
     assertType(methodElement.type, fTypeString);
 
     var fReturnTypeNode = methodDeclaration.returnType as NamedType;
-    expect(fReturnTypeNode.name.staticElement, same(doubleType.element2));
+    expect(fReturnTypeNode.name.staticElement, same(doubleType.element));
     expect(fReturnTypeNode.type, doubleType);
     //
     // Validate the parameters at the declaration site.
@@ -5520,7 +5520,7 @@
     assertInvokeType(fooInvocation, 'T Function(C<T>)');
     assertType(fooInvocation.staticType, 'T');
     final type = fooInvocation.typeOrThrow as TypeParameterType;
-    expect(type.element2, same(tElement));
+    expect(type.element, same(tElement));
   }
 
   test_methodInvocation_topLevelFunction() async {
@@ -5581,14 +5581,14 @@
         var typeArgument = typeArguments[0] as NamedType;
         InterfaceType boolType = typeProvider.boolType;
         expect(typeArgument.type, boolType);
-        expect(typeArgument.name.staticElement, boolType.element2);
+        expect(typeArgument.name.staticElement, boolType.element);
         expect(typeArgument.name.staticType, boolType);
       }
       {
         var typeArgument = typeArguments[1] as NamedType;
         InterfaceType stringType = typeProvider.stringType;
         expect(typeArgument.type, stringType);
-        expect(typeArgument.name.staticElement, stringType.element2);
+        expect(typeArgument.name.staticElement, stringType.element);
         expect(typeArgument.name.staticType, stringType);
       }
 
@@ -7011,8 +7011,8 @@
 
     InterfaceType doubleType = typeProvider.doubleType;
     InterfaceType intType = typeProvider.intType;
-    final doubleElement = doubleType.element2;
-    final intElement = intType.element2;
+    final doubleElement = doubleType.element;
+    final intElement = intType.element;
 
     var cNode = result.unit.declarations[0] as ClassDeclaration;
     ClassElement cElement = cNode.declaredElement!;
@@ -7110,8 +7110,8 @@
 
     InterfaceType doubleType = typeProvider.doubleType;
     InterfaceType intType = typeProvider.intType;
-    final doubleElement = doubleType.element2;
-    final intElement = intType.element2;
+    final doubleElement = doubleType.element;
+    final intElement = intType.element;
 
     // topFunction()
     {
@@ -7355,7 +7355,7 @@
     assertType(fElement.type, fTypeString);
 
     var fReturnTypeNode = fDeclaration.returnType as NamedType;
-    expect(fReturnTypeNode.name.staticElement, same(doubleType.element2));
+    expect(fReturnTypeNode.name.staticElement, same(doubleType.element));
     expect(fReturnTypeNode.type, doubleType);
     //
     // Validate the parameters at the declaration site.
@@ -7751,7 +7751,7 @@
     {
       var statement = statements[0] as ExpressionStatement;
       var identifier = statement.expression as SimpleIdentifier;
-      expect(identifier.staticElement, same(typeProvider.intType.element2));
+      expect(identifier.staticElement, same(typeProvider.intType.element));
       expect(identifier.staticType, typeProvider.typeType);
     }
 
@@ -8482,7 +8482,7 @@
     expect(namedType.type, type);
 
     var identifier = namedType.name as SimpleIdentifier;
-    expect(identifier.staticElement, same(type.element2));
+    expect(identifier.staticElement, same(type.element));
     expect(identifier.staticType, isNull);
   }
 
@@ -8513,9 +8513,9 @@
     if (namedType != null) {
       expect(namedType.type, type);
       if (type is InterfaceType) {
-        expect(namedType.name.staticElement, same(type.element2));
+        expect(namedType.name.staticElement, same(type.element));
       } else if (type is TypeParameterType) {
-        expect(namedType.name.staticElement, same(type.element2));
+        expect(namedType.name.staticElement, same(type.element));
       } else {
         throw UnimplementedError();
       }
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index 3dd0bc9..af582a3 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -2443,8 +2443,8 @@
     var c = _getTopLevelVar(result.unit, 'c');
     var typeC = c.declaredElement!.type as InterfaceType;
     // The class C has an old field 'foo', not the new 'bar'.
-    expect(typeC.element2.getField('foo'), isNotNull);
-    expect(typeC.element2.getField('bar'), isNull);
+    expect(typeC.element.getField('foo'), isNotNull);
+    expect(typeC.element.getField('bar'), isNull);
   }
 
   test_importOfNonLibrary_part_afterLibrary() async {
diff --git a/pkg/analyzer/test/src/dart/analysis/index_test.dart b/pkg/analyzer/test/src/dart/analysis/index_test.dart
index f0d83e6..61486a0 100644
--- a/pkg/analyzer/test/src/dart/analysis/index_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/index_test.dart
@@ -123,7 +123,7 @@
 class A {}
 ''');
     ClassElement elementA = findElement.class_('A');
-    final elementObject = elementA.supertype!.element2;
+    final elementObject = elementA.supertype!.element;
     assertThat(elementObject).isExtendedAt('A {}', true, length: 0);
   }
 
@@ -1119,8 +1119,8 @@
   int get f => 0;
 }
 ''');
-    ClassElement element2 = findElement.class_('A');
-    assertThat(element2.getField('f')!).isWrittenAt('f = 42', true);
+    ClassElement element = findElement.class_('A');
+    assertThat(element.getField('f')!).isWrittenAt('f = 42', true);
   }
 
   test_isReferencedBy_FieldElement_class_synthetic_hasGetterSetter() async {
@@ -1131,8 +1131,8 @@
   set f(_) {}
 }
 ''');
-    ClassElement element2 = findElement.class_('A');
-    assertThat(element2.getField('f')!).isWrittenAt('f = 42', true);
+    ClassElement element = findElement.class_('A');
+    assertThat(element.getField('f')!).isWrittenAt('f = 42', true);
   }
 
   test_isReferencedBy_FieldElement_class_synthetic_hasSetter() async {
@@ -1142,8 +1142,8 @@
   set f(_) {}
 }
 ''');
-    ClassElement element2 = findElement.class_('A');
-    assertThat(element2.getField('f')!).isWrittenAt('f = 42', true);
+    ClassElement element = findElement.class_('A');
+    assertThat(element.getField('f')!).isWrittenAt('f = 42', true);
   }
 
   test_isReferencedBy_FieldElement_enum() async {
diff --git a/pkg/analyzer/test/src/dart/analysis/search_test.dart b/pkg/analyzer/test/src/dart/analysis/search_test.dart
index 2830ac1..deb7a75 100644
--- a/pkg/analyzer/test/src/dart/analysis/search_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/search_test.dart
@@ -607,7 +607,7 @@
     var v1 = findElement.topVar('v1');
     var v2 = findElement.topVar('v2');
     final v1Type = v1.type as InterfaceType;
-    var randomElement = v1Type.element2 as ClassElement;
+    var randomElement = v1Type.element as ClassElement;
     var expected = [
       _expectId(v1, SearchResultKind.REFERENCE, 'Random v1;'),
       _expectId(v2, SearchResultKind.REFERENCE, 'Random v2;'),
diff --git a/pkg/analyzer/test/src/dart/analysis/session_test.dart b/pkg/analyzer/test/src/dart/analysis/session_test.dart
index 0bd813c..b2019e3 100644
--- a/pkg/analyzer/test/src/dart/analysis/session_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/session_test.dart
@@ -341,7 +341,7 @@
     var resolvedUnit =
         await session.getResolvedUnit(test.path) as ResolvedUnitResult;
     var typeProvider = resolvedUnit.typeProvider;
-    var intClass = typeProvider.intType.element2;
+    var intClass = typeProvider.intType.element;
 
     var parsedLibrary = session.getParsedLibraryValid(test.path);
 
@@ -564,7 +564,7 @@
     expect(resolvedLibrary.session, session);
 
     var typeProvider = resolvedLibrary.typeProvider;
-    expect(typeProvider.intType.element2.name, 'int');
+    expect(typeProvider.intType.element.name, 'int');
 
     var libraryElement = resolvedLibrary.element;
 
@@ -612,7 +612,7 @@
     var resolvedLibrary = await session.getResolvedLibraryValid(test.path);
 
     expect(() {
-      var intClass = resolvedLibrary.typeProvider.intType.element2;
+      var intClass = resolvedLibrary.typeProvider.intType.element;
       resolvedLibrary.getElementDeclaration(intClass);
     }, throwsArgumentError);
   }
diff --git a/pkg/analyzer/test/src/dart/element/element_test.dart b/pkg/analyzer/test/src/dart/element/element_test.dart
index f195ad5..3b870a0 100644
--- a/pkg/analyzer/test/src/dart/element/element_test.dart
+++ b/pkg/analyzer/test/src/dart/element/element_test.dart
@@ -848,7 +848,7 @@
   void test_getElement() {
     ClassElementImpl typeElement = class_(name: 'A');
     InterfaceType type = interfaceTypeStar(typeElement);
-    expect(type.element2, typeElement);
+    expect(type.element, typeElement);
   }
 
   void test_getGetter_implemented() {
@@ -947,7 +947,7 @@
     List<InterfaceType> interfaces = typeBI.interfaces;
     expect(interfaces, hasLength(1));
     InterfaceType result = interfaces[0];
-    expect(result.element2, same(A));
+    expect(result.element, same(A));
     expect(result.typeArguments[0], same(typeI));
   }
 
@@ -1059,7 +1059,7 @@
     List<InterfaceType> interfaces = typeBI.mixins;
     expect(interfaces, hasLength(1));
     InterfaceType result = interfaces[0];
-    expect(result.element2, same(A));
+    expect(result.element, same(A));
     expect(result.typeArguments[0], same(typeI));
   }
 
@@ -1144,7 +1144,7 @@
     var typeI = interfaceTypeStar(class_(name: 'I'));
     var typeBI = interfaceTypeStar(classB, typeArguments: <DartType>[typeI]);
     InterfaceType superclass = typeBI.superclass!;
-    expect(superclass.element2, same(A));
+    expect(superclass.element, same(A));
     expect(superclass.typeArguments[0], same(typeI));
   }
 
@@ -1274,7 +1274,7 @@
   void test_getElement() {
     TypeParameterElementImpl element = TypeParameterElementImpl('E', -1);
     TypeParameterTypeImpl type = typeParameterTypeStar(element);
-    expect(type.element2, element);
+    expect(type.element, element);
   }
 
   @deprecated
diff --git a/pkg/analyzer/test/src/dart/element/generic_inferrer_test.dart b/pkg/analyzer/test/src/dart/element/generic_inferrer_test.dart
index 9d5e541..a9ccedc 100644
--- a/pkg/analyzer/test/src/dart/element/generic_inferrer_test.dart
+++ b/pkg/analyzer/test/src/dart/element/generic_inferrer_test.dart
@@ -209,7 +209,7 @@
 
     var inferredTypes = _inferCall(rawType, [S_and_int]);
     var inferredType = inferredTypes[0] as TypeParameterTypeImpl;
-    expect(inferredType.element2, S);
+    expect(inferredType.element, S);
     expect(inferredType.promotedBound, isNull);
   }
 
diff --git a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
index f731879..4840c69 100644
--- a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
+++ b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
@@ -1329,7 +1329,7 @@
 class A {}
 ''');
     var member = manager.getMember2(
-      typeProvider.objectType.element2,
+      typeProvider.objectType.element,
       Name(null, 'hashCode'),
       forSuper: true,
     );
diff --git a/pkg/analyzer/test/src/dart/element/least_upper_bound_helper_test.dart b/pkg/analyzer/test/src/dart/element/least_upper_bound_helper_test.dart
index a9cf0eb..6c7f73f 100644
--- a/pkg/analyzer/test/src/dart/element/least_upper_bound_helper_test.dart
+++ b/pkg/analyzer/test/src/dart/element/least_upper_bound_helper_test.dart
@@ -173,7 +173,7 @@
   }
 
   void test_class_object() {
-    expect(_longestPathToObject(typeProvider.objectType.element2), 0);
+    expect(_longestPathToObject(typeProvider.objectType.element), 0);
   }
 
   void test_class_recursion() {
diff --git a/pkg/analyzer/test/src/dart/element/nullable_test.dart b/pkg/analyzer/test/src/dart/element/nullable_test.dart
index 00da0e5..0cb9420 100644
--- a/pkg/analyzer/test/src/dart/element/nullable_test.dart
+++ b/pkg/analyzer/test/src/dart/element/nullable_test.dart
@@ -787,7 +787,7 @@
     required DartType? promotedBound,
   }) {
     var actual = typeSystem.promoteToNonNull(type) as TypeParameterTypeImpl;
-    expect(actual.element2, same(element));
+    expect(actual.element, same(element));
     expect(actual.promotedBound, promotedBound);
     expect(actual.nullabilitySuffix, NullabilitySuffix.none);
   }
diff --git a/pkg/analyzer/test/src/dart/element/string_types.dart b/pkg/analyzer/test/src/dart/element/string_types.dart
index b61bfcd..bd2c514 100644
--- a/pkg/analyzer/test/src/dart/element/string_types.dart
+++ b/pkg/analyzer/test/src/dart/element/string_types.dart
@@ -593,8 +593,8 @@
 
   @override
   void visitTypeParameterType(TypeParameterType type) {
-    if (!functionTypeParameters.contains(type.element2)) {
-      var bound = type.element2.bound;
+    if (!functionTypeParameters.contains(type.element)) {
+      var bound = type.element.bound;
 
       if (bound == null) {
         return;
@@ -603,7 +603,7 @@
       var str = '';
 
       var boundStr = bound.getDisplayString(withNullability: true);
-      str += '${type.element2.name} extends $boundStr';
+      str += '${type.element.name} extends $boundStr';
 
       typeParameters.add(str);
     }
diff --git a/pkg/analyzer/test/src/dart/element/type_algebra_test.dart b/pkg/analyzer/test/src/dart/element/type_algebra_test.dart
index d930a78..0440c40 100644
--- a/pkg/analyzer/test/src/dart/element/type_algebra_test.dart
+++ b/pkg/analyzer/test/src/dart/element/type_algebra_test.dart
@@ -264,8 +264,8 @@
     var T2 = result.typeFormals[0];
     var U2 = result.typeFormals[1];
     var T2boundArgs = (T2.bound as InterfaceType).typeArguments;
-    expect((T2boundArgs[0] as TypeParameterType).element2, same(T2));
-    expect((T2boundArgs[1] as TypeParameterType).element2, same(U2));
+    expect((T2boundArgs[0] as TypeParameterType).element, same(T2));
+    expect((T2boundArgs[1] as TypeParameterType).element, same(U2));
   }
 
   test_interface_arguments() async {
@@ -468,7 +468,7 @@
         {tElement: typeArgument},
       ).substituteType(
         TypeParameterTypeImpl(
-          element2: tElement,
+          element: tElement,
           nullabilitySuffix: typeParameterNullability,
         ),
       );
diff --git a/pkg/analyzer/test/src/dart/resolution/binary_pattern_test.dart b/pkg/analyzer/test/src/dart/resolution/binary_pattern_test.dart
index 15d2a35..8db3cdc 100644
--- a/pkg/analyzer/test/src/dart/resolution/binary_pattern_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/binary_pattern_test.dart
@@ -8,17 +8,16 @@
 
 main() {
   defineReflectiveSuite(() {
-    defineReflectiveTests(BinaryPattern_LogicalAnd_ResolutionTest);
-    defineReflectiveTests(BinaryPattern_LogicalOr_ResolutionTest);
+    defineReflectiveTests(BinaryPatternResolutionTest);
   });
 }
 
 @reflectiveTest
-class BinaryPattern_LogicalAnd_ResolutionTest extends PatternsResolutionTest {
-  test_inside_ifStatement_case() async {
+class BinaryPatternResolutionTest extends PatternsResolutionTest {
+  test_logicalAnd_ifCase() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
-  if (x case int? _ & double? _) {}
+  if (x case int _ & double _) {}
 }
 ''');
     final node = findNode.caseClause('case').pattern;
@@ -30,8 +29,7 @@
         token: int
         staticElement: dart:core::@class::int
         staticType: null
-      question: ?
-      type: int?
+      type: int
     name: _
   operator: &
   rightOperand: VariablePattern
@@ -40,107 +38,16 @@
         token: double
         staticElement: dart:core::@class::double
         staticType: null
-      question: ?
-      type: double?
+      type: double
     name: _
 ''');
   }
 
-  test_inside_logicalAnd_left() async {
+  test_logicalAnd_switchCase() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
-    case int? _ & double? _ & Object? _:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: BinaryPattern
-    leftOperand: VariablePattern
-      type: NamedType
-        name: SimpleIdentifier
-          token: int
-          staticElement: dart:core::@class::int
-          staticType: null
-        question: ?
-        type: int?
-      name: _
-    operator: &
-    rightOperand: VariablePattern
-      type: NamedType
-        name: SimpleIdentifier
-          token: double
-          staticElement: dart:core::@class::double
-          staticType: null
-        question: ?
-        type: double?
-      name: _
-  operator: &
-  rightOperand: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: Object
-        staticElement: dart:core::@class::Object
-        staticType: null
-      question: ?
-      type: Object?
-    name: _
-''');
-  }
-
-  test_inside_logicalOr_left() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case int? _ & double? _ | Object? _:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: BinaryPattern
-    leftOperand: VariablePattern
-      type: NamedType
-        name: SimpleIdentifier
-          token: int
-          staticElement: dart:core::@class::int
-          staticType: null
-        question: ?
-        type: int?
-      name: _
-    operator: &
-    rightOperand: VariablePattern
-      type: NamedType
-        name: SimpleIdentifier
-          token: double
-          staticElement: dart:core::@class::double
-          staticType: null
-        question: ?
-        type: double?
-      name: _
-  operator: |
-  rightOperand: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: Object
-        staticElement: dart:core::@class::Object
-        staticType: null
-      question: ?
-      type: Object?
-    name: _
-''');
-  }
-
-  test_inside_logicalOr_right() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case int? _ | double? _ & Object? _:
+    case int _ & double _:
       break;
   }
 }
@@ -154,40 +61,24 @@
         token: int
         staticElement: dart:core::@class::int
         staticType: null
-      question: ?
-      type: int?
+      type: int
     name: _
-  operator: |
-  rightOperand: BinaryPattern
-    leftOperand: VariablePattern
-      type: NamedType
-        name: SimpleIdentifier
-          token: double
-          staticElement: dart:core::@class::double
-          staticType: null
-        question: ?
-        type: double?
-      name: _
-    operator: &
-    rightOperand: VariablePattern
-      type: NamedType
-        name: SimpleIdentifier
-          token: Object
-          staticElement: dart:core::@class::Object
-          staticType: null
-        question: ?
-        type: Object?
-      name: _
+  operator: &
+  rightOperand: VariablePattern
+    type: NamedType
+      name: SimpleIdentifier
+        token: double
+        staticElement: dart:core::@class::double
+        staticType: null
+      type: double
+    name: _
 ''');
   }
-}
 
-@reflectiveTest
-class BinaryPattern_LogicalOr_ResolutionTest extends PatternsResolutionTest {
-  test_inside_ifStatement_case() async {
+  test_logicalOr_ifCase() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
-  if (x case int? _ | double? _) {}
+  if (x case int _ | double _) {}
 }
 ''');
     final node = findNode.caseClause('case').pattern;
@@ -199,8 +90,7 @@
         token: int
         staticElement: dart:core::@class::int
         staticType: null
-      question: ?
-      type: int?
+      type: int
     name: _
   operator: |
   rightOperand: VariablePattern
@@ -209,17 +99,16 @@
         token: double
         staticElement: dart:core::@class::double
         staticType: null
-      question: ?
-      type: double?
+      type: double
     name: _
 ''');
   }
 
-  test_inside_logicalOr_left() async {
+  test_logicalOr_switchCase() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
-    case int? _ | double? _ | Object? _:
+    case int _ | double _:
       break;
   }
 }
@@ -227,35 +116,22 @@
     final node = findNode.switchPatternCase('case').pattern;
     assertResolvedNodeText(node, r'''
 BinaryPattern
-  leftOperand: BinaryPattern
-    leftOperand: VariablePattern
-      type: NamedType
-        name: SimpleIdentifier
-          token: int
-          staticElement: dart:core::@class::int
-          staticType: null
-        question: ?
-        type: int?
-      name: _
-    operator: |
-    rightOperand: VariablePattern
-      type: NamedType
-        name: SimpleIdentifier
-          token: double
-          staticElement: dart:core::@class::double
-          staticType: null
-        question: ?
-        type: double?
-      name: _
+  leftOperand: VariablePattern
+    type: NamedType
+      name: SimpleIdentifier
+        token: int
+        staticElement: dart:core::@class::int
+        staticType: null
+      type: int
+    name: _
   operator: |
   rightOperand: VariablePattern
     type: NamedType
       name: SimpleIdentifier
-        token: Object
-        staticElement: dart:core::@class::Object
+        token: double
+        staticElement: dart:core::@class::double
         staticType: null
-      question: ?
-      type: Object?
+      type: double
     name: _
 ''');
   }
diff --git a/pkg/analyzer/test/src/dart/resolution/cast_pattern_test.dart b/pkg/analyzer/test/src/dart/resolution/cast_pattern_test.dart
index bfe23fd..966c493 100644
--- a/pkg/analyzer/test/src/dart/resolution/cast_pattern_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/cast_pattern_test.dart
@@ -14,80 +14,7 @@
 
 @reflectiveTest
 class CastPatternResolutionTest extends PatternsResolutionTest {
-  test_inside_extractorPattern_explicitName() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  int? f;
-}
-
-void f(x) {
-  switch (x) {
-    case C(f: 0 as int):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ExtractorPattern
-  type: NamedType
-    name: SimpleIdentifier
-      token: C
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        name: f
-        colon: :
-      pattern: CastPattern
-        pattern: ConstantPattern
-          expression: IntegerLiteral
-            literal: 0
-        asToken: as
-        type: NamedType
-          name: SimpleIdentifier
-            token: int
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_extractorPattern_implicitName() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  int? f;
-}
-
-void f(x) {
-  switch (x) {
-    case C(: var f as int):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ExtractorPattern
-  type: NamedType
-    name: SimpleIdentifier
-      token: C
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        colon: :
-      pattern: CastPattern
-        pattern: VariablePattern
-          keyword: var
-          name: f
-        asToken: as
-        type: NamedType
-          name: SimpleIdentifier
-            token: int
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_ifStatement_case() async {
+  test_ifCase() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
   if (x case var y as int) {}
@@ -106,362 +33,7 @@
 ''');
   }
 
-  test_inside_listPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case [0 as int]:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ListPattern
-  leftBracket: [
-  elements
-    CastPattern
-      pattern: ConstantPattern
-        expression: IntegerLiteral
-          literal: 0
-      asToken: as
-      type: NamedType
-        name: SimpleIdentifier
-          token: int
-  rightBracket: ]
-''');
-  }
-
-  test_inside_logicalAnd_left() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case int? _ as double? & Object? _:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: CastPattern
-    pattern: VariablePattern
-      type: NamedType
-        name: SimpleIdentifier
-          token: int
-          staticElement: dart:core::@class::int
-          staticType: null
-        question: ?
-        type: int?
-      name: _
-    asToken: as
-    type: NamedType
-      name: SimpleIdentifier
-        token: double
-        staticElement: dart:core::@class::double
-        staticType: null
-      question: ?
-      type: double?
-  operator: &
-  rightOperand: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: Object
-        staticElement: dart:core::@class::Object
-        staticType: null
-      question: ?
-      type: Object?
-    name: _
-''');
-  }
-
-  test_inside_logicalAnd_right() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case int? _ & double? _ as Object?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      question: ?
-      type: int?
-    name: _
-  operator: &
-  rightOperand: CastPattern
-    pattern: VariablePattern
-      type: NamedType
-        name: SimpleIdentifier
-          token: double
-          staticElement: dart:core::@class::double
-          staticType: null
-        question: ?
-        type: double?
-      name: _
-    asToken: as
-    type: NamedType
-      name: SimpleIdentifier
-        token: Object
-        staticElement: dart:core::@class::Object
-        staticType: null
-      question: ?
-      type: Object?
-''');
-  }
-
-  test_inside_logicalOr_left() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case int? _ as double? | Object? _:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: CastPattern
-    pattern: VariablePattern
-      type: NamedType
-        name: SimpleIdentifier
-          token: int
-          staticElement: dart:core::@class::int
-          staticType: null
-        question: ?
-        type: int?
-      name: _
-    asToken: as
-    type: NamedType
-      name: SimpleIdentifier
-        token: double
-        staticElement: dart:core::@class::double
-        staticType: null
-      question: ?
-      type: double?
-  operator: |
-  rightOperand: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: Object
-        staticElement: dart:core::@class::Object
-        staticType: null
-      question: ?
-      type: Object?
-    name: _
-''');
-  }
-
-  test_inside_logicalOr_right() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case int? _ | double? _ as Object?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      question: ?
-      type: int?
-    name: _
-  operator: |
-  rightOperand: CastPattern
-    pattern: VariablePattern
-      type: NamedType
-        name: SimpleIdentifier
-          token: double
-          staticElement: dart:core::@class::double
-          staticType: null
-        question: ?
-        type: double?
-      name: _
-    asToken: as
-    type: NamedType
-      name: SimpleIdentifier
-        token: Object
-        staticElement: dart:core::@class::Object
-        staticType: null
-      question: ?
-      type: Object?
-''');
-  }
-
-  test_inside_mapPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case {'a': 0 as int}:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-MapPattern
-  leftBracket: {
-  entries
-    MapPatternEntry
-      key: SimpleStringLiteral
-        literal: 'a'
-      separator: :
-      value: CastPattern
-        pattern: ConstantPattern
-          expression: IntegerLiteral
-            literal: 0
-        asToken: as
-        type: NamedType
-          name: SimpleIdentifier
-            token: int
-  rightBracket: }
-''');
-  }
-
-  test_inside_parenthesizedPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (0 as int):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-ParenthesizedPattern
-  leftParenthesis: (
-  pattern: CastPattern
-    pattern: ConstantPattern
-      expression: IntegerLiteral
-        literal: 0
-        staticType: int
-    asToken: as
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      type: int
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_recordPattern_namedExplicitly() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (n: 1 as int, 2):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RecordPattern
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        name: n
-        colon: :
-      pattern: CastPattern
-        pattern: ConstantPattern
-          expression: IntegerLiteral
-            literal: 1
-        asToken: as
-        type: NamedType
-          name: SimpleIdentifier
-            token: int
-    RecordPatternField
-      pattern: ConstantPattern
-        expression: IntegerLiteral
-          literal: 2
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_recordPattern_namedImplicitly() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (: var n as int, 2):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RecordPattern
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        colon: :
-      pattern: CastPattern
-        pattern: VariablePattern
-          keyword: var
-          name: n
-        asToken: as
-        type: NamedType
-          name: SimpleIdentifier
-            token: int
-    RecordPatternField
-      pattern: ConstantPattern
-        expression: IntegerLiteral
-          literal: 2
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_recordPattern_unnamed() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (1 as int, 2):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RecordPattern
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      pattern: CastPattern
-        pattern: ConstantPattern
-          expression: IntegerLiteral
-            literal: 1
-        asToken: as
-        type: NamedType
-          name: SimpleIdentifier
-            token: int
-    RecordPatternField
-      pattern: ConstantPattern
-        expression: IntegerLiteral
-          literal: 2
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_switchStatement_case() async {
+  test_switchCase() async {
     await assertNoErrorsInCode(r'''
 void f(x, y) {
   switch (x) {
diff --git a/pkg/analyzer/test/src/dart/resolution/constant_pattern_test.dart b/pkg/analyzer/test/src/dart/resolution/constant_pattern_test.dart
index f4ea1b2..aceba48 100644
--- a/pkg/analyzer/test/src/dart/resolution/constant_pattern_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/constant_pattern_test.dart
@@ -8,223 +8,28 @@
 
 main() {
   defineReflectiveSuite(() {
-    defineReflectiveTests(ConstantPattern_BooleanLiteral_ResolutionTest);
-    defineReflectiveTests(ConstantPattern_DoubleLiteral_ResolutionTest);
-    defineReflectiveTests(ConstantPattern_IntegerLiteral_ResolutionTest);
-    defineReflectiveTests(ConstantPattern_NullLiteral_ResolutionTest);
-    defineReflectiveTests(ConstantPattern_SimpleIdentifier_ResolutionTest);
-    defineReflectiveTests(ConstantPattern_SimpleStringLiteral_ResolutionTest);
+    defineReflectiveTests(ConstantPatternResolutionTest);
   });
 }
 
 @reflectiveTest
-class ConstantPattern_BooleanLiteral_ResolutionTest
-    extends PatternsResolutionTest {
-  test_inside_castPattern() async {
+class ConstantPatternResolutionTest extends PatternsResolutionTest {
+  test_ifCase() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
-  switch (x) {
-    case true as Object:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-CastPattern
-  pattern: ConstantPattern
-    expression: BooleanLiteral
-      literal: true
-      staticType: bool
-  asToken: as
-  type: NamedType
-    name: SimpleIdentifier
-      token: Object
-      staticElement: dart:core::@class::Object
-      staticType: null
-    type: Object
-''');
-  }
-
-  test_inside_ifStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  if (x case true) {}
+  if (x case 0) {}
 }
 ''');
     final node = findNode.caseClause('case').pattern;
     assertResolvedNodeText(node, r'''
 ConstantPattern
-  expression: BooleanLiteral
-    literal: true
-    staticType: bool
+  expression: IntegerLiteral
+    literal: 0
+    staticType: int
 ''');
   }
 
-  test_inside_nullAssert() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case true!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: ConstantPattern
-    expression: BooleanLiteral
-      literal: true
-      staticType: bool
-  operator: !
-''');
-  }
-
-  test_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case true?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: ConstantPattern
-    expression: BooleanLiteral
-      literal: true
-      staticType: bool
-  operator: ?
-''');
-  }
-
-  test_inside_switchStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case true:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ConstantPattern
-  expression: BooleanLiteral
-    literal: true
-''');
-  }
-}
-
-@reflectiveTest
-class ConstantPattern_DoubleLiteral_ResolutionTest
-    extends PatternsResolutionTest {
-  test_inside_castPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 1.0 as Object:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-CastPattern
-  pattern: ConstantPattern
-    expression: DoubleLiteral
-      literal: 1.0
-      staticType: double
-  asToken: as
-  type: NamedType
-    name: SimpleIdentifier
-      token: Object
-      staticElement: dart:core::@class::Object
-      staticType: null
-    type: Object
-''');
-  }
-
-  test_inside_ifStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  if (x case 1.0) {}
-}
-''');
-    final node = findNode.caseClause('case').pattern;
-    assertResolvedNodeText(node, r'''
-ConstantPattern
-  expression: DoubleLiteral
-    literal: 1.0
-    staticType: double
-''');
-  }
-
-  test_inside_nullAssert() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 1.0!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: ConstantPattern
-    expression: DoubleLiteral
-      literal: 1.0
-      staticType: double
-  operator: !
-''');
-  }
-
-  test_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 1.0?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: ConstantPattern
-    expression: DoubleLiteral
-      literal: 1.0
-      staticType: double
-  operator: ?
-''');
-  }
-
-  test_inside_switchStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 1.0:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ConstantPattern
-  expression: DoubleLiteral
-    literal: 1.0
-''');
-  }
-}
-
-@reflectiveTest
-class ConstantPattern_IntegerLiteral_ResolutionTest
-    extends PatternsResolutionTest {
-  test_contextType_double() async {
+  test_integerLiteral_contextType_double() async {
     await assertNoErrorsInCode(r'''
 void f(double x) {
   switch (x) {
@@ -242,239 +47,7 @@
 ''');
   }
 
-  test_inside_castPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 0 as Object:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-CastPattern
-  pattern: ConstantPattern
-    expression: IntegerLiteral
-      literal: 0
-      staticType: int
-  asToken: as
-  type: NamedType
-    name: SimpleIdentifier
-      token: Object
-      staticElement: dart:core::@class::Object
-      staticType: null
-    type: Object
-''');
-  }
-
-  test_inside_ifStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  if (x case 0) {}
-}
-''');
-    final node = findNode.caseClause('case').pattern;
-    assertResolvedNodeText(node, r'''
-ConstantPattern
-  expression: IntegerLiteral
-    literal: 0
-    staticType: int
-''');
-  }
-
-  test_inside_nullAssert() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 0!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 0
-      staticType: int
-  operator: !
-''');
-  }
-
-  test_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 0?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 0
-      staticType: int
-  operator: ?
-''');
-  }
-
-  test_inside_switchStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 0:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-ConstantPattern
-  expression: IntegerLiteral
-    literal: 0
-    staticType: int
-''');
-  }
-}
-
-@reflectiveTest
-class ConstantPattern_NullLiteral_ResolutionTest
-    extends PatternsResolutionTest {
-  test_inside_castPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case null as Object:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-CastPattern
-  pattern: ConstantPattern
-    expression: NullLiteral
-      literal: null
-      staticType: Null
-  asToken: as
-  type: NamedType
-    name: SimpleIdentifier
-      token: Object
-      staticElement: dart:core::@class::Object
-      staticType: null
-    type: Object
-''');
-  }
-
-  test_inside_ifStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  if (x case null) {}
-}
-''');
-    final node = findNode.caseClause('case').pattern;
-    assertResolvedNodeText(node, r'''
-ConstantPattern
-  expression: NullLiteral
-    literal: null
-    staticType: Null
-''');
-  }
-
-  test_inside_nullAssert() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case null!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: ConstantPattern
-    expression: NullLiteral
-      literal: null
-      staticType: Null
-  operator: !
-''');
-  }
-
-  test_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case null?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: ConstantPattern
-    expression: NullLiteral
-      literal: null
-      staticType: Null
-  operator: ?
-''');
-  }
-
-  test_inside_switchStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case null:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ConstantPattern
-  expression: NullLiteral
-    literal: null
-''');
-  }
-}
-
-@reflectiveTest
-class ConstantPattern_SimpleIdentifier_ResolutionTest
-    extends PatternsResolutionTest {
-  test_inside_castPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x, int y) {
-  switch (x) {
-    case y as Object:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-CastPattern
-  pattern: ConstantPattern
-    expression: SimpleIdentifier
-      token: y
-      staticElement: self::@function::f::@parameter::y
-      staticType: int
-  asToken: as
-  type: NamedType
-    name: SimpleIdentifier
-      token: Object
-      staticElement: dart:core::@class::Object
-      staticType: null
-    type: Object
-''');
-  }
-
-  test_inside_ifStatement_case() async {
+  test_simpleIdentifier_ifCase() async {
     await assertNoErrorsInCode(r'''
 void f(x, int y) {
   if (x case y) {}
@@ -490,160 +63,21 @@
 ''');
   }
 
-  test_inside_nullAssert() async {
-    await assertNoErrorsInCode(r'''
-void f(x, int y) {
-  switch (x) {
-    case y!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: ConstantPattern
-    expression: SimpleIdentifier
-      token: y
-      staticElement: self::@function::f::@parameter::y
-      staticType: int
-  operator: !
-''');
-  }
-
-  test_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-void f(x, int y) {
-  switch (x) {
-    case y?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: ConstantPattern
-    expression: SimpleIdentifier
-      token: y
-      staticElement: self::@function::f::@parameter::y
-      staticType: int
-  operator: ?
-''');
-  }
-
-  test_inside_switchStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x, y) {
-  switch (x) {
-    case y:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ConstantPattern
-  expression: SimpleIdentifier
-    token: y
-''');
-  }
-}
-
-@reflectiveTest
-class ConstantPattern_SimpleStringLiteral_ResolutionTest
-    extends PatternsResolutionTest {
-  test_inside_castPattern() async {
+  test_switchCase() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
-    case 'x' as Object:
+    case 0:
       break;
   }
 }
 ''');
     final node = findNode.switchPatternCase('case').pattern;
     assertResolvedNodeText(node, r'''
-CastPattern
-  pattern: ConstantPattern
-    expression: SimpleStringLiteral
-      literal: 'x'
-  asToken: as
-  type: NamedType
-    name: SimpleIdentifier
-      token: Object
-      staticElement: dart:core::@class::Object
-      staticType: null
-    type: Object
-''');
-  }
-
-  test_inside_ifStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  if (x case 'x') {}
-}
-''');
-    final node = findNode.caseClause('case').pattern;
-    assertResolvedNodeText(node, r'''
 ConstantPattern
-  expression: SimpleStringLiteral
-    literal: 'x'
-''');
-  }
-
-  test_inside_nullAssert() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 'x'!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: ConstantPattern
-    expression: SimpleStringLiteral
-      literal: 'x'
-  operator: !
-''');
-  }
-
-  test_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 'x'?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: ConstantPattern
-    expression: SimpleStringLiteral
-      literal: 'x'
-  operator: ?
-''');
-  }
-
-  test_inside_switchStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 'x':
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ConstantPattern
-  expression: SimpleStringLiteral
-    literal: 'x'
+  expression: IntegerLiteral
+    literal: 0
+    staticType: int
 ''');
   }
 }
diff --git a/pkg/analyzer/test/src/dart/resolution/extractor_pattern_test.dart b/pkg/analyzer/test/src/dart/resolution/extractor_pattern_test.dart
index 349065a..bca07ff 100644
--- a/pkg/analyzer/test/src/dart/resolution/extractor_pattern_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/extractor_pattern_test.dart
@@ -14,108 +14,25 @@
 
 @reflectiveTest
 class ExtractorPatternResolutionTest extends PatternsResolutionTest {
-  test_identifier_inside_castPattern() async {
+  test_identifier_noTypeArguments() async {
     await assertNoErrorsInCode(r'''
-class C {
-  int? f;
-}
+class C {}
 
 void f(x) {
   switch (x) {
-    case C(f: 0) as Object:
+    case C():
       break;
   }
 }
 ''');
     final node = findNode.switchPatternCase('case').pattern;
     assertParsedNodeText(node, r'''
-CastPattern
-  pattern: ExtractorPattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: C
-    leftParenthesis: (
-    fields
-      RecordPatternField
-        fieldName: RecordPatternFieldName
-          name: f
-          colon: :
-        pattern: ConstantPattern
-          expression: IntegerLiteral
-            literal: 0
-    rightParenthesis: )
-  asToken: as
+ExtractorPattern
   type: NamedType
     name: SimpleIdentifier
-      token: Object
-''');
-  }
-
-  test_identifier_inside_nullAssert() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  int? f;
-}
-
-void f(x) {
-  switch (x) {
-    case C(f: 0)!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-PostfixPattern
-  operand: ExtractorPattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: C
-    leftParenthesis: (
-    fields
-      RecordPatternField
-        fieldName: RecordPatternFieldName
-          name: f
-          colon: :
-        pattern: ConstantPattern
-          expression: IntegerLiteral
-            literal: 0
-    rightParenthesis: )
-  operator: !
-''');
-  }
-
-  test_identifier_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  int? f;
-}
-
-void f(x) {
-  switch (x) {
-    case C(f: 0)?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-PostfixPattern
-  operand: ExtractorPattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: C
-    leftParenthesis: (
-    fields
-      RecordPatternField
-        fieldName: RecordPatternFieldName
-          name: f
-          colon: :
-        pattern: ConstantPattern
-          expression: IntegerLiteral
-            literal: 0
-    rightParenthesis: )
-  operator: ?
+      token: C
+  leftParenthesis: (
+  rightParenthesis: )
 ''');
   }
 
@@ -148,73 +65,9 @@
 ''');
   }
 
-  test_identifier_withTypeArguments_inside_nullAssert() async {
-    await assertNoErrorsInCode(r'''
-class C<T> {}
-
-void f(x) {
-  switch (x) {
-    case C<int>()!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-PostfixPattern
-  operand: ExtractorPattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: C
-      typeArguments: TypeArgumentList
-        leftBracket: <
-        arguments
-          NamedType
-            name: SimpleIdentifier
-              token: int
-        rightBracket: >
-    leftParenthesis: (
-    rightParenthesis: )
-  operator: !
-''');
-  }
-
-  test_identifier_withTypeArguments_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-class C<T> {}
-
-void f(x) {
-  switch (x) {
-    case C<int>()?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-PostfixPattern
-  operand: ExtractorPattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: C
-      typeArguments: TypeArgumentList
-        leftBracket: <
-        arguments
-          NamedType
-            name: SimpleIdentifier
-              token: int
-        rightBracket: >
-    leftParenthesis: (
-    rightParenthesis: )
-  operator: ?
-''');
-  }
-
-  test_prefixedIdentifier_inside_castPattern() async {
+  test_prefixedIdentifier_noTypeArguments() async {
     newFile('$testPackageLibPath/a.dart', r'''
-class C {
-  int? f;
-}
+class C {}
 ''');
 
     await assertNoErrorsInCode(r'''
@@ -222,7 +75,7 @@
 
 void f(x) {
   switch (x) {
-    case prefix.C(f: 0) as Object:
+    case prefix.C():
       break;
   }
 }
@@ -230,115 +83,16 @@
 
     final node = findNode.switchPatternCase('case').pattern;
     assertParsedNodeText(node, r'''
-CastPattern
-  pattern: ExtractorPattern
-    type: NamedType
-      name: PrefixedIdentifier
-        prefix: SimpleIdentifier
-          token: prefix
-        period: .
-        identifier: SimpleIdentifier
-          token: C
-    leftParenthesis: (
-    fields
-      RecordPatternField
-        fieldName: RecordPatternFieldName
-          name: f
-          colon: :
-        pattern: ConstantPattern
-          expression: IntegerLiteral
-            literal: 0
-    rightParenthesis: )
-  asToken: as
+ExtractorPattern
   type: NamedType
-    name: SimpleIdentifier
-      token: Object
-''');
-  }
-
-  test_prefixedIdentifier_inside_nullAssert() async {
-    newFile('$testPackageLibPath/a.dart', r'''
-class C {
-  int? f;
-}
-''');
-
-    await assertNoErrorsInCode(r'''
-import 'a.dart' as prefix;
-
-void f(x) {
-  switch (x) {
-    case prefix.C(f: 0)!:
-      break;
-  }
-}
-''');
-
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-PostfixPattern
-  operand: ExtractorPattern
-    type: NamedType
-      name: PrefixedIdentifier
-        prefix: SimpleIdentifier
-          token: prefix
-        period: .
-        identifier: SimpleIdentifier
-          token: C
-    leftParenthesis: (
-    fields
-      RecordPatternField
-        fieldName: RecordPatternFieldName
-          name: f
-          colon: :
-        pattern: ConstantPattern
-          expression: IntegerLiteral
-            literal: 0
-    rightParenthesis: )
-  operator: !
-''');
-  }
-
-  test_prefixedIdentifier_inside_nullCheck() async {
-    newFile('$testPackageLibPath/a.dart', r'''
-class C {
-  int? f;
-}
-''');
-
-    await assertNoErrorsInCode(r'''
-import 'a.dart' as prefix;
-
-void f(x) {
-  switch (x) {
-    case prefix.C(f: 0)?:
-      break;
-  }
-}
-''');
-
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-PostfixPattern
-  operand: ExtractorPattern
-    type: NamedType
-      name: PrefixedIdentifier
-        prefix: SimpleIdentifier
-          token: prefix
-        period: .
-        identifier: SimpleIdentifier
-          token: C
-    leftParenthesis: (
-    fields
-      RecordPatternField
-        fieldName: RecordPatternFieldName
-          name: f
-          colon: :
-        pattern: ConstantPattern
-          expression: IntegerLiteral
-            literal: 0
-    rightParenthesis: )
-  operator: ?
+    name: PrefixedIdentifier
+      prefix: SimpleIdentifier
+        token: prefix
+      period: .
+      identifier: SimpleIdentifier
+        token: C
+  leftParenthesis: (
+  rightParenthesis: )
 ''');
   }
 
@@ -379,84 +133,4 @@
   rightParenthesis: )
 ''');
   }
-
-  test_prefixedIdentifier_withTypeArguments_inside_nullAssert() async {
-    newFile('$testPackageLibPath/a.dart', r'''
-class C<T> {}
-''');
-
-    await assertNoErrorsInCode(r'''
-import 'a.dart' as prefix;
-
-void f(x) {
-  switch (x) {
-    case prefix.C<int>()!:
-      break;
-  }
-}
-''');
-
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-PostfixPattern
-  operand: ExtractorPattern
-    type: NamedType
-      name: PrefixedIdentifier
-        prefix: SimpleIdentifier
-          token: prefix
-        period: .
-        identifier: SimpleIdentifier
-          token: C
-      typeArguments: TypeArgumentList
-        leftBracket: <
-        arguments
-          NamedType
-            name: SimpleIdentifier
-              token: int
-        rightBracket: >
-    leftParenthesis: (
-    rightParenthesis: )
-  operator: !
-''');
-  }
-
-  test_prefixedIdentifier_withTypeArguments_inside_nullCheck() async {
-    newFile('$testPackageLibPath/a.dart', r'''
-class C<T> {}
-''');
-
-    await assertNoErrorsInCode(r'''
-import 'a.dart' as prefix;
-
-void f(x) {
-  switch (x) {
-    case prefix.C<int>()?:
-      break;
-  }
-}
-''');
-
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-PostfixPattern
-  operand: ExtractorPattern
-    type: NamedType
-      name: PrefixedIdentifier
-        prefix: SimpleIdentifier
-          token: prefix
-        period: .
-        identifier: SimpleIdentifier
-          token: C
-      typeArguments: TypeArgumentList
-        leftBracket: <
-        arguments
-          NamedType
-            name: SimpleIdentifier
-              token: int
-        rightBracket: >
-    leftParenthesis: (
-    rightParenthesis: )
-  operator: ?
-''');
-  }
 }
diff --git a/pkg/analyzer/test/src/dart/resolution/list_pattern_test.dart b/pkg/analyzer/test/src/dart/resolution/list_pattern_test.dart
index d31801d..f903b33 100644
--- a/pkg/analyzer/test/src/dart/resolution/list_pattern_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/list_pattern_test.dart
@@ -14,7 +14,28 @@
 
 @reflectiveTest
 class ListPatternResolutionTest extends PatternsResolutionTest {
-  test_empty() async {
+  test_elements_constant() async {
+    await assertNoErrorsInCode(r'''
+void f(x) {
+  switch (x) {
+    case [0]:
+      break;
+  }
+}
+''');
+    final node = findNode.switchPatternCase('case').pattern;
+    assertParsedNodeText(node, r'''
+ListPattern
+  leftBracket: [
+  elements
+    ConstantPattern
+      expression: IntegerLiteral
+        literal: 0
+  rightBracket: ]
+''');
+  }
+
+  test_elements_empty() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
@@ -31,137 +52,6 @@
 ''');
   }
 
-  test_empty_withWhitespace() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case [ ]:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ListPattern
-  leftBracket: [
-  rightBracket: ]
-''');
-  }
-
-  test_inside_castPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case [0] as Object:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-CastPattern
-  pattern: ListPattern
-    leftBracket: [
-    elements
-      ConstantPattern
-        expression: IntegerLiteral
-          literal: 0
-    rightBracket: ]
-  asToken: as
-  type: NamedType
-    name: SimpleIdentifier
-      token: Object
-''');
-  }
-
-  test_inside_ifStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  if (x case [0]) {}
-}
-''');
-    final node = findNode.caseClause('case').pattern;
-    assertParsedNodeText(node, r'''
-ListPattern
-  leftBracket: [
-  elements
-    ConstantPattern
-      expression: IntegerLiteral
-        literal: 0
-  rightBracket: ]
-''');
-  }
-
-  test_inside_nullAssert() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case [0]!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-PostfixPattern
-  operand: ListPattern
-    leftBracket: [
-    elements
-      ConstantPattern
-        expression: IntegerLiteral
-          literal: 0
-    rightBracket: ]
-  operator: !
-''');
-  }
-
-  test_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case [0]?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-PostfixPattern
-  operand: ListPattern
-    leftBracket: [
-    elements
-      ConstantPattern
-        expression: IntegerLiteral
-          literal: 0
-    rightBracket: ]
-  operator: ?
-''');
-  }
-
-  test_inside_switchStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case [1, 2]:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ListPattern
-  leftBracket: [
-  elements
-    ConstantPattern
-      expression: IntegerLiteral
-        literal: 1
-    ConstantPattern
-      expression: IntegerLiteral
-        literal: 2
-  rightBracket: ]
-''');
-  }
-
   test_withTypeArguments() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
diff --git a/pkg/analyzer/test/src/dart/resolution/map_pattern_test.dart b/pkg/analyzer/test/src/dart/resolution/map_pattern_test.dart
index 08588af..00adeb4 100644
--- a/pkg/analyzer/test/src/dart/resolution/map_pattern_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/map_pattern_test.dart
@@ -14,41 +14,7 @@
 
 @reflectiveTest
 class MapPatternResolutionTest extends PatternsResolutionTest {
-  test_empty() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case {}:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-MapPattern
-  leftBracket: {
-  rightBracket: }
-''');
-  }
-
-  test_empty_withWhitespace() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case { }:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-MapPattern
-  leftBracket: {
-  rightBracket: }
-''');
-  }
-
-  test_inside_castPattern() async {
+  test_elements_constant() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
@@ -78,65 +44,11 @@
 ''');
   }
 
-  test_inside_nullAssert() async {
+  test_elements_empty() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
-    case {'a': 0}!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-PostfixPattern
-  operand: MapPattern
-    leftBracket: {
-    entries
-      MapPatternEntry
-        key: SimpleStringLiteral
-          literal: 'a'
-        separator: :
-        value: ConstantPattern
-          expression: IntegerLiteral
-            literal: 0
-    rightBracket: }
-  operator: !
-''');
-  }
-
-  test_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case {'a': 0}?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-PostfixPattern
-  operand: MapPattern
-    leftBracket: {
-    entries
-      MapPatternEntry
-        key: SimpleStringLiteral
-          literal: 'a'
-        separator: :
-        value: ConstantPattern
-          expression: IntegerLiteral
-            literal: 0
-    rightBracket: }
-  operator: ?
-''');
-  }
-
-  test_inside_switchStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case {'a': 1, 'b': 2}:
+    case {}:
       break;
   }
 }
@@ -145,21 +57,6 @@
     assertParsedNodeText(node, r'''
 MapPattern
   leftBracket: {
-  entries
-    MapPatternEntry
-      key: SimpleStringLiteral
-        literal: 'a'
-      separator: :
-      value: ConstantPattern
-        expression: IntegerLiteral
-          literal: 1
-    MapPatternEntry
-      key: SimpleStringLiteral
-        literal: 'b'
-      separator: :
-      value: ConstantPattern
-        expression: IntegerLiteral
-          literal: 2
   rightBracket: }
 ''');
   }
diff --git a/pkg/analyzer/test/src/dart/resolution/parenthesized_pattern_test.dart b/pkg/analyzer/test/src/dart/resolution/parenthesized_pattern_test.dart
index 642818e..7ea0250 100644
--- a/pkg/analyzer/test/src/dart/resolution/parenthesized_pattern_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/parenthesized_pattern_test.dart
@@ -14,18 +14,16 @@
 
 @reflectiveTest
 class ParenthesizedPatternResolutionTest extends PatternsResolutionTest {
-  test_inside_castPattern() async {
+  test_ifCase() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
-  switch (x) {
-    case (0) as Object:
-      break;
-  }
+  if (x case (0)) {}
 }
 ''');
-    final node = findNode.switchPatternCase('case').pattern;
+    final node = findNode.caseClause('case');
     assertResolvedNodeText(node, r'''
-CastPattern
+CaseClause
+  caseKeyword: case
   pattern: ParenthesizedPattern
     leftParenthesis: (
     pattern: ConstantPattern
@@ -33,57 +31,27 @@
         literal: 0
         staticType: int
     rightParenthesis: )
-  asToken: as
-  type: NamedType
-    name: SimpleIdentifier
-      token: Object
-      staticElement: dart:core::@class::Object
-      staticType: null
-    type: Object
 ''');
   }
 
-  test_inside_nullAssert() async {
+  test_switchCase() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
-    case (0)!:
+    case (0):
       break;
   }
 }
 ''');
     final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-PostfixPattern
-  operand: ParenthesizedPattern
-    leftParenthesis: (
-    pattern: ConstantPattern
-      expression: IntegerLiteral
-        literal: 0
-    rightParenthesis: )
-  operator: !
-''');
-  }
-
-  test_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (0)?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-PostfixPattern
-  operand: ParenthesizedPattern
-    leftParenthesis: (
-    pattern: ConstantPattern
-      expression: IntegerLiteral
-        literal: 0
-    rightParenthesis: )
-  operator: ?
+    assertResolvedNodeText(node, r'''
+ParenthesizedPattern
+  leftParenthesis: (
+  pattern: ConstantPattern
+    expression: IntegerLiteral
+      literal: 0
+      staticType: int
+  rightParenthesis: )
 ''');
   }
 }
diff --git a/pkg/analyzer/test/src/dart/resolution/postfix_pattern_test.dart b/pkg/analyzer/test/src/dart/resolution/postfix_pattern_test.dart
index 8ae83e5..0dcfa05 100644
--- a/pkg/analyzer/test/src/dart/resolution/postfix_pattern_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/postfix_pattern_test.dart
@@ -8,81 +8,13 @@
 
 main() {
   defineReflectiveSuite(() {
-    defineReflectiveTests(PostfixPattern_NullAssert_ResolutionTest);
-    defineReflectiveTests(PostfixPattern_NullCheck_ResolutionTest);
+    defineReflectiveTests(PostfixPatternResolutionTest);
   });
 }
 
 @reflectiveTest
-class PostfixPattern_NullAssert_ResolutionTest extends PatternsResolutionTest {
-  test_inside_extractorPattern_namedExplicitly() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  int? f;
-}
-
-void f(x) {
-  switch (x) {
-    case C(f: 0!):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ExtractorPattern
-  type: NamedType
-    name: SimpleIdentifier
-      token: C
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        name: f
-        colon: :
-      pattern: PostfixPattern
-        operand: ConstantPattern
-          expression: IntegerLiteral
-            literal: 0
-        operator: !
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_extractorPattern_namedImplicitly() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  int? f;
-}
-
-void f(x) {
-  switch (x) {
-    case C(: var f!):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ExtractorPattern
-  type: NamedType
-    name: SimpleIdentifier
-      token: C
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        colon: :
-      pattern: PostfixPattern
-        operand: VariablePattern
-          keyword: var
-          name: f
-        operator: !
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_ifStatement_case() async {
+class PostfixPatternResolutionTest extends PatternsResolutionTest {
+  test_nullAssert_ifCase() async {
     await assertNoErrorsInCode(r'''
 void f(int? x) {
   if (x case var y!) {}
@@ -100,277 +32,11 @@
 ''');
   }
 
-  test_inside_listPattern() async {
+  test_nullAssert_switchCase() async {
     await assertNoErrorsInCode(r'''
-void f(x) {
+void f(int? x) {
   switch (x) {
-    case [0!]:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ListPattern
-  leftBracket: [
-  elements
-    PostfixPattern
-      operand: ConstantPattern
-        expression: IntegerLiteral
-          literal: 0
-      operator: !
-  rightBracket: ]
-''');
-  }
-
-  test_inside_logicalAnd_left() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 1! & 2:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: PostfixPattern
-    operand: ConstantPattern
-      expression: IntegerLiteral
-        literal: 1
-        staticType: int
-    operator: !
-  operator: &
-  rightOperand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 2
-      staticType: int
-''');
-  }
-
-  test_inside_logicalAnd_right() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 1 & 2!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 1
-      staticType: int
-  operator: &
-  rightOperand: PostfixPattern
-    operand: ConstantPattern
-      expression: IntegerLiteral
-        literal: 2
-        staticType: int
-    operator: !
-''');
-  }
-
-  test_inside_logicalOr_left() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 1! | 2:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: PostfixPattern
-    operand: ConstantPattern
-      expression: IntegerLiteral
-        literal: 1
-        staticType: int
-    operator: !
-  operator: |
-  rightOperand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 2
-      staticType: int
-''');
-  }
-
-  test_inside_logicalOr_right() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 1 | 2!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 1
-      staticType: int
-  operator: |
-  rightOperand: PostfixPattern
-    operand: ConstantPattern
-      expression: IntegerLiteral
-        literal: 2
-        staticType: int
-    operator: !
-''');
-  }
-
-  test_inside_mapPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case {'a': 0!}:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-MapPattern
-  leftBracket: {
-  entries
-    MapPatternEntry
-      key: SimpleStringLiteral
-        literal: 'a'
-      separator: :
-      value: PostfixPattern
-        operand: ConstantPattern
-          expression: IntegerLiteral
-            literal: 0
-        operator: !
-  rightBracket: }
-''');
-  }
-
-  test_inside_parenthesizedPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (0!):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-ParenthesizedPattern
-  leftParenthesis: (
-  pattern: PostfixPattern
-    operand: ConstantPattern
-      expression: IntegerLiteral
-        literal: 0
-        staticType: int
-    operator: !
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_recordPattern_namedExplicitly() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (n: 1!, 2):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RecordPattern
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        name: n
-        colon: :
-      pattern: PostfixPattern
-        operand: ConstantPattern
-          expression: IntegerLiteral
-            literal: 1
-        operator: !
-    RecordPatternField
-      pattern: ConstantPattern
-        expression: IntegerLiteral
-          literal: 2
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_recordPattern_namedImplicitly() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (: var n!, 2):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RecordPattern
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        colon: :
-      pattern: PostfixPattern
-        operand: VariablePattern
-          keyword: var
-          name: n
-        operator: !
-    RecordPatternField
-      pattern: ConstantPattern
-        expression: IntegerLiteral
-          literal: 2
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_recordPattern_unnamed() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (1!, 2):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RecordPattern
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      pattern: PostfixPattern
-        operand: ConstantPattern
-          expression: IntegerLiteral
-            literal: 1
-        operator: !
-    RecordPatternField
-      pattern: ConstantPattern
-        expression: IntegerLiteral
-          literal: 2
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_switchStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x, int y) {
-  switch (x) {
-    case y!:
+    case var y!:
       break;
   }
 }
@@ -378,86 +44,16 @@
     final node = findNode.switchPatternCase('case').pattern;
     assertResolvedNodeText(node, r'''
 PostfixPattern
-  operand: ConstantPattern
-    expression: SimpleIdentifier
-      token: y
-      staticElement: self::@function::f::@parameter::y
-      staticType: int
+  operand: VariablePattern
+    keyword: var
+    name: y
+    declaredElement: hasImplicitType y@45
+      type: int
   operator: !
 ''');
   }
-}
 
-@reflectiveTest
-class PostfixPattern_NullCheck_ResolutionTest extends PatternsResolutionTest {
-  test_inside_extractorPattern_namedExplicitly() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  int? f;
-}
-
-void f(x) {
-  switch (x) {
-    case C(f: 0?):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ExtractorPattern
-  type: NamedType
-    name: SimpleIdentifier
-      token: C
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        name: f
-        colon: :
-      pattern: PostfixPattern
-        operand: ConstantPattern
-          expression: IntegerLiteral
-            literal: 0
-        operator: ?
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_extractorPattern_namedImplicitly() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  int? f;
-}
-
-void f(x) {
-  switch (x) {
-    case C(: var f?):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ExtractorPattern
-  type: NamedType
-    name: SimpleIdentifier
-      token: C
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        colon: :
-      pattern: PostfixPattern
-        operand: VariablePattern
-          keyword: var
-          name: f
-        operator: ?
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_ifStatement_case() async {
+  test_nullCheck_ifCase() async {
     await assertNoErrorsInCode(r'''
 void f(int? x) {
   if (x case var y?) {}
@@ -475,277 +71,11 @@
 ''');
   }
 
-  test_inside_listPattern() async {
+  test_nullCheck_switchCase() async {
     await assertNoErrorsInCode(r'''
-void f(x) {
+void f(int? x) {
   switch (x) {
-    case [0?]:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ListPattern
-  leftBracket: [
-  elements
-    PostfixPattern
-      operand: ConstantPattern
-        expression: IntegerLiteral
-          literal: 0
-      operator: ?
-  rightBracket: ]
-''');
-  }
-
-  test_inside_logicalAnd_left() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 1? & 2:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: PostfixPattern
-    operand: ConstantPattern
-      expression: IntegerLiteral
-        literal: 1
-        staticType: int
-    operator: ?
-  operator: &
-  rightOperand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 2
-      staticType: int
-''');
-  }
-
-  test_inside_logicalAnd_right() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 1 & 2?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 1
-      staticType: int
-  operator: &
-  rightOperand: PostfixPattern
-    operand: ConstantPattern
-      expression: IntegerLiteral
-        literal: 2
-        staticType: int
-    operator: ?
-''');
-  }
-
-  test_inside_logicalOr_left() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 1? | 2:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: PostfixPattern
-    operand: ConstantPattern
-      expression: IntegerLiteral
-        literal: 1
-        staticType: int
-    operator: ?
-  operator: |
-  rightOperand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 2
-      staticType: int
-''');
-  }
-
-  test_inside_logicalOr_right() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 1 | 2?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 1
-      staticType: int
-  operator: |
-  rightOperand: PostfixPattern
-    operand: ConstantPattern
-      expression: IntegerLiteral
-        literal: 2
-        staticType: int
-    operator: ?
-''');
-  }
-
-  test_inside_mapPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case {'a': 0?}:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-MapPattern
-  leftBracket: {
-  entries
-    MapPatternEntry
-      key: SimpleStringLiteral
-        literal: 'a'
-      separator: :
-      value: PostfixPattern
-        operand: ConstantPattern
-          expression: IntegerLiteral
-            literal: 0
-        operator: ?
-  rightBracket: }
-''');
-  }
-
-  test_inside_parenthesizedPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (0?):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-ParenthesizedPattern
-  leftParenthesis: (
-  pattern: PostfixPattern
-    operand: ConstantPattern
-      expression: IntegerLiteral
-        literal: 0
-        staticType: int
-    operator: ?
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_recordPattern_namedExplicitly() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (n: 1?, 2):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RecordPattern
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        name: n
-        colon: :
-      pattern: PostfixPattern
-        operand: ConstantPattern
-          expression: IntegerLiteral
-            literal: 1
-        operator: ?
-    RecordPatternField
-      pattern: ConstantPattern
-        expression: IntegerLiteral
-          literal: 2
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_recordPattern_namedImplicitly() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (: var n?, 2):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RecordPattern
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        colon: :
-      pattern: PostfixPattern
-        operand: VariablePattern
-          keyword: var
-          name: n
-        operator: ?
-    RecordPatternField
-      pattern: ConstantPattern
-        expression: IntegerLiteral
-          literal: 2
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_recordPattern_unnamed() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (1?, 2):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RecordPattern
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      pattern: PostfixPattern
-        operand: ConstantPattern
-          expression: IntegerLiteral
-            literal: 1
-        operator: ?
-    RecordPatternField
-      pattern: ConstantPattern
-        expression: IntegerLiteral
-          literal: 2
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_switchStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x, int y) {
-  switch (x) {
-    case y?:
+    case var y?:
       break;
   }
 }
@@ -753,11 +83,11 @@
     final node = findNode.switchPatternCase('case').pattern;
     assertResolvedNodeText(node, r'''
 PostfixPattern
-  operand: ConstantPattern
-    expression: SimpleIdentifier
-      token: y
-      staticElement: self::@function::f::@parameter::y
-      staticType: int
+  operand: VariablePattern
+    keyword: var
+    name: y
+    declaredElement: hasImplicitType y@45
+      type: int
   operator: ?
 ''');
   }
diff --git a/pkg/analyzer/test/src/dart/resolution/record_pattern_test.dart b/pkg/analyzer/test/src/dart/resolution/record_pattern_test.dart
index 2363a85..fea3465 100644
--- a/pkg/analyzer/test/src/dart/resolution/record_pattern_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/record_pattern_test.dart
@@ -14,7 +14,7 @@
 
 @reflectiveTest
 class RecordPatternResolutionTest extends PatternsResolutionTest {
-  test_empty() async {
+  test_fields_empty() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
@@ -31,94 +31,7 @@
 ''');
   }
 
-  test_inside_castPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (1, 2) as Object:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-CastPattern
-  pattern: RecordPattern
-    leftParenthesis: (
-    fields
-      RecordPatternField
-        pattern: ConstantPattern
-          expression: IntegerLiteral
-            literal: 1
-      RecordPatternField
-        pattern: ConstantPattern
-          expression: IntegerLiteral
-            literal: 2
-    rightParenthesis: )
-  asToken: as
-  type: NamedType
-    name: SimpleIdentifier
-      token: Object
-''');
-  }
-
-  test_inside_nullAssert() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (1, 2)!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-PostfixPattern
-  operand: RecordPattern
-    leftParenthesis: (
-    fields
-      RecordPatternField
-        pattern: ConstantPattern
-          expression: IntegerLiteral
-            literal: 1
-      RecordPatternField
-        pattern: ConstantPattern
-          expression: IntegerLiteral
-            literal: 2
-    rightParenthesis: )
-  operator: !
-''');
-  }
-
-  test_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (1, 2)?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-PostfixPattern
-  operand: RecordPattern
-    leftParenthesis: (
-    fields
-      RecordPatternField
-        pattern: ConstantPattern
-          expression: IntegerLiteral
-            literal: 1
-      RecordPatternField
-        pattern: ConstantPattern
-          expression: IntegerLiteral
-            literal: 2
-    rightParenthesis: )
-  operator: ?
-''');
-  }
-
-  test_inside_switchStatement_case() async {
+  test_fields_pair() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
@@ -144,7 +57,7 @@
 ''');
   }
 
-  test_singleton() async {
+  test_fields_singleton() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
diff --git a/pkg/analyzer/test/src/dart/resolution/relational_pattern_test.dart b/pkg/analyzer/test/src/dart/resolution/relational_pattern_test.dart
index cbdb350..05fe7e8 100644
--- a/pkg/analyzer/test/src/dart/resolution/relational_pattern_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/relational_pattern_test.dart
@@ -18,338 +18,6 @@
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
-    case == 1 << 2:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RelationalPattern
-  operator: ==
-  operand: BinaryExpression
-    leftOperand: IntegerLiteral
-      literal: 1
-    operator: <<
-    rightOperand: IntegerLiteral
-      literal: 2
-''');
-  }
-
-  test_greaterThan() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case > 1 << 2:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RelationalPattern
-  operator: >
-  operand: BinaryExpression
-    leftOperand: IntegerLiteral
-      literal: 1
-    operator: <<
-    rightOperand: IntegerLiteral
-      literal: 2
-''');
-  }
-
-  test_greaterThanOrEqualTo() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case >= 1 << 2:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RelationalPattern
-  operator: >=
-  operand: BinaryExpression
-    leftOperand: IntegerLiteral
-      literal: 1
-    operator: <<
-    rightOperand: IntegerLiteral
-      literal: 2
-''');
-  }
-
-  test_inside_extractorPattern() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  int? f;
-}
-
-void f(x) {
-  switch (x) {
-    case C(f: == 0):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ExtractorPattern
-  type: NamedType
-    name: SimpleIdentifier
-      token: C
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        name: f
-        colon: :
-      pattern: RelationalPattern
-        operator: ==
-        operand: IntegerLiteral
-          literal: 0
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_ifStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  if (x case == 0) {}
-}
-''');
-    final node = findNode.caseClause('case').pattern;
-    assertParsedNodeText(node, r'''
-RelationalPattern
-  operator: ==
-  operand: IntegerLiteral
-    literal: 0
-''');
-  }
-
-  test_inside_listPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case [== 0]:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ListPattern
-  leftBracket: [
-  elements
-    RelationalPattern
-      operator: ==
-      operand: IntegerLiteral
-        literal: 0
-  rightBracket: ]
-''');
-  }
-
-  test_inside_logicalAnd_left() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case == 1 & 2:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-BinaryPattern
-  leftOperand: RelationalPattern
-    operator: ==
-    operand: IntegerLiteral
-      literal: 1
-  operator: &
-  rightOperand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 2
-''');
-  }
-
-  test_inside_logicalAnd_right() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 1 & == 2:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-BinaryPattern
-  leftOperand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 1
-  operator: &
-  rightOperand: RelationalPattern
-    operator: ==
-    operand: IntegerLiteral
-      literal: 2
-''');
-  }
-
-  test_inside_logicalOr_left() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case == 1 | 2:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-BinaryPattern
-  leftOperand: RelationalPattern
-    operator: ==
-    operand: IntegerLiteral
-      literal: 1
-  operator: |
-  rightOperand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 2
-''');
-  }
-
-  test_inside_logicalOr_right() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 1 | == 2:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-BinaryPattern
-  leftOperand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 1
-  operator: |
-  rightOperand: RelationalPattern
-    operator: ==
-    operand: IntegerLiteral
-      literal: 2
-''');
-  }
-
-  test_inside_mapPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case {'a': == 0}:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-MapPattern
-  leftBracket: {
-  entries
-    MapPatternEntry
-      key: SimpleStringLiteral
-        literal: 'a'
-      separator: :
-      value: RelationalPattern
-        operator: ==
-        operand: IntegerLiteral
-          literal: 0
-  rightBracket: }
-''');
-  }
-
-  test_inside_parenthesizedPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (== 0):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ParenthesizedPattern
-  leftParenthesis: (
-  pattern: RelationalPattern
-    operator: ==
-    operand: IntegerLiteral
-      literal: 0
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_recordPattern_named() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (a: == 1, 2):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RecordPattern
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        name: a
-        colon: :
-      pattern: RelationalPattern
-        operator: ==
-        operand: IntegerLiteral
-          literal: 1
-    RecordPatternField
-      pattern: ConstantPattern
-        expression: IntegerLiteral
-          literal: 2
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_recordPattern_unnamed() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (== 1, 2):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RecordPattern
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      pattern: RelationalPattern
-        operator: ==
-        operand: IntegerLiteral
-          literal: 1
-    RecordPatternField
-      pattern: ConstantPattern
-        expression: IntegerLiteral
-          literal: 2
-  rightParenthesis: )
-''');
-  }
-
-  test_inside_switchStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
     case == 0:
       break;
   }
@@ -364,11 +32,62 @@
 ''');
   }
 
+  test_greaterThan() async {
+    await assertNoErrorsInCode(r'''
+void f(x) {
+  switch (x) {
+    case > 0:
+      break;
+  }
+}
+''');
+    final node = findNode.switchPatternCase('case').pattern;
+    assertParsedNodeText(node, r'''
+RelationalPattern
+  operator: >
+  operand: IntegerLiteral
+    literal: 0
+''');
+  }
+
+  test_greaterThanOrEqualTo() async {
+    await assertNoErrorsInCode(r'''
+void f(x) {
+  switch (x) {
+    case >= 0:
+      break;
+  }
+}
+''');
+    final node = findNode.switchPatternCase('case').pattern;
+    assertParsedNodeText(node, r'''
+RelationalPattern
+  operator: >=
+  operand: IntegerLiteral
+    literal: 0
+''');
+  }
+
+  test_ifCase() async {
+    await assertNoErrorsInCode(r'''
+void f(x) {
+  if (x case == 0) {}
+}
+''');
+    final node = findNode.caseClause('case').pattern;
+    assertParsedNodeText(node, r'''
+RelationalPattern
+  operator: ==
+  operand: IntegerLiteral
+    literal: 0
+''');
+  }
+
   test_lessThan() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
-    case < 1 << 2:
+    case < 0:
       break;
   }
 }
@@ -377,12 +96,8 @@
     assertParsedNodeText(node, r'''
 RelationalPattern
   operator: <
-  operand: BinaryExpression
-    leftOperand: IntegerLiteral
-      literal: 1
-    operator: <<
-    rightOperand: IntegerLiteral
-      literal: 2
+  operand: IntegerLiteral
+    literal: 0
 ''');
   }
 
@@ -390,7 +105,7 @@
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
-    case <= 1 << 2:
+    case <= 0:
       break;
   }
 }
@@ -399,12 +114,8 @@
     assertParsedNodeText(node, r'''
 RelationalPattern
   operator: <=
-  operand: BinaryExpression
-    leftOperand: IntegerLiteral
-      literal: 1
-    operator: <<
-    rightOperand: IntegerLiteral
-      literal: 2
+  operand: IntegerLiteral
+    literal: 0
 ''');
   }
 
@@ -412,7 +123,7 @@
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
-    case != 1 << 2:
+    case != 0:
       break;
   }
 }
@@ -421,12 +132,26 @@
     assertParsedNodeText(node, r'''
 RelationalPattern
   operator: !=
-  operand: BinaryExpression
-    leftOperand: IntegerLiteral
-      literal: 1
-    operator: <<
-    rightOperand: IntegerLiteral
-      literal: 2
+  operand: IntegerLiteral
+    literal: 0
+''');
+  }
+
+  test_switchCase() async {
+    await assertNoErrorsInCode(r'''
+void f(x) {
+  switch (x) {
+    case == 0:
+      break;
+  }
+}
+''');
+    final node = findNode.switchPatternCase('case').pattern;
+    assertParsedNodeText(node, r'''
+RelationalPattern
+  operator: ==
+  operand: IntegerLiteral
+    literal: 0
 ''');
   }
 }
diff --git a/pkg/analyzer/test/src/dart/resolution/resolution.dart b/pkg/analyzer/test/src/dart/resolution/resolution.dart
index de18f99..49e5508 100644
--- a/pkg/analyzer/test/src/dart/resolution/resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/resolution.dart
@@ -48,7 +48,7 @@
   InterfaceType get doubleType => typeProvider.doubleType;
 
   Element get dynamicElement =>
-      (typeProvider.dynamicType as DynamicTypeImpl).element2;
+      (typeProvider.dynamicType as DynamicTypeImpl).element;
 
   FeatureSet get featureSet => result.libraryElement.featureSet;
 
@@ -73,7 +73,7 @@
   ClassElement get numElement => typeProvider.numElement;
 
   ClassElement get objectElement =>
-      typeProvider.objectType.element2 as ClassElement;
+      typeProvider.objectType.element as ClassElement;
 
   InterfaceType get objectType => typeProvider.objectType;
 
diff --git a/pkg/analyzer/test/src/dart/resolution/variable_pattern_test.dart b/pkg/analyzer/test/src/dart/resolution/variable_pattern_test.dart
index 09c4cac..c5f3de6 100644
--- a/pkg/analyzer/test/src/dart/resolution/variable_pattern_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/variable_pattern_test.dart
@@ -2,7 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'context_collection_resolution.dart';
@@ -15,92 +14,7 @@
 
 @reflectiveTest
 class VariablePatternResolutionTest extends PatternsResolutionTest {
-  test_final_inside_castPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(int x) {
-  switch (x) {
-    case final y as Object:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-CastPattern
-  pattern: VariablePattern
-    keyword: final
-    name: y
-    declaredElement: hasImplicitType isFinal y@46
-      type: Object
-  asToken: as
-  type: NamedType
-    name: SimpleIdentifier
-      token: Object
-      staticElement: dart:core::@class::Object
-      staticType: null
-    type: Object
-''');
-  }
-
-  test_final_inside_ifStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(int x) {
-  if (x case final y) {}
-}
-''');
-    final node = findNode.caseClause('case').pattern;
-    assertResolvedNodeText(node, r'''
-VariablePattern
-  keyword: final
-  name: y
-  declaredElement: hasImplicitType isFinal y@35
-    type: int
-''');
-  }
-
-  test_final_inside_nullAssert() async {
-    await assertNoErrorsInCode(r'''
-void f(int? x) {
-  switch (x) {
-    case final y!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: VariablePattern
-    keyword: final
-    name: y
-    declaredElement: hasImplicitType isFinal y@47
-      type: int
-  operator: !
-''');
-  }
-
-  test_final_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-void f(int? x) {
-  switch (x) {
-    case final y?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: VariablePattern
-    keyword: final
-    name: y
-    declaredElement: hasImplicitType isFinal y@47
-      type: int
-  operator: ?
-''');
-  }
-
-  test_final_inside_switchStatement_case() async {
+  test_final_switchCase() async {
     await assertNoErrorsInCode(r'''
 void f(int x) {
   switch (x) {
@@ -119,116 +33,7 @@
 ''');
   }
 
-  test_final_typed_inside_castPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case final int y as Object:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-CastPattern
-  pattern: VariablePattern
-    keyword: final
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      type: int
-    name: y
-    declaredElement: isFinal y@46
-      type: int
-  asToken: as
-  type: NamedType
-    name: SimpleIdentifier
-      token: Object
-      staticElement: dart:core::@class::Object
-      staticType: null
-    type: Object
-''');
-  }
-
-  test_final_typed_inside_ifStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  if (x case final int y) {}
-}
-''');
-    final node = findNode.caseClause('case').pattern;
-    assertResolvedNodeText(node, r'''
-VariablePattern
-  keyword: final
-  type: NamedType
-    name: SimpleIdentifier
-      token: int
-      staticElement: dart:core::@class::int
-      staticType: null
-    type: int
-  name: y
-  declaredElement: isFinal y@35
-    type: int
-''');
-  }
-
-  test_final_typed_inside_nullAssert() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case final int y!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: VariablePattern
-    keyword: final
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      type: int
-    name: y
-    declaredElement: isFinal y@46
-      type: int
-  operator: !
-''');
-  }
-
-  test_final_typed_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case final int y?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: VariablePattern
-    keyword: final
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      type: int
-    name: y
-    declaredElement: isFinal y@46
-      type: int
-  operator: ?
-''');
-  }
-
-  test_final_typed_inside_switchStatement_case() async {
+  test_final_typed_switchCase() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
@@ -253,112 +58,7 @@
 ''');
   }
 
-  test_typed_inside_castPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case int y as Object:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-CastPattern
-  pattern: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      type: int
-    name: y
-    declaredElement: y@40
-      type: int
-  asToken: as
-  type: NamedType
-    name: SimpleIdentifier
-      token: Object
-      staticElement: dart:core::@class::Object
-      staticType: null
-    type: Object
-''');
-  }
-
-  test_typed_inside_ifStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  if (x case int y) {}
-}
-''');
-    final node = findNode.caseClause('case').pattern;
-    assertResolvedNodeText(node, r'''
-VariablePattern
-  type: NamedType
-    name: SimpleIdentifier
-      token: int
-      staticElement: dart:core::@class::int
-      staticType: null
-    type: int
-  name: y
-  declaredElement: y@29
-    type: int
-''');
-  }
-
-  test_typed_inside_nullAssert() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case int y!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      type: int
-    name: y
-    declaredElement: y@40
-      type: int
-  operator: !
-''');
-  }
-
-  test_typed_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case int y?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      type: int
-    name: y
-    declaredElement: y@40
-      type: int
-  operator: ?
-''');
-  }
-
-  test_typed_inside_switchStatement_case() async {
+  test_typed_switchCase() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
@@ -382,493 +82,7 @@
 ''');
   }
 
-  test_typed_named_as_inside_castPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case int as as Object:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-CastPattern
-  pattern: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      type: int
-    name: as
-    declaredElement: as@40
-      type: int
-  asToken: as
-  type: NamedType
-    name: SimpleIdentifier
-      token: Object
-      staticElement: dart:core::@class::Object
-      staticType: null
-    type: Object
-''');
-  }
-
-  test_typed_named_as_inside_extractorPattern_namedExplicitly() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  int? f;
-}
-
-void f(x) {
-  switch (x) {
-    case C(f: int as):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ExtractorPattern
-  type: NamedType
-    name: SimpleIdentifier
-      token: C
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        name: f
-        colon: :
-      pattern: VariablePattern
-        type: NamedType
-          name: SimpleIdentifier
-            token: int
-        name: as
-  rightParenthesis: )
-''');
-  }
-
-  test_typed_named_as_inside_extractorPattern_namedImplicitly() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  int? f;
-}
-
-void f(x) {
-  switch (x) {
-    case C(: int as):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ExtractorPattern
-  type: NamedType
-    name: SimpleIdentifier
-      token: C
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        colon: :
-      pattern: VariablePattern
-        type: NamedType
-          name: SimpleIdentifier
-            token: int
-        name: as
-  rightParenthesis: )
-''');
-  }
-
-  test_typed_named_as_inside_ifStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  if (x case int as) {}
-}
-''');
-    final node = findNode.caseClause('case').pattern;
-    assertResolvedNodeText(node, r'''
-VariablePattern
-  type: NamedType
-    name: SimpleIdentifier
-      token: int
-      staticElement: dart:core::@class::int
-      staticType: null
-    type: int
-  name: as
-  declaredElement: as@29
-    type: int
-''');
-  }
-
-  test_typed_named_as_inside_listPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case [int as]:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-ListPattern
-  leftBracket: [
-  elements
-    VariablePattern
-      type: NamedType
-        name: SimpleIdentifier
-          token: int
-      name: as
-  rightBracket: ]
-''');
-  }
-
-  test_typed_named_as_inside_logicalAnd_left() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case int as & 2:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      type: int
-    name: as
-    declaredElement: as@40
-      type: int
-  operator: &
-  rightOperand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 2
-      staticType: int
-''');
-  }
-
-  test_typed_named_as_inside_logicalAnd_right() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 1 & int as:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 1
-      staticType: int
-  operator: &
-  rightOperand: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      type: int
-    name: as
-    declaredElement: as@44
-      type: int
-''');
-  }
-
-  test_typed_named_as_inside_logicalOr_left() async {
-    await assertErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case int as | 2:
-      break;
-  }
-}
-''', [
-      error(CompileTimeErrorCode.MISSING_VARIABLE_PATTERN, 45, 1),
-    ]);
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      type: int
-    name: as
-    declaredElement: as@40
-      type: int
-  operator: |
-  rightOperand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 2
-      staticType: int
-''');
-  }
-
-  test_typed_named_as_inside_logicalOr_right() async {
-    await assertErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case 1 | int as:
-      break;
-  }
-}
-''', [
-      error(CompileTimeErrorCode.MISSING_VARIABLE_PATTERN, 36, 1),
-    ]);
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-BinaryPattern
-  leftOperand: ConstantPattern
-    expression: IntegerLiteral
-      literal: 1
-      staticType: int
-  operator: |
-  rightOperand: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      type: int
-    name: as
-    declaredElement: as@44
-      type: int
-''');
-  }
-
-  test_typed_named_as_inside_mapPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case {'a': int as}:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-MapPattern
-  leftBracket: {
-  entries
-    MapPatternEntry
-      key: SimpleStringLiteral
-        literal: 'a'
-      separator: :
-      value: VariablePattern
-        type: NamedType
-          name: SimpleIdentifier
-            token: int
-        name: as
-  rightBracket: }
-''');
-  }
-
-  test_typed_named_as_inside_nullAssert() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case int as!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      type: int
-    name: as
-    declaredElement: as@40
-      type: int
-  operator: !
-''');
-  }
-
-  test_typed_named_as_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case int as?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      type: int
-    name: as
-    declaredElement: as@40
-      type: int
-  operator: ?
-''');
-  }
-
-  test_typed_named_as_inside_parenthesizedPattern() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (int as):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-ParenthesizedPattern
-  leftParenthesis: (
-  pattern: VariablePattern
-    type: NamedType
-      name: SimpleIdentifier
-        token: int
-        staticElement: dart:core::@class::int
-        staticType: null
-      type: int
-    name: as
-    declaredElement: as@41
-      type: int
-  rightParenthesis: )
-''');
-  }
-
-  test_typed_named_as_inside_recordPattern_namedExplicitly() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (n: int as, 2):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RecordPattern
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        name: n
-        colon: :
-      pattern: VariablePattern
-        type: NamedType
-          name: SimpleIdentifier
-            token: int
-        name: as
-    RecordPatternField
-      pattern: ConstantPattern
-        expression: IntegerLiteral
-          literal: 2
-  rightParenthesis: )
-''');
-  }
-
-  test_typed_named_as_inside_recordPattern_namedImplicitly() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (: int as, 2):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RecordPattern
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      fieldName: RecordPatternFieldName
-        colon: :
-      pattern: VariablePattern
-        type: NamedType
-          name: SimpleIdentifier
-            token: int
-        name: as
-    RecordPatternField
-      pattern: ConstantPattern
-        expression: IntegerLiteral
-          literal: 2
-  rightParenthesis: )
-''');
-  }
-
-  test_typed_named_as_inside_recordPattern_unnamed() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case (int as, 2):
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertParsedNodeText(node, r'''
-RecordPattern
-  leftParenthesis: (
-  fields
-    RecordPatternField
-      pattern: VariablePattern
-        type: NamedType
-          name: SimpleIdentifier
-            token: int
-        name: as
-    RecordPatternField
-      pattern: ConstantPattern
-        expression: IntegerLiteral
-          literal: 2
-  rightParenthesis: )
-''');
-  }
-
-  test_typed_named_as_inside_switchStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(x) {
-  switch (x) {
-    case int as:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-VariablePattern
-  type: NamedType
-    name: SimpleIdentifier
-      token: int
-      staticElement: dart:core::@class::int
-      staticType: null
-    type: int
-  name: as
-  declaredElement: as@40
-    type: int
-''');
-  }
-
-  test_typed_wildcard_inside_switchStatement_case() async {
+  test_typed_wildcard_switchCase() async {
     await assertNoErrorsInCode(r'''
 void f(x) {
   switch (x) {
@@ -890,7 +104,42 @@
 ''');
   }
 
-  test_var_inside_castPattern() async {
+  test_var_ifCase() async {
+    await assertNoErrorsInCode(r'''
+void f(int x) {
+  if (x case var y) {}
+}
+''');
+    final node = findNode.caseClause('case').pattern;
+    assertResolvedNodeText(node, r'''
+VariablePattern
+  keyword: var
+  name: y
+  declaredElement: hasImplicitType y@33
+    type: int
+''');
+  }
+
+  test_var_switchCase() async {
+    await assertNoErrorsInCode(r'''
+void f(int x) {
+  switch (x) {
+    case var y:
+      break;
+  }
+}
+''');
+    final node = findNode.switchPatternCase('case').pattern;
+    assertResolvedNodeText(node, r'''
+VariablePattern
+  keyword: var
+  name: y
+  declaredElement: hasImplicitType y@44
+    type: int
+''');
+  }
+
+  test_var_switchCase_cast() async {
     await assertNoErrorsInCode(r'''
 void f(int x) {
   switch (x) {
@@ -916,81 +165,4 @@
     type: Object
 ''');
   }
-
-  test_var_inside_ifStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(int x) {
-  if (x case var y) {}
-}
-''');
-    final node = findNode.caseClause('case').pattern;
-    assertResolvedNodeText(node, r'''
-VariablePattern
-  keyword: var
-  name: y
-  declaredElement: hasImplicitType y@33
-    type: int
-''');
-  }
-
-  test_var_inside_nullAssert() async {
-    await assertNoErrorsInCode(r'''
-void f(int? x) {
-  switch (x) {
-    case var y!:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: VariablePattern
-    keyword: var
-    name: y
-    declaredElement: hasImplicitType y@45
-      type: int
-  operator: !
-''');
-  }
-
-  test_var_inside_nullCheck() async {
-    await assertNoErrorsInCode(r'''
-void f(int? x) {
-  switch (x) {
-    case var y?:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-PostfixPattern
-  operand: VariablePattern
-    keyword: var
-    name: y
-    declaredElement: hasImplicitType y@45
-      type: int
-  operator: ?
-''');
-  }
-
-  test_var_inside_switchStatement_case() async {
-    await assertNoErrorsInCode(r'''
-void f(int x) {
-  switch (x) {
-    case var y:
-      break;
-  }
-}
-''');
-    final node = findNode.switchPatternCase('case').pattern;
-    assertResolvedNodeText(node, r'''
-VariablePattern
-  keyword: var
-  name: y
-  declaredElement: hasImplicitType y@44
-    type: int
-''');
-  }
 }
diff --git a/pkg/analyzer/test/src/summary/element_text.dart b/pkg/analyzer/test/src/summary/element_text.dart
index e72b0fb..3cd038d 100644
--- a/pkg/analyzer/test/src/summary/element_text.dart
+++ b/pkg/analyzer/test/src/summary/element_text.dart
@@ -320,7 +320,7 @@
 
       final supertype = e.supertype;
       if (supertype != null &&
-          (supertype.element2.name != 'Object' || e.mixins.isNotEmpty)) {
+          (supertype.element.name != 'Object' || e.mixins.isNotEmpty)) {
         _writeType('supertype', supertype);
       }
 
diff --git a/pkg/analyzer/test/src/summary/elements_test.dart b/pkg/analyzer/test/src/summary/elements_test.dart
index dc16003..0e5bbbe 100644
--- a/pkg/analyzer/test/src/summary/elements_test.dart
+++ b/pkg/analyzer/test/src/summary/elements_test.dart
@@ -21724,7 +21724,7 @@
             superConstructor: package:test/foo.dart::@class::A::@constructor::new
 ''');
     var typeA = library.definingCompilationUnit.getClass('B')!.supertype!;
-    expect(typeA.element2.source.shortName, 'foo.dart');
+    expect(typeA.element.source.shortName, 'foo.dart');
   }
 
   test_exportImport_configurations_useFirst() async {
@@ -21757,7 +21757,7 @@
             superConstructor: package:test/foo_io.dart::@class::A::@constructor::new
 ''');
     var typeA = library.definingCompilationUnit.getClass('B')!.supertype!;
-    expect(typeA.element2.source.shortName, 'foo_io.dart');
+    expect(typeA.element.source.shortName, 'foo_io.dart');
   }
 
   test_exportImport_configurations_useSecond() async {
@@ -21790,7 +21790,7 @@
             superConstructor: package:test/foo_html.dart::@class::A::@constructor::new
 ''');
     var typeA = library.definingCompilationUnit.getClass('B')!.supertype!;
-    expect(typeA.element2.source.shortName, 'foo_html.dart');
+    expect(typeA.element.source.shortName, 'foo_html.dart');
   }
 
   test_exports() async {
@@ -24170,7 +24170,7 @@
             superConstructor: package:test/foo.dart::@class::A::@constructor::new
 ''');
     var typeA = library.definingCompilationUnit.getClass('B')!.supertype!;
-    expect(typeA.element2.source.shortName, 'foo.dart');
+    expect(typeA.element.source.shortName, 'foo.dart');
   }
 
   test_import_configurations_useFirst() async {
@@ -24201,7 +24201,7 @@
             superConstructor: package:test/foo_io.dart::@class::A::@constructor::new
 ''');
     var typeA = library.definingCompilationUnit.getClass('B')!.supertype!;
-    expect(typeA.element2.source.shortName, 'foo_io.dart');
+    expect(typeA.element.source.shortName, 'foo_io.dart');
   }
 
   test_import_configurations_useFirst_eqTrue() async {
@@ -24232,7 +24232,7 @@
             superConstructor: package:test/foo_io.dart::@class::A::@constructor::new
 ''');
     var typeA = library.definingCompilationUnit.getClass('B')!.supertype!;
-    expect(typeA.element2.source.shortName, 'foo_io.dart');
+    expect(typeA.element.source.shortName, 'foo_io.dart');
   }
 
   test_import_configurations_useSecond() async {
@@ -24263,7 +24263,7 @@
             superConstructor: package:test/foo_html.dart::@class::A::@constructor::new
 ''');
     var typeA = library.definingCompilationUnit.getClass('B')!.supertype!;
-    expect(typeA.element2.source.shortName, 'foo_html.dart');
+    expect(typeA.element.source.shortName, 'foo_html.dart');
   }
 
   test_import_configurations_useSecond_eqTrue() async {
@@ -24294,7 +24294,7 @@
             superConstructor: package:test/foo_html.dart::@class::A::@constructor::new
 ''');
     var typeA = library.definingCompilationUnit.getClass('B')!.supertype!;
-    expect(typeA.element2.source.shortName, 'foo_html.dart');
+    expect(typeA.element.source.shortName, 'foo_html.dart');
   }
 
   test_import_dartCore_explicit() async {
@@ -25724,7 +25724,7 @@
     // This test should verify that we correctly record inferred types,
     // when the type is defined in a part of an SDK library. So, test that
     // the type is actually in a part.
-    final streamElement = (p.type as InterfaceType).element2;
+    final streamElement = (p.type as InterfaceType).element;
     expect(streamElement.source, isNot(streamElement.library.source));
   }
 
diff --git a/pkg/analyzer/test/utils.dart b/pkg/analyzer/test/utils.dart
index b47f47a..5716dee 100644
--- a/pkg/analyzer/test/utils.dart
+++ b/pkg/analyzer/test/utils.dart
@@ -196,7 +196,7 @@
 
   /// Assert that a type has the element that is equal to the [expected].
   Asserter<DartType> hasElement(Element expected) =>
-      (DartType type) => expect(expected, (type as InterfaceType).element2);
+      (DartType type) => expect(expected, (type as InterfaceType).element);
 
   /// Given assertions for the argument and return types, produce an
   /// assertion over unary function types.
diff --git a/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart b/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart
index 38fbffc..7f6ebca 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart
@@ -1093,7 +1093,7 @@
       } else if (expectedType.isDartCoreString) {
         _addSingleCharacterName(excluded, res, $s);
       } else if (expectedType is InterfaceType) {
-        var className = expectedType.element2.name;
+        var className = expectedType.element.name;
         _addAll(excluded, res, _getCamelWordCombinations(className));
       }
     }
@@ -1108,7 +1108,7 @@
   DartType? _getVisibleType(DartType? type,
       {ExecutableElement? methodBeingCopied}) {
     if (type is InterfaceType) {
-      var element = type.element2;
+      var element = type.element;
       if (element.isPrivate &&
           !dartFileEditBuilder._isDefinedLocally(element)) {
         return null;
@@ -1117,7 +1117,7 @@
     }
     if (type is TypeParameterType) {
       _initializeEnclosingElements();
-      var element = type.element2;
+      var element = type.element;
       var enclosing = element.enclosingElement;
       while (enclosing is GenericFunctionTypeElement ||
           enclosing is ParameterElement) {
@@ -1260,7 +1260,7 @@
 
     if (type is InterfaceType) {
       _writeTypeElementArguments(
-        element: type.element2,
+        element: type.element,
         typeArguments: type.typeArguments,
         methodBeingCopied: methodBeingCopied,
       );
@@ -1275,7 +1275,7 @@
     }
 
     if (type is TypeParameterType) {
-      write(type.element2.name);
+      write(type.element.name);
       _writeTypeNullability(type);
       return true;
     }
diff --git a/pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart b/pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart
index 658e533..72fa2fb 100644
--- a/pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart
+++ b/pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart
@@ -226,7 +226,7 @@
         // in either or both of these cases?
         ) {
       final type = element.type;
-      if (type is InterfaceType && type.element2 == element.enclosingElement) {
+      if (type is InterfaceType && type.element == element.enclosingElement) {
         return plugin.ElementKind.ENUM_CONSTANT;
       }
     }
diff --git a/pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart b/pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart
index 577ad0e..821bea8 100644
--- a/pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart
+++ b/pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart
@@ -419,7 +419,7 @@
     var typesToVisit = <InterfaceType>[type];
     while (typesToVisit.isNotEmpty) {
       var nextType = typesToVisit.removeLast();
-      if (!classesSeen.add(nextType.element2)) {
+      if (!classesSeen.add(nextType.element)) {
         // Class had already been seen, so ignore this type.
         continue;
       }
diff --git a/pkg/analyzer_plugin/lib/utilities/navigation/navigation_dart.dart b/pkg/analyzer_plugin/lib/utilities/navigation/navigation_dart.dart
index bc63781..0d42091 100644
--- a/pkg/analyzer_plugin/lib/utilities/navigation/navigation_dart.dart
+++ b/pkg/analyzer_plugin/lib/utilities/navigation/navigation_dart.dart
@@ -366,7 +366,7 @@
       if (token != null && token.keyword == Keyword.VAR) {
         var inferredType = node.declaredElement?.type;
         if (inferredType is InterfaceType) {
-          computer._addRegionForToken(token, inferredType.element2);
+          computer._addRegionForToken(token, inferredType.element);
         }
       }
     }
@@ -567,13 +567,13 @@
         return null;
       }
 
-      var firstElement = firstType.element2;
+      var firstElement = firstType.element;
       for (var i = 1; i < variables.length; i++) {
         final type = variables[i].declaredElement?.type;
         if (type is! InterfaceType) {
           return null;
         }
-        if (type.element2 != firstElement) {
+        if (type.element != firstElement) {
           return null;
         }
       }
diff --git a/pkg/nnbd_migration/lib/src/already_migrated_code_decorator.dart b/pkg/nnbd_migration/lib/src/already_migrated_code_decorator.dart
index e393329..5b04212 100644
--- a/pkg/nnbd_migration/lib/src/already_migrated_code_decorator.dart
+++ b/pkg/nnbd_migration/lib/src/already_migrated_code_decorator.dart
@@ -75,7 +75,7 @@
           namedParameters: namedParameters,
           positionalParameters: positionalParameters);
     } else if (type is InterfaceType) {
-      var typeParameters = type.element2.typeParameters;
+      var typeParameters = type.element.typeParameters;
       if (typeParameters.isNotEmpty) {
         assert(type.typeArguments.length == typeParameters.length);
         int index = 0;
diff --git a/pkg/nnbd_migration/lib/src/decorated_class_hierarchy.dart b/pkg/nnbd_migration/lib/src/decorated_class_hierarchy.dart
index 074da14..b022373 100644
--- a/pkg/nnbd_migration/lib/src/decorated_class_hierarchy.dart
+++ b/pkg/nnbd_migration/lib/src/decorated_class_hierarchy.dart
@@ -33,7 +33,7 @@
   DecoratedType asInstanceOf(DecoratedType type, InterfaceElement? superclass) {
     type = _getInterfaceType(type);
     var typeType = type.type as InterfaceType;
-    var class_ = typeType.element2;
+    var class_ = typeType.element;
     if (class_ == superclass) return type;
     var result = getDecoratedSupertype(class_, superclass!);
     if (result.typeArguments.isNotEmpty && type.typeArguments.isNotEmpty) {
@@ -86,7 +86,7 @@
         // this specific [superclass].
         Map<TypeParameterElement, DecoratedType> substitution = {};
         for (int i = 0; i < supertype.typeArguments.length; i++) {
-          substitution[supertype.element2.typeParameters[i]] =
+          substitution[supertype.element.typeParameters[i]] =
               decoratedSupertype.typeArguments[i]!;
         }
         // Apply that substitution to the relation between [superclass] and
@@ -114,8 +114,8 @@
 
     if (typeType is TypeParameterType) {
       final innerType = _getInterfaceType(
-          _variables!.decoratedTypeParameterBound(typeType.element2)!);
-      return type.substitute({typeType.element2: innerType});
+          _variables!.decoratedTypeParameterBound(typeType.element)!);
+      return type.substitute({typeType.element: innerType});
     }
 
     throw ArgumentError('$type is an unexpected type');
diff --git a/pkg/nnbd_migration/lib/src/decorated_type.dart b/pkg/nnbd_migration/lib/src/decorated_type.dart
index a413b60..3559a4a 100644
--- a/pkg/nnbd_migration/lib/src/decorated_type.dart
+++ b/pkg/nnbd_migration/lib/src/decorated_type.dart
@@ -181,7 +181,7 @@
     if (type is InterfaceType) {
       return {
         for (int i = 0; i < typeArguments.length; i++)
-          type.element2.typeParameters[i]: typeArguments[i]!
+          type.element.typeParameters[i]: typeArguments[i]!
       };
     } else {
       throw StateError(
@@ -231,7 +231,7 @@
         }
         return true;
       } else if (thisType is InterfaceType && otherType is InterfaceType) {
-        if (thisType.element2 != otherType.element2) return false;
+        if (thisType.element != otherType.element) return false;
         if (!_compareLists(typeArguments, other.typeArguments)) {
           return false;
         }
@@ -321,7 +321,7 @@
     if (type is TypeParameterType || type is VoidType) {
       return '$type$trailing';
     } else if (type is InterfaceType) {
-      var name = type.element2.name;
+      var name = type.element.name;
       var args = '';
       if (type.typeArguments.isNotEmpty) {
         args = '<${typeArguments.join(', ')}>';
@@ -445,7 +445,7 @@
       return DecoratedType(undecoratedResult, node,
           typeArguments: newTypeArguments);
     } else if (type is TypeParameterType) {
-      var inner = substitution[type.element2];
+      var inner = substitution[type.element];
       if (inner == null) {
         return this;
       } else {
@@ -685,7 +685,7 @@
 
   _TypeVariableReplacement(TypeParameterElement newTypeVariable)
       : type = TypeParameterTypeImpl(
-          element2: newTypeVariable,
+          element: newTypeVariable,
           nullabilitySuffix: NullabilitySuffix.star,
         );
 
diff --git a/pkg/nnbd_migration/lib/src/edge_builder.dart b/pkg/nnbd_migration/lib/src/edge_builder.dart
index 415b4a3..f58e8e0 100644
--- a/pkg/nnbd_migration/lib/src/edge_builder.dart
+++ b/pkg/nnbd_migration/lib/src/edge_builder.dart
@@ -93,7 +93,7 @@
 
   @override
   DecoratedType _getTypeParameterTypeBound(DecoratedType type) {
-    return bounds[(type.type as TypeParameterType).element2] ??
+    return bounds[(type.type as TypeParameterType).element] ??
         (throw StateError('Unknown bound for $type'));
   }
 }
@@ -716,7 +716,7 @@
     _dispatch(node.withClause);
     var classElement = node.declaredElement!;
     var supertype = classElement.supertype!;
-    var superElement = supertype.element2;
+    var superElement = supertype.element;
     for (var constructorElement in classElement.constructors) {
       assert(constructorElement.isSynthetic);
       var superConstructorElement =
@@ -2209,7 +2209,7 @@
     var rightType = right.type;
     if (leftType is TypeParameterType && leftType != type) {
       // We are "unwrapping" a type parameter type to its bound.
-      final typeParam = leftType.element2;
+      final typeParam = leftType.element;
       return _decorateUpperOrLowerBound(
           astNode,
           type,
@@ -2221,7 +2221,7 @@
     }
     if (rightType is TypeParameterType && rightType != type) {
       // We are "unwrapping" a type parameter type to its bound.
-      final typeParam = rightType.element2;
+      final typeParam = rightType.element;
       return _decorateUpperOrLowerBound(
           astNode,
           type,
@@ -2257,14 +2257,14 @@
           List<DecoratedType?> rightTypeArguments;
           if (isLUB) {
             leftTypeArguments = _decoratedClassHierarchy!
-                .asInstanceOf(left, type.element2)
+                .asInstanceOf(left, type.element)
                 .typeArguments;
             rightTypeArguments = _decoratedClassHierarchy!
-                .asInstanceOf(right, type.element2)
+                .asInstanceOf(right, type.element)
                 .typeArguments;
           } else {
-            if (leftType.element2 != type.element2 ||
-                rightType.element2 != type.element2) {
+            if (leftType.element != type.element ||
+                rightType.element != type.element) {
               _unimplemented(astNode, 'GLB with substitution');
             }
             leftTypeArguments = left.typeArguments;
@@ -2350,8 +2350,8 @@
         return DecoratedType(type, node);
       }
 
-      assert(leftType.element2 == type.element2 &&
-          rightType.element2 == type.element2);
+      assert(leftType.element == type.element &&
+          rightType.element == type.element);
       return DecoratedType(type, node);
     }
     _unimplemented(astNode, '_decorateUpperOrLowerBound');
@@ -2438,7 +2438,7 @@
     // TODO(paulberry): once we've wired up flow analysis, return promoted
     // bounds if applicable.
     return _variables
-        .decoratedTypeParameterBound((type.type as TypeParameterType).element2);
+        .decoratedTypeParameterBound((type.type as TypeParameterType).element);
   }
 
   /// Creates the necessary constraint(s) for an assignment of the given
@@ -3575,7 +3575,7 @@
     }
 
     if (dartType is InterfaceType &&
-        dartType.element2 == typeProvider.futureOrElement) {
+        dartType.element == typeProvider.futureOrElement) {
       var typeArguments = type.typeArguments;
       if (typeArguments.length == 1) {
         // Wrapping FutureOr<T?1>?2 should produce Future<T?3>, where either 1
@@ -3807,7 +3807,7 @@
     } else if (sourceType is InterfaceType &&
         destinationType is InterfaceType) {
       var rewrittenSource = _decoratedClassHierarchy!
-          .asInstanceOf(source, destinationType.element2);
+          .asInstanceOf(source, destinationType.element);
       assert(rewrittenSource.typeArguments.length ==
           destination.typeArguments.length);
       for (int i = 0; i < rewrittenSource.typeArguments.length; i++) {
@@ -3875,7 +3875,7 @@
         sourceType.isDartCoreObject ||
         sourceType.isVoid) {
       if (destinationType is InterfaceType) {
-        for (final param in destinationType.element2.typeParameters) {
+        for (final param in destinationType.element.typeParameters) {
           assert(param.bound == null,
               'downcast to type parameters with bounds not supported');
         }
@@ -3926,7 +3926,7 @@
     } else if (destinationType is InterfaceType) {
       if (sourceType is InterfaceType) {
         final target = _decoratedClassHierarchy!
-            .asInstanceOf(destination, sourceType.element2);
+            .asInstanceOf(destination, sourceType.element);
         for (var i = 0; i < source.typeArguments.length; ++i) {
           _checkDowncast(origin,
               source: source.typeArguments[i]!,
@@ -4018,7 +4018,7 @@
     final self = this;
     if (self is TypeParameterType &&
         self.nullabilitySuffix == NullabilitySuffix.star) {
-      return self.element2.bound.explicitBound;
+      return self.element.bound.explicitBound;
     }
     return self;
   }
diff --git a/pkg/nnbd_migration/lib/src/fix_aggregator.dart b/pkg/nnbd_migration/lib/src/fix_aggregator.dart
index 4014018..4e2a94b 100644
--- a/pkg/nnbd_migration/lib/src/fix_aggregator.dart
+++ b/pkg/nnbd_migration/lib/src/fix_aggregator.dart
@@ -134,7 +134,7 @@
     String suffix =
         type.nullabilitySuffix == NullabilitySuffix.question ? '?' : '';
     if (type is InterfaceType) {
-      var name = elementToCode(type.element2);
+      var name = elementToCode(type.element);
       var typeArguments = type.typeArguments;
       if (typeArguments.isEmpty) {
         return '$name$suffix';
diff --git a/pkg/nnbd_migration/lib/src/fix_builder.dart b/pkg/nnbd_migration/lib/src/fix_builder.dart
index 0cfe32c..ef58f21 100644
--- a/pkg/nnbd_migration/lib/src/fix_builder.dart
+++ b/pkg/nnbd_migration/lib/src/fix_builder.dart
@@ -381,7 +381,7 @@
         () => element.interfacesInternal,
         () => [
               for (var interface in element.interfacesInternal)
-                _getClassInterface(element, interface.element2)
+                _getClassInterface(element, interface.element)
             ]);
   }
 
diff --git a/pkg/nnbd_migration/lib/src/node_builder.dart b/pkg/nnbd_migration/lib/src/node_builder.dart
index 376706c..cf3bb7c 100644
--- a/pkg/nnbd_migration/lib/src/node_builder.dart
+++ b/pkg/nnbd_migration/lib/src/node_builder.dart
@@ -533,7 +533,7 @@
     List<DecoratedType> positionalParameters = const <DecoratedType>[];
     Map<String, DecoratedType> namedParameters =
         const <String, DecoratedType>{};
-    if (type is InterfaceType && type.element2.typeParameters.isNotEmpty) {
+    if (type is InterfaceType && type.element.typeParameters.isNotEmpty) {
       if (node is NamedType) {
         if (node.typeArguments == null) {
           int index = 0;
@@ -933,7 +933,7 @@
         } else {
           decoratedSupertype = supertype.accept(this);
         }
-        var class_ = (decoratedSupertype!.type as InterfaceType).element2;
+        var class_ = (decoratedSupertype!.type as InterfaceType).element;
         decoratedSupertypes[class_] = decoratedSupertype;
       }
     });
diff --git a/pkg/nnbd_migration/lib/src/utilities/resolution_utils.dart b/pkg/nnbd_migration/lib/src/utilities/resolution_utils.dart
index 2361147..3971a35 100644
--- a/pkg/nnbd_migration/lib/src/utilities/resolution_utils.dart
+++ b/pkg/nnbd_migration/lib/src/utilities/resolution_utils.dart
@@ -32,7 +32,7 @@
 
   List<String> _computeObjectGetNames() {
     var result = <String>[];
-    var objectClass = typeProvider.objectType.element2;
+    var objectClass = typeProvider.objectType.element;
     for (var accessor in objectClass.accessors) {
       assert(accessor.isGetter);
       assert(!accessor.name.startsWith('_'));
diff --git a/pkg/nnbd_migration/lib/src/utilities/where_not_null_transformer.dart b/pkg/nnbd_migration/lib/src/utilities/where_not_null_transformer.dart
index 17e7526..cc27031 100644
--- a/pkg/nnbd_migration/lib/src/utilities/where_not_null_transformer.dart
+++ b/pkg/nnbd_migration/lib/src/utilities/where_not_null_transformer.dart
@@ -69,7 +69,7 @@
     var type = decoratedType.type;
     var typeArguments = decoratedType.typeArguments;
     if (type is InterfaceType &&
-        type.element2 == _typeProvider.iterableElement &&
+        type.element == _typeProvider.iterableElement &&
         typeArguments.length == 1) {
       return DecoratedType(type, decoratedType.node,
           typeArguments: [typeArguments.single?.withNode(graph.never)]);
@@ -86,11 +86,11 @@
   /// checks or type casts in other parts of the code.
   DartType transformPostMigrationInvocationType(DartType type) {
     if (type is InterfaceType &&
-        type.element2 == _typeProvider.iterableElement) {
+        type.element == _typeProvider.iterableElement) {
       var typeArguments = type.typeArguments;
       if (typeArguments.length == 1) {
         return InterfaceTypeImpl(
-            element2: type.element2,
+            element: type.element,
             typeArguments: [_typeSystem.promoteToNonNull(typeArguments.single)],
             nullabilitySuffix: type.nullabilitySuffix);
       }
diff --git a/pkg/nnbd_migration/lib/src/variables.dart b/pkg/nnbd_migration/lib/src/variables.dart
index 573ce93..2276eec 100644
--- a/pkg/nnbd_migration/lib/src/variables.dart
+++ b/pkg/nnbd_migration/lib/src/variables.dart
@@ -341,7 +341,7 @@
       );
     } else if (type is InterfaceType) {
       return InterfaceTypeImpl(
-        element2: type.element2,
+        element: type.element,
         typeArguments: [
           for (var arg in decoratedType.typeArguments) toFinalType(arg!)
         ],
@@ -349,7 +349,7 @@
       );
     } else if (type is TypeParameterType) {
       return TypeParameterTypeImpl(
-        element2: type.element2,
+        element: type.element,
         nullabilitySuffix: nullabilitySuffix,
       );
     } else {
@@ -422,7 +422,7 @@
     var result = <InterfaceElement, DecoratedType>{};
     for (var decoratedSupertype
         in _alreadyMigratedCodeDecorator.getImmediateSupertypes(class_)) {
-      var class_ = (decoratedSupertype.type as InterfaceType).element2;
+      var class_ = (decoratedSupertype.type as InterfaceType).element;
       result[class_] = decoratedSupertype;
     }
     return result;
diff --git a/pkg/nnbd_migration/test/already_migrated_code_decorator_test.dart b/pkg/nnbd_migration/test/already_migrated_code_decorator_test.dart
index c7b390f..4eacc04 100644
--- a/pkg/nnbd_migration/test/already_migrated_code_decorator_test.dart
+++ b/pkg/nnbd_migration/test/already_migrated_code_decorator_test.dart
@@ -69,7 +69,7 @@
         typeFormals: [typeFormal],
         parameters: const [],
         returnType: TypeParameterTypeImpl(
-          element2: typeFormal,
+          element: typeFormal,
           nullabilitySuffix: NullabilitySuffix.star,
         ),
         nullabilitySuffix: suffix,
@@ -98,7 +98,7 @@
         typeFormals: [typeFormal],
         parameters: const [],
         returnType: TypeParameterTypeImpl(
-          element2: typeFormal,
+          element: typeFormal,
           nullabilitySuffix: NullabilitySuffix.star,
         ),
         nullabilitySuffix: suffix,
@@ -244,7 +244,7 @@
     var withElement = await _ContextWithFiles().withEmptyUnit();
 
     var decoratedType = withElement.decorate(InterfaceTypeImpl(
-        element2: withElement.typeProvider.mapElement,
+        element: withElement.typeProvider.mapElement,
         typeArguments: [
           withElement.typeProvider.intType,
           withElement.typeProvider.numType
@@ -262,7 +262,7 @@
     withElement.checkInt(
         withElement.decorate(
           InterfaceTypeImpl(
-            element2: withElement.typeProvider.intElement,
+            element: withElement.typeProvider.intElement,
             typeArguments: const [],
             nullabilitySuffix: NullabilitySuffix.question,
           ),
@@ -277,7 +277,7 @@
     withElement.checkInt(
         withElement.decorate(
           InterfaceTypeImpl(
-            element2: withElement.typeProvider.intElement,
+            element: withElement.typeProvider.intElement,
             typeArguments: const [],
             nullabilitySuffix: suffix,
           ),
@@ -311,7 +311,7 @@
 
     withElement.checkTypeParameter(
         withElement.decorate(TypeParameterTypeImpl(
-            element2: element, nullabilitySuffix: NullabilitySuffix.question)),
+            element: element, nullabilitySuffix: NullabilitySuffix.question)),
         withElement.checkExplicitlyNullable,
         element,
         'test type');
@@ -325,8 +325,8 @@
     var withElement = withUnit.withElement(element);
 
     withElement.checkTypeParameter(
-        withElement.decorate(TypeParameterTypeImpl(
-            element2: element, nullabilitySuffix: suffix)),
+        withElement.decorate(
+            TypeParameterTypeImpl(element: element, nullabilitySuffix: suffix)),
         withElement.checkExplicitlyNonNullable,
         element,
         'test type');
@@ -536,7 +536,7 @@
     String displayName,
   ) {
     final type = decoratedType.type as InterfaceType;
-    expect(type.element2, typeProvider.futureOrElement);
+    expect(type.element, typeProvider.futureOrElement);
     checkNullability(decoratedType.node, displayName);
     checkArgument(
         decoratedType.typeArguments[0], 'type argument 0 of $displayName');
@@ -548,7 +548,7 @@
     String displayName,
   ) {
     final type = decoratedType.type as InterfaceType;
-    expect(type.element2, typeProvider.intElement);
+    expect(type.element, typeProvider.intElement);
     checkNullability(decoratedType.node, displayName);
   }
 
@@ -559,7 +559,7 @@
     String displayName,
   ) {
     final type = decoratedType.type as InterfaceType;
-    expect(type.element2, typeProvider.iterableElement);
+    expect(type.element, typeProvider.iterableElement);
     checkNullability(decoratedType.node, displayName);
     checkArgument(
         decoratedType.typeArguments[0], 'type argument 0 of $displayName');
@@ -576,7 +576,7 @@
     String displayName,
   ) {
     final type = decoratedType.type as InterfaceType;
-    expect(type.element2, typeProvider.numElement);
+    expect(type.element, typeProvider.numElement);
     checkNullability(decoratedType.node, displayName);
   }
 
@@ -586,7 +586,7 @@
     String displayName,
   ) {
     final type = decoratedType.type as InterfaceType;
-    expect(type.element2, typeProvider.objectType.element2);
+    expect(type.element, typeProvider.objectType.element);
     checkNullability(decoratedType.node, displayName);
   }
 
@@ -597,7 +597,7 @@
     String displayName,
   ) {
     var type = decoratedType.type as TypeParameterTypeImpl;
-    expect(type.element2, same(expectedElement));
+    expect(type.element, same(expectedElement));
     checkNullability(decoratedType.node, displayName);
   }
 
diff --git a/pkg/nnbd_migration/test/decorated_type_test.dart b/pkg/nnbd_migration/test/decorated_type_test.dart
index 847f26a..82d20e3 100644
--- a/pkg/nnbd_migration/test/decorated_type_test.dart
+++ b/pkg/nnbd_migration/test/decorated_type_test.dart
@@ -384,12 +384,12 @@
     expect(
         ((type.typeFormals[0].bound as InterfaceType).typeArguments[0]
                 as TypeParameterType)
-            .element2,
+            .element,
         same(type.typeFormals[1]));
     expect(
         ((type.typeFormals[2].bound as InterfaceType).typeArguments[0]
                 as TypeParameterType)
-            .element2,
+            .element,
         same(type.typeFormals[1]));
   }
 
@@ -404,7 +404,7 @@
     expect(
         ((type.parameters[0].type as InterfaceType).typeArguments[0]
                 as TypeParameterType)
-            .element2,
+            .element,
         same(type.typeFormals[0]));
   }
 
@@ -419,7 +419,7 @@
     expect(
         ((type.parameters[0].type as InterfaceType).typeArguments[0]
                 as TypeParameterType)
-            .element2,
+            .element,
         same(type.typeFormals[0]));
   }
 
@@ -434,7 +434,7 @@
     expect(
         ((type.parameters[0].type as InterfaceType).typeArguments[0]
                 as TypeParameterType)
-            .element2,
+            .element,
         same(type.typeFormals[0]));
   }
 
@@ -449,7 +449,7 @@
     expect(
         ((type.returnType as InterfaceType).typeArguments[0]
                 as TypeParameterType)
-            .element2,
+            .element,
         same(type.typeFormals[0]));
   }
 
diff --git a/pkg/nnbd_migration/test/edge_builder_test.dart b/pkg/nnbd_migration/test/edge_builder_test.dart
index 4ebf354..0c6772d 100644
--- a/pkg/nnbd_migration/test/edge_builder_test.dart
+++ b/pkg/nnbd_migration/test/edge_builder_test.dart
@@ -103,7 +103,7 @@
     }
     return DecoratedType(
       InterfaceTypeImpl(
-        element2: _myListOfListClass!,
+        element: _myListOfListClass!,
         typeArguments: [elementType.type!],
         nullabilitySuffix: NullabilitySuffix.star,
       ),
@@ -5049,7 +5049,7 @@
 ''');
     var toStringReturnType = variables
         .decoratedElementType(
-            typeProvider.objectType.element2.getMethod('toString')!)
+            typeProvider.objectType.element.getMethod('toString')!)
         .returnType!;
     assertEdge(
         toStringReturnType.node, decoratedTypeAnnotation('String f').node,
@@ -6939,7 +6939,7 @@
     await analyze('int f(void Function() g) => g.hashCode;');
     var hashCodeReturnType = variables
         .decoratedElementType(
-            typeProvider.objectType.element2.getGetter('hashCode')!)
+            typeProvider.objectType.element.getGetter('hashCode')!)
         .returnType!;
     assertEdge(hashCodeReturnType.node, decoratedTypeAnnotation('int f').node,
         hard: false);
@@ -8255,7 +8255,7 @@
 
   @override
   DecoratedType asInstanceOf(DecoratedType type, InterfaceElement? superclass) {
-    var class_ = (type.type as InterfaceType).element2;
+    var class_ = (type.type as InterfaceType).element;
     if (class_ == superclass) return type;
     if (superclass!.name == 'Object') {
       return DecoratedType(
diff --git a/pkg/nnbd_migration/test/node_builder_test.dart b/pkg/nnbd_migration/test/node_builder_test.dart
index 341a654..785c9c9 100644
--- a/pkg/nnbd_migration/test/node_builder_test.dart
+++ b/pkg/nnbd_migration/test/node_builder_test.dart
@@ -312,7 +312,7 @@
 class C<T, U> {}
 ''');
     var types = decoratedDirectSupertypes('C');
-    var decorated = types[typeProvider.objectType.element2]!;
+    var decorated = types[typeProvider.objectType.element]!;
     _assertType(decorated.type!, 'Object');
     assertEdge(decorated.node, never, hard: true, checkable: false);
     expect(decorated.typeArguments, isEmpty);
@@ -418,7 +418,7 @@
 mixin C<T, U> {}
 ''');
     var types = decoratedDirectSupertypes('C');
-    var decorated = types[typeProvider.objectType.element2]!;
+    var decorated = types[typeProvider.objectType.element]!;
     _assertType(decorated.type!, 'Object');
     assertEdge(decorated.node, never, hard: true, checkable: false);
     expect(decorated.typeArguments, isEmpty);
@@ -1066,13 +1066,13 @@
     // type.
     expect(decoratedType.typeFormals, isEmpty);
     expect(decoratedType.returnType, same(decoratedTypeAnnotation('T F')));
-    expect((decoratedType.returnType!.type as TypeParameterType).element2,
-        same(t));
+    expect(
+        (decoratedType.returnType!.type as TypeParameterType).element, same(t));
     expect(
         decoratedType.returnType!.node, TypeMatcher<NullabilityNodeMutable>());
     expect(
         (decoratedType.positionalParameters![0].type as TypeParameterType)
-            .element2,
+            .element,
         same(u));
     expect(decoratedType.positionalParameters![0].node,
         TypeMatcher<NullabilityNodeMutable>());
@@ -1220,11 +1220,11 @@
     expect(decoratedType.typeFormals, hasLength(2));
     var t = decoratedType.typeFormals![0];
     var u = decoratedType.typeFormals![1];
-    expect((decoratedType.returnType!.type as TypeParameterType).element2,
-        same(t));
+    expect(
+        (decoratedType.returnType!.type as TypeParameterType).element, same(t));
     expect(
         (decoratedType.positionalParameters![0].type as TypeParameterType)
-            .element2,
+            .element,
         same(u));
   }
 
@@ -1300,13 +1300,13 @@
     var t = decoratedType.typeFormals![0];
     var u = decoratedType.typeFormals![1];
     expect(decoratedType.returnType, same(decoratedTypeAnnotation('T F')));
-    expect((decoratedType.returnType!.type as TypeParameterType).element2,
-        same(t));
+    expect(
+        (decoratedType.returnType!.type as TypeParameterType).element, same(t));
     expect(
         decoratedType.returnType!.node, TypeMatcher<NullabilityNodeMutable>());
     expect(
         (decoratedType.positionalParameters![0].type as TypeParameterType)
-            .element2,
+            .element,
         same(u));
     expect(decoratedType.positionalParameters![0].node,
         TypeMatcher<NullabilityNodeMutable>());
@@ -1327,13 +1327,13 @@
     // type.
     expect(decoratedType.typeFormals, isEmpty);
     expect(decoratedType.returnType, same(decoratedTypeAnnotation('T F')));
-    expect((decoratedType.returnType!.type as TypeParameterType).element2,
-        same(t));
+    expect(
+        (decoratedType.returnType!.type as TypeParameterType).element, same(t));
     expect(
         decoratedType.returnType!.node, TypeMatcher<NullabilityNodeMutable>());
     expect(
         (decoratedType.positionalParameters![0].type as TypeParameterType)
-            .element2,
+            .element,
         same(u));
     expect(decoratedType.positionalParameters![0].node,
         TypeMatcher<NullabilityNodeMutable>());
diff --git a/pkg/vm/lib/transformations/type_flow/summary_collector.dart b/pkg/vm/lib/transformations/type_flow/summary_collector.dart
index d107cf1..eec2c70 100644
--- a/pkg/vm/lib/transformations/type_flow/summary_collector.dart
+++ b/pkg/vm/lib/transformations/type_flow/summary_collector.dart
@@ -1155,11 +1155,14 @@
     //  - nullable (including Null)
     //  - a type parameter (it can be instantiated with Null)
     //  - legacy Never
+    //  - a FutureOr of the above
     final nullability = type.nullability;
     return _environment.isTop(type) ||
         nullability == Nullability.nullable ||
         type is TypeParameterType ||
-        (type is NeverType && nullability == Nullability.legacy);
+        (type is NeverType && nullability == Nullability.legacy) ||
+        (type is FutureOrType &&
+            _canBeNullAfterSuccessfulIsCheck(type.typeArgument));
   }
 
   TypeExpr _makeNarrowNotNull(TreeNode node, TypeExpr arg) {
diff --git a/tools/VERSION b/tools/VERSION
index 2f95c15..77b5cb5 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 19
 PATCH 0
-PRERELEASE 279
+PRERELEASE 280
 PRERELEASE_PATCH 0