Deprecate DartType.element3, use element instead.

Change-Id: Idef9da09c565a05fa84869f7433df3c24c6fbb5f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/435521
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analysis_server/lib/src/computer/computer_inlay_hint.dart b/pkg/analysis_server/lib/src/computer/computer_inlay_hint.dart
index ab04556..6df65a6 100644
--- a/pkg/analysis_server/lib/src/computer/computer_inlay_hint.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_inlay_hint.dart
@@ -186,8 +186,8 @@
         InlayHintLabelPart(
           // Write type without type args or nullability suffix. Type args need
           // adding as their own parts, and the nullability suffix does after them.
-          value: type.element3?.name3 ?? type.getDisplayString(),
-          location: _locationForElement(type.element3),
+          value: type.element?.name3 ?? type.getDisplayString(),
+          location: _locationForElement(type.element),
         ),
       );
       // Call recursively for any nested type arguments.
diff --git a/pkg/analysis_server/lib/src/computer/computer_lazy_type_hierarchy.dart b/pkg/analysis_server/lib/src/computer/computer_lazy_type_hierarchy.dart
index a0bcd67..658a57f 100644
--- a/pkg/analysis_server/lib/src/computer/computer_lazy_type_hierarchy.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_lazy_type_hierarchy.dart
@@ -81,7 +81,7 @@
     }
 
     return type is InterfaceType
-        ? TypeHierarchyItem.forElement(type.element3)
+        ? TypeHierarchyItem.forElement(type.element)
         : null;
   }
 
@@ -259,28 +259,28 @@
 
   static TypeHierarchyRelatedItem? constrainedTo(InterfaceType type) =>
       _forElement(
-        type.element3,
+        type.element,
         relationship: TypeHierarchyItemRelationship.constrainedTo,
       );
 
   static TypeHierarchyRelatedItem? extends_(InterfaceType type) => _forElement(
-    type.element3,
+    type.element,
     relationship: TypeHierarchyItemRelationship.extends_,
   );
 
   static TypeHierarchyRelatedItem? implements(InterfaceType type) =>
       _forElement(
-        type.element3,
+        type.element,
         relationship: TypeHierarchyItemRelationship.implements,
       );
 
   static TypeHierarchyRelatedItem? mixesIn(InterfaceType type) => _forElement(
-    type.element3,
+    type.element,
     relationship: TypeHierarchyItemRelationship.mixesIn,
   );
 
   static TypeHierarchyRelatedItem? unknown(InterfaceType type) => _forElement(
-    type.element3,
+    type.element,
     relationship: TypeHierarchyItemRelationship.unknown,
   );
 
diff --git a/pkg/analysis_server/lib/src/computer/computer_overrides.dart b/pkg/analysis_server/lib/src/computer/computer_overrides.dart
index f4ce810..de4dabb 100644
--- a/pkg/analysis_server/lib/src/computer/computer_overrides.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_overrides.dart
@@ -174,13 +174,13 @@
     }
     // interfaces
     for (var interfaceType in class_.interfaces) {
-      _addInterfaceOverrides(interfaceType.element3, true);
+      _addInterfaceOverrides(interfaceType.element, true);
     }
     // super
-    _addInterfaceOverrides(class_.supertype?.element3, checkType);
+    _addInterfaceOverrides(class_.supertype?.element, checkType);
     if (class_ is MixinElement) {
       for (var constraint in class_.superclassConstraints) {
-        _addInterfaceOverrides(constraint.element3, true);
+        _addInterfaceOverrides(constraint.element, true);
       }
     }
   }
@@ -203,13 +203,13 @@
       }
     }
 
-    _addSuperOverrides(class_.supertype?.element3);
+    _addSuperOverrides(class_.supertype?.element);
     for (var mixin_ in class_.mixins) {
-      _addSuperOverrides(mixin_.element3);
+      _addSuperOverrides(mixin_.element);
     }
     if (class_ is MixinElement) {
       for (var constraint in class_.superclassConstraints) {
-        _addSuperOverrides(constraint.element3);
+        _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 071ccdd..acd0135 100644
--- a/pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart
+++ b/pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart
@@ -136,7 +136,7 @@
     if (type is! InterfaceType || !type.isWidgetType) {
       return null;
     }
-    var className = type.element3.displayName;
+    var className = type.element.displayName;
 
     if (node is InstanceCreationExpression) {
       var attributes = <protocol.FlutterOutlineAttribute>[];
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/editable_arguments_mixin.dart b/pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/editable_arguments_mixin.dart
index 1a80814..efe1457 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/editable_arguments_mixin.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/editable_arguments_mixin.dart
@@ -159,8 +159,8 @@
 
   /// Returns a list of the constants of an enum constant prefixed with the enum
   /// name.
-  List<String> getQualifiedEnumConstantNames(EnumElement element3) =>
-      element3.constants2.map(getQualifiedEnumConstantName).nonNulls.toList();
+  List<String> getQualifiedEnumConstantNames(EnumElement element) =>
+      element.constants2.map(getQualifiedEnumConstantName).nonNulls.toList();
 
   /// Returns the name of an enum constant prefixed with the enum name.
   static String? getQualifiedEnumConstantName(FieldElement enumConstant) {
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/handler_edit_argument.dart b/pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/handler_edit_argument.dart
index 8a6efb2..432db24 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/handler_edit_argument.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/handler_edit_argument.dart
@@ -210,9 +210,9 @@
         ),
       );
     } else if (parameter.type case InterfaceType(
-      :EnumElement element3,
+      :EnumElement element,
     ) when value is String?) {
-      var allowedValues = getQualifiedEnumConstantNames(element3);
+      var allowedValues = getQualifiedEnumConstantNames(element);
       if (allowedValues.contains(value)) {
         return success(value.toString());
       } else {
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/handler_editable_arguments.dart b/pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/handler_editable_arguments.dart
index 1b60b1f..05d3159 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/handler_editable_arguments.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/handler_editable_arguments.dart
@@ -200,11 +200,11 @@
       type = 'string';
       value = values.argumentValue?.toStringValue();
       defaultValue = values.parameterValue?.toStringValue();
-    } else if (parameter.type case InterfaceType(:EnumElement element3)) {
+    } else if (parameter.type case InterfaceType(:EnumElement element)) {
       type = 'enum';
-      options = getQualifiedEnumConstantNames(element3);
-      value = values.argumentValue?.toEnumStringValue(element3);
-      defaultValue = values.parameterValue?.toEnumStringValue(element3);
+      options = getQualifiedEnumConstantNames(element);
+      value = values.argumentValue?.toEnumStringValue(element);
+      defaultValue = values.parameterValue?.toEnumStringValue(element);
     } else {
       // TODO(dantup): Determine which parameters we don't include (such as
       //  Widgets) and which we include just without values.
@@ -252,14 +252,14 @@
 }
 
 extension on DartObject? {
-  Object? toEnumStringValue(EnumElement element3) {
+  Object? toEnumStringValue(EnumElement element) {
     var valueObject = this;
     if (valueObject?.type case InterfaceType(
-      element3: EnumElement valueElement,
-    ) when element3 == valueElement) {
+      element: EnumElement valueElement,
+    ) when element == valueElement) {
       var index = valueObject?.getField('index')?.toIntValue();
       if (index != null) {
-        var enumConstant = element3.constants2.elementAtOrNull(index);
+        var enumConstant = element.constants2.elementAtOrNull(index);
         if (enumConstant != null) {
           return EditableArgumentsMixin.getQualifiedEnumConstantName(
             enumConstant,
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/custom/handler_super.dart b/pkg/analysis_server/lib/src/lsp/handlers/custom/handler_super.dart
index d05030e..d937acc 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/custom/handler_super.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/custom/handler_super.dart
@@ -88,7 +88,7 @@
     // For super classes, we use the first fragment (the original declaration).
     // This differs from methods/getters because we jump to the end of the
     // augmentation chain for those.
-    return element.supertype?.element3.firstFragment;
+    return element.supertype?.element.firstFragment;
   }
 
   Fragment? _findSuperConstructor(ConstructorElement element) {
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 cdd7b11..3f343c9 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
@@ -106,9 +106,9 @@
 
         analyzer.Element? element;
         if (type is InterfaceType) {
-          element = type.element3;
+          element = type.element;
         } else if (type is TypeParameterType) {
-          element = type.element3;
+          element = type.element;
         }
         if (element is! analyzer.Element) {
           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 8267d9f..21202b7 100644
--- a/pkg/analysis_server/lib/src/search/type_hierarchy.dart
+++ b/pkg/analysis_server/lib/src/search/type_hierarchy.dart
@@ -139,19 +139,19 @@
       var superType = classElement.supertype;
       if (superType != null) {
         item.superclass = _createSuperItem(
-          superType.element3,
+          superType.element,
           superType.typeArguments,
         );
       }
     }
     // mixins
     for (var type in classElement.mixins) {
-      var id = _createSuperItem(type.element3, type.typeArguments);
+      var id = _createSuperItem(type.element, type.typeArguments);
       item.mixins.add(id);
     }
     // interfaces
     for (var type in classElement.interfaces) {
-      var id = _createSuperItem(type.element3, type.typeArguments);
+      var id = _createSuperItem(type.element, type.typeArguments);
       item.interfaces.add(id);
     }
     // done
@@ -232,7 +232,7 @@
     }
     // try to find in the class mixin
     for (var mixin in clazz.mixins.reversed) {
-      var mixinElement = mixin.element3;
+      var mixinElement = mixin.element;
       if (pivotKind == ElementKind.METHOD) {
         result = mixinElement.lookUpMethod(
           name: pivotName,
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart b/pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart
index 475c969..9e9667e1 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart
@@ -457,7 +457,7 @@
   }) {
     var extendedType = extension.extendedType;
     var referencingInterface =
-        (extendedType is InterfaceType) ? extendedType.element3 : null;
+        (extendedType is InterfaceType) ? extendedType.element : null;
     if (includeMethods) {
       for (var method in extension.methods) {
         if (!method.isStatic) {
@@ -648,7 +648,7 @@
     if (element is TypeAliasElement) {
       var aliasedType = element.aliasedType;
       if (aliasedType is InterfaceType) {
-        element = aliasedType.element3;
+        element = aliasedType.element;
       }
     }
     switch (element) {
@@ -1109,8 +1109,8 @@
     var substitution = Substitution.fromInterfaceType(type);
     var map =
         onlySuper
-            ? type.element3.inheritedConcreteMembers
-            : type.element3.interfaceMembers;
+            ? type.element.inheritedConcreteMembers
+            : type.element.interfaceMembers;
 
     var membersByName = <String, List<ExecutableElement>>{};
     for (var rawMember in map.values) {
@@ -1121,7 +1121,7 @@
             .add(rawMember);
       }
     }
-    var referencingInterface = _referencingInterfaceFor(type.element3);
+    var referencingInterface = _referencingInterfaceFor(type.element);
     for (var entry in membersByName.entries) {
       var members = entry.value;
       var rawMember = _bestMember(members);
@@ -1722,7 +1722,7 @@
     if (element is InterfaceElement) {
       return element;
     } else if (element is InstanceElement) {
-      var thisElement = element.thisType.element3;
+      var thisElement = element.thisType.element;
       if (thisElement is InterfaceElement) {
         return thisElement;
       }
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 60c479e..6138292 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
@@ -478,14 +478,14 @@
       return -1;
     }
     var minDepth = _inheritanceDistance(
-      subclass.supertype?.element3,
+      subclass.supertype?.element,
       superclass,
       visited,
     );
 
     void visitTypes(List<InterfaceType> types) {
       for (var type in types) {
-        var depth = _inheritanceDistance(type.element3, superclass, visited);
+        var depth = _inheritanceDistance(type.element, superclass, visited);
         if (minDepth < 0 || (depth >= 0 && depth < minDepth)) {
           minDepth = depth;
         }
@@ -1283,7 +1283,7 @@
     }
     var declaredElement = field.element2?.library2;
     var uri = declaredElement?.uri;
-    var member = type.element3.getInterfaceMember(Name(uri, name));
+    var member = type.element.getInterfaceMember(Name(uri, name));
     if (member is GetterElement) {
       return member.returnType;
     } else if (member is MethodElement) {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart b/pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart
index b0a17cd..ac2921e 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart
@@ -928,7 +928,7 @@
     var contextType = _computeContextType(node);
     if (contextType == null) return;
 
-    var element = contextType.element3;
+    var element = contextType.element;
     if (element == null) return;
 
     var parent = node.parent;
@@ -2302,7 +2302,7 @@
             featureSet.isEnabled(Feature.dot_shorthands)) {
           var contextType = _computeContextType(node);
           if (contextType == null) return;
-          element = contextType.element3;
+          element = contextType.element;
         } else {
           element = target.element;
         }
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 101de89..7b18290 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
@@ -425,7 +425,7 @@
   }
 
   bool _isEnum(DartType type) {
-    return type is InterfaceType && type.element3 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 4547c39..9a6cc16 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
@@ -44,7 +44,7 @@
 
     var expressionType = statement.expression.staticType;
     if (expressionType is InterfaceType) {
-      var enumElement = expressionType.element3;
+      var enumElement = expressionType.element;
       if (enumElement is EnumElement) {
         enumName = enumElement.name3;
         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 55e2322..2f1863c 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
@@ -34,7 +34,7 @@
       if (expressionType is! InterfaceType) {
         return;
       }
-      var classElement = expressionType.element3;
+      var classElement = expressionType.element;
       var className = classElement.name3;
       if (className == null) {
         return;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_super_parameter.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_super_parameter.dart
index 555c9d6..9131e9a 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_super_parameter.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_super_parameter.dart
@@ -44,7 +44,7 @@
 
     var classElement = classDeclaration.declaredFragment!.element;
     var superType = classElement.supertype;
-    var superElement = superType?.element3;
+    var superElement = superType?.element;
     var superUnnamedConstructor = superElement?.unnamedConstructor2;
     if (superUnnamedConstructor == null) return;
 
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 63ab63b..6ca64b7 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
@@ -604,7 +604,7 @@
               //   class.
               if (fieldElement.isConst &&
                   fieldType is InterfaceType &&
-                  fieldType.element3 == classElement) {
+                  fieldType.element == classElement) {
                 var initializer = field.initializer;
                 if (initializer is InstanceCreationExpression) {
                   var constructorElement = initializer.constructorName.element;
@@ -778,13 +778,13 @@
       throw _CannotConvertException('Unresolved');
     }
     if (element != classElement) {
-      if (element.supertype?.element3 == classElement) {
+      if (element.supertype?.element == classElement) {
         throw _CannotConvertException('Class is extended');
       } else if (element.interfaces
-          .map((e) => e.element3)
+          .map((e) => e.element)
           .contains(classElement)) {
         throw _CannotConvertException('Class is implemented');
-      } else if (element.mixins.map((e) => e.element3).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 f15af71..45b286c 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
@@ -52,7 +52,7 @@
     var classFragment = classDeclaration.declaredFragment!;
     var classElement = classFragment.element;
     for (var type in classElement.mixins) {
-      if (referencedClasses.contains(type.element3)) {
+      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 7636fe1..29a8454 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
@@ -60,7 +60,7 @@
     {
       var iterableType = iterable.staticType;
       if (iterableType is! InterfaceType ||
-          iterableType.element3 != typeProvider.listElement2) {
+          iterableType.element != typeProvider.listElement2) {
         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 4e532a2..b4c5657 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.element3)) {
+        !_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 7bbd746..b51f36b 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
@@ -147,7 +147,7 @@
     }
 
     // TODO(brianwilkerson): Consider also accepting uses of LinkedHashSet.
-    if (type.element3 != typeProvider.setElement2) {
+    if (type.element != typeProvider.setElement2) {
       return null;
     }
     return creation;
@@ -199,15 +199,14 @@
       var parent2 = parent.parent;
       if (parent2 is VariableDeclarationList) {
         var type = parent2.type?.type;
-        if (type is InterfaceType &&
-            type.element3 == typeProvider.setElement2) {
+        if (type is InterfaceType && type.element == typeProvider.setElement2) {
           return true;
         }
       }
     } else if (parent.parent is InvocationExpression) {
       var parameterElement = creation.correspondingParameter;
       var type = parameterElement?.type;
-      if (type is InterfaceType && type.element3 == typeProvider.setElement2) {
+      if (type is InterfaceType && type.element == typeProvider.setElement2) {
         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 03bcb0a..731fc83 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
@@ -86,7 +86,7 @@
     }
 
     // prepare target ClassDeclaration
-    var targetElement = targetType.element3;
+    var targetElement = targetType.element;
     var targetFragment = targetElement.firstFragment;
     var targetResult = await sessionHelper.getFragmentDeclaration(
       targetFragment,
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart
index 2f13558..26ba2ef 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart
@@ -219,7 +219,7 @@
 
     switch (node) {
       case IndexExpression(:var parent):
-        if (node.target?.staticType?.element3.declaresIndex ?? true) {
+        if (node.target?.staticType?.element.declaresIndex ?? true) {
           return;
         }
         target = node.target;
@@ -519,7 +519,7 @@
   List<TypeParameterElement> get typeParameters =>
       {
         for (var type in whereType<TypeParameterType>()) ...[
-          type.element3,
+          type.element,
           ...[type.bound].typeParameters,
         ],
         for (var type in whereType<InterfaceType>())
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 49febdc..0dd983c 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
@@ -77,7 +77,7 @@
 
     await addForObjectPattern(
       builder: builder,
-      targetElement: matchedType.element3,
+      targetElement: matchedType.element,
       fieldName: effectiveName,
       fieldType: fieldType,
     );
@@ -154,7 +154,7 @@
       if (targetType is! InterfaceType) {
         return;
       }
-      targetElement = targetType.element3;
+      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 739f9e2..9f6c550 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
@@ -46,7 +46,7 @@
       if (target != null) {
         var targetType = target.staticType;
         if (targetType is InterfaceType) {
-          targetElement = targetType.element3;
+          targetElement = targetType.element;
           argument = target.parent as Expression;
         } else if (target case SimpleIdentifier(
           :InterfaceElement? element,
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 d0580df..5d3267e 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
@@ -61,7 +61,7 @@
       if (targetType is! InterfaceType) {
         return;
       }
-      targetElement = targetType.element3;
+      targetElement = targetType.element;
       // maybe static
       if (target is Identifier) {
         var targetIdentifier = target;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/destructure_local_variable_assignment.dart b/pkg/analysis_server/lib/src/services/correction/dart/destructure_local_variable_assignment.dart
index af2caae..3fb67ab 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/destructure_local_variable_assignment.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/destructure_local_variable_assignment.dart
@@ -88,7 +88,7 @@
 
     await builder.addDartFileEdit(file, (builder) {
       builder.addReplacement(range.entity(node.name), (builder) {
-        builder.write('${type.element3.name3}(');
+        builder.write('${type.element.name3}(');
         if (varMap.isEmpty) {
           builder.selectHere();
         } else {
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 1acf072..c4c4482 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
@@ -269,11 +269,11 @@
 
     var firstArgument = type.typeArguments.singleOrNull;
     if (firstArgument is! InterfaceType ||
-        firstArgument.element3 != widgetClassElement) {
+        firstArgument.element != widgetClassElement) {
       return false;
     }
 
-    var classElement = type.element3;
+    var classElement = type.element;
     return classElement is ClassElement && classElement.isExactState;
   }
 }
@@ -412,7 +412,7 @@
   void visitInstanceCreationExpression(InstanceCreationExpression node) {
     super.visitInstanceCreationExpression(node);
     var type = node.staticType;
-    if (type is! InterfaceType || type.element3 != stateClassElement) {
+    if (type is! InterfaceType || type.element != stateClassElement) {
       return;
     }
     var methodDeclaration = node.thisOrAncestorOfType<MethodDeclaration>();
@@ -431,7 +431,7 @@
     if (type is InterfaceType &&
         node.methodName.name == 'createState' &&
         (FlutterConvertToStatelessWidget._isState(widgetClassElement, type) ||
-            type.element3 == stateClassElement)) {
+            type.element == stateClassElement)) {
       used = true;
     }
   }
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/flutter_wrap.dart b/pkg/analysis_server/lib/src/services/correction/dart/flutter_wrap.dart
index c3f070e..0abf8c5 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/flutter_wrap.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/flutter_wrap.dart
@@ -441,6 +441,6 @@
 extension on DartType? {
   bool get isWidgetFlexType {
     var self = this;
-    return self is InterfaceType && self.element3.isFlexWidget;
+    return self is InterfaceType && self.element.isFlexWidget;
   }
 }
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 74e44cc..ceeb019 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
@@ -41,7 +41,7 @@
 
     var type = namedType.typeOrThrow;
     if (type is InterfaceTypeImpl) {
-      var element = type.element3;
+      var element = type.element;
       if (element.typeParameters2.length == typeArguments.arguments.length) {
         await builder.addDartFileEdit(file, (builder) {
           var argumentText = utils.getNodeText(typeArguments);
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/use_different_division_operator.dart b/pkg/analysis_server/lib/src/services/correction/dart/use_different_division_operator.dart
index 9d47161..54847dd 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/use_different_division_operator.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/use_different_division_operator.dart
@@ -131,7 +131,7 @@
 
 extension on DartType {
   Set<_DivisionOperator> get divisionOperators {
-    switch (element3) {
+    switch (element) {
       case InterfaceElement element:
         return {
           for (var method in element.methods)
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 abff0fa..3b55b1f 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
@@ -152,11 +152,11 @@
             return true;
           }
           if (type is InterfaceType) {
-            if (components[1] == type.element3.name3) {
+            if (components[1] == type.element.name3) {
               return true;
             }
             for (var supertype in type.allSupertypes) {
-              if (components[1] == supertype.element3.name3) {
+              if (components[1] == supertype.element.name3) {
                 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 8a6687a..fca2c22 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
@@ -96,7 +96,7 @@
           if (element is! InterfaceElement) {
             return false;
           }
-          var types = element.allSupertypes.map((e) => e.element3.name3);
+          var types = element.allSupertypes.map((e) => e.element.name3);
           for (var t in types) {
             if (elementComponents.contains(t)) {
               return true;
@@ -445,7 +445,7 @@
     var targetType = node.prefix.staticType;
     if (targetType is InterfaceType) {
       _addMatcher(
-        components: [node.identifier.name, targetType.element3.name3!],
+        components: [node.identifier.name, targetType.element.name3!],
         kinds: const [
           ElementKind.constantKind,
           ElementKind.fieldKind,
@@ -610,7 +610,7 @@
       var type = target.staticType;
       if (type != null) {
         if (type is InterfaceType) {
-          return type.element3.name3;
+          return type.element.name3;
         } else if (type is DynamicType) {
           // The name is likely to be undefined.
           return target.name;
@@ -621,7 +621,7 @@
     } else if (target != null) {
       var type = target.staticType;
       if (type is InterfaceType) {
-        return type.element3.name3;
+        return type.element.name3;
       }
       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 0a3825b..7aca2cb 100644
--- a/pkg/analysis_server/lib/src/services/correction/name_suggestion.dart
+++ b/pkg/analysis_server/lib/src/services/correction/name_suggestion.dart
@@ -72,7 +72,7 @@
     } else if (expectedType.isDartCoreString) {
       _addSingleCharacterName(excluded, res, 0x73);
     } else if (expectedType is InterfaceType) {
-      var className = expectedType.element3.name3;
+      var className = expectedType.element.name3;
       if (className != null) {
         _addAll(excluded, res, getCamelWordCombinations(className));
       }
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 e9b8d6f..370317e 100644
--- a/pkg/analysis_server/lib/src/services/flutter/class_description.dart
+++ b/pkg/analysis_server/lib/src/services/flutter/class_description.dart
@@ -53,7 +53,7 @@
   /// Return `true` if properties should be created for instances of [type].
   bool hasNestedProperties(DartType type) {
     if (type is InterfaceType) {
-      return _isOptedInClass(type.element3);
+      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 5452931..6328b56 100644
--- a/pkg/analysis_server/lib/src/services/flutter/widget_descriptions.dart
+++ b/pkg/analysis_server/lib/src/services/flutter/widget_descriptions.dart
@@ -388,7 +388,7 @@
     } else if (valueExpression == null) {
       var type = parameter.type;
       if (type is InterfaceType) {
-        var classDescription = classRegistry.get(type.element3);
+        var classDescription = classRegistry.get(type.element);
         if (classDescription != null) {
           _addProperties(
             properties: propertyDescription.children,
@@ -450,7 +450,7 @@
       );
     }
     if (type is InterfaceType) {
-      var classElement = type.element3;
+      var classElement = type.element;
       if (classElement is EnumElement) {
         return protocol.FlutterWidgetPropertyEditor(
           protocol.FlutterWidgetPropertyEditorKind.ENUM,
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 f8599fa..0ac207b 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
@@ -1034,7 +1034,7 @@
       _variableType = _getTypeCode(returnTypeObj);
       if (_hasAwait) {
         if (returnTypeObj is InterfaceType &&
-            returnTypeObj.element3 != typeProvider.futureElement2) {
+            returnTypeObj.element != typeProvider.futureElement2) {
           returnType = _getTypeCode(typeProvider.futureType(returnTypeObj));
         }
       } else {
@@ -1822,7 +1822,7 @@
     if (type is InterfaceType) {
       return _getTypeCodeElementArguments(
         librariesToImport: librariesToImport,
-        element: type.element3,
+        element: type.element,
         isNullable: type.nullabilitySuffix == NullabilitySuffix.question,
         typeArguments: type.typeArguments,
       );
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 0dacc73..7ac2800 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
@@ -672,7 +672,7 @@
       var enclosingClasses =
           this.enclosingClasses ??= <InterfaceElement>[
             enclosingClass,
-            ...enclosingClass.allSupertypes.map((t) => t.element3),
+            ...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 305d54a..b6bd61b 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
@@ -192,7 +192,7 @@
     var enclosingInterfaceElement = node.enclosingInterfaceElement;
     if (enclosingInterfaceElement != null) {
       var elements = [
-        ...enclosingInterfaceElement.allSupertypes.map((type) => type.element3),
+        ...enclosingInterfaceElement.allSupertypes.map((type) => type.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 3371473..e554338 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
@@ -253,7 +253,7 @@
     required Set<InterfaceElement> subClasses,
   }) async {
     var superClasses =
-        interfaceElement.allSupertypes.map((e) => e.element3).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 0266288..ca370bf 100644
--- a/pkg/analysis_server/lib/src/services/search/hierarchy.dart
+++ b/pkg/analysis_server/lib/src/services/search/hierarchy.dart
@@ -132,7 +132,7 @@
 
     var superElementsToSearch =
         enclosingElement.allSupertypes
-            .map((superType) => superType.element3)
+            .map((superType) => superType.element)
             .where((interface) {
               return member2.isPublic || interface.library2 == member2.library2;
             })
@@ -253,7 +253,7 @@
 ///
 /// Excludes: constructors and synthetic elements.
 List<Element> getMembers(InterfaceElement clazz) {
-  var classElements = [...clazz.allSupertypes.map((e) => e.element3), clazz];
+  var classElements = [...clazz.allSupertypes.map((e) => e.element), clazz];
   var members = <Element>[];
   for (var superClass in classElements) {
     members.addAll(getClassMembers(superClass));
diff --git a/pkg/analysis_server/test/src/utilities/selection_coverage_test.dart b/pkg/analysis_server/test/src/utilities/selection_coverage_test.dart
index 2bf01cd..f540cd6 100644
--- a/pkg/analysis_server/test/src/utilities/selection_coverage_test.dart
+++ b/pkg/analysis_server/test/src/utilities/selection_coverage_test.dart
@@ -75,7 +75,7 @@
         var implementsClause = declaration.implementsClause;
         if (implementsClause != null) {
           for (var type in implementsClause.interfaces) {
-            var element = type.type?.element3;
+            var element = type.type?.element;
             if (element is ClassElement && element.name3 == interfaceName) {
               data.instantiableInterfaces.add(element);
             }
@@ -97,7 +97,7 @@
         var implementsClause = declaration.implementsClause;
         if (implementsClause != null) {
           for (var supertype in implementsClause.interfaces) {
-            var supertypeElement = supertype.type?.element3;
+            var supertypeElement = supertype.type?.element;
             if (supertypeElement is ClassElement) {
               data.supertypes
                   .putIfAbsent(subtypeElement, () => [])
@@ -143,7 +143,7 @@
                     .declaredFragment
                     ?.element
                     .type
-                    .element3;
+                    .element;
             if (visitedClass is ClassElement) {
               var visitor = VisitMethodVisitor();
               member.body.accept(visitor);
diff --git a/pkg/analysis_server/tool/bulk_fix/parse_utils.dart b/pkg/analysis_server/tool/bulk_fix/parse_utils.dart
index b3a337f..ac1783c 100644
--- a/pkg/analysis_server/tool/bulk_fix/parse_utils.dart
+++ b/pkg/analysis_server/tool/bulk_fix/parse_utils.dart
@@ -35,7 +35,7 @@
         var classElement = classDecl.declaredFragment?.element;
         if (classElement != null &&
             classElement.allSupertypes.any(
-              (element) => element.element3.name3 == 'CorrectionProducer',
+              (element) => element.element.name3 == 'CorrectionProducer',
             )) {
           var correctionName = classDecl.name.lexeme;
 
diff --git a/pkg/analysis_server/tool/code_completion/relevance_metrics.dart b/pkg/analysis_server/tool/code_completion/relevance_metrics.dart
index 9ce5e26..aa938dd 100644
--- a/pkg/analysis_server/tool/code_completion/relevance_metrics.dart
+++ b/pkg/analysis_server/tool/code_completion/relevance_metrics.dart
@@ -1801,7 +1801,7 @@
       return;
     }
     if (targetType is InterfaceType) {
-      var targetClass = targetType.element3;
+      var targetClass = targetType.element;
       var extension = member.thisOrAncestorOfType2<ExtensionElement>();
       if (extension != null) {
         _recordDistance('member (extension)', 0);
@@ -1823,12 +1823,12 @@
             }
             for (var mixin in currentClass.mixins.reversed) {
               depth++;
-              if (mixin.element3 == memberClass) {
+              if (mixin.element == memberClass) {
                 return depth;
               }
             }
             depth++;
-            currentClass = currentClass.supertype?.element3;
+            currentClass = currentClass.supertype?.element;
           }
           return -1;
         }
@@ -1840,7 +1840,7 @@
           InterfaceElement? currentClass = targetClass;
           while (currentClass != null) {
             depth += currentClass.mixins.length + 1;
-            currentClass = currentClass.supertype?.element3;
+            currentClass = currentClass.supertype?.element;
           }
           return depth;
         }
@@ -2072,16 +2072,16 @@
           argumentType is InterfaceType &&
           parameterType is InterfaceType) {
         int distance;
-        if (parameterType.element3 == typeProvider.futureOrElement2) {
+        if (parameterType.element == typeProvider.futureOrElement2) {
           var typeArgument = parameterType.typeArguments[0];
           distance = featureComputer.inheritanceDistance(
-            argumentType.element3,
+            argumentType.element,
             typeProvider.futureElement2,
           );
           if (typeArgument is InterfaceType) {
             var argDistance = featureComputer.inheritanceDistance(
-              argumentType.element3,
-              typeArgument.element3,
+              argumentType.element,
+              typeArgument.element,
             );
             if (distance < 0 || (argDistance >= 0 && argDistance < distance)) {
               distance = argDistance;
@@ -2089,8 +2089,8 @@
           }
         } else {
           distance = featureComputer.inheritanceDistance(
-            argumentType.element3,
-            parameterType.element3,
+            argumentType.element,
+            parameterType.element,
           );
         }
         data.recordDistance('Subtype of context type ($descriptor)', distance);
diff --git a/pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart b/pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart
index 36d3479..49c2380 100644
--- a/pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart
+++ b/pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart
@@ -482,7 +482,7 @@
   InterfaceElement? getTargetInterfaceElement(Expression target) {
     var type = target.staticType;
     if (type is InterfaceType) {
-      return type.element3;
+      return type.element;
     } else if (target is Identifier) {
       var element = target.element;
       if (element is InterfaceElement) {
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index a32260d..4318eeb 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -61,6 +61,8 @@
 * Deprecate `InterfaceType.lookUpSetter3`, use `lookUpSetter` instead.
 * Remove `PropertyAccessorFragmentImplImplicitGetter`, `PropertyAccessorFragmentImplImplicitSetter`, 
   and `FormalParameterFragmentImplOfImplicitSetter`, replace with `GetterFragmentImpl`, and `SetterFragmentImpl`.
+* Deprecate `ExtensionTypeFragment.representation2`, use `representation` instead.
+* Deprecate `DartType.element3`, use `element` instead.
 
 ## 7.4.1
 * Restore `InstanceElement.augmented` getter.
diff --git a/pkg/analyzer/api.txt b/pkg/analyzer/api.txt
index 7749641..947ed1a 100644
--- a/pkg/analyzer/api.txt
+++ b/pkg/analyzer/api.txt
@@ -4337,7 +4337,8 @@
   DartType (class extends Object):
     new (constructor: DartType Function())
     alias (getter: InstantiatedTypeAliasElement?)
-    element3 (getter: Element?, experimental)
+    element (getter: Element?, experimental)
+    element3 (getter: Element?, deprecated, experimental)
     extensionTypeErasure (getter: DartType)
     isBottom (getter: bool)
     isDartAsyncFuture (getter: bool)
@@ -4369,7 +4370,8 @@
     new (constructor: DynamicType Function())
   FunctionType (class extends Object implements DartType):
     new (constructor: FunctionType Function())
-    element3 (getter: Null)
+    element (getter: Null)
+    element3 (getter: Null, deprecated)
     formalParameters (getter: List<FormalParameterElement>, experimental)
     namedParameterTypes (getter: Map<String, DartType>)
     normalParameterTypes (getter: List<DartType>)
@@ -4385,7 +4387,8 @@
     new (constructor: InterfaceType Function())
     allSupertypes (getter: List<InterfaceType>)
     constructors2 (getter: List<ConstructorElement>, experimental)
-    element3 (getter: InterfaceElement, experimental)
+    element (getter: InterfaceElement, experimental)
+    element3 (getter: InterfaceElement, deprecated, experimental)
     getters (getter: List<GetterElement>, experimental)
     interfaces (getter: List<InterfaceType>)
     methods2 (getter: List<MethodElement>, experimental)
@@ -4416,7 +4419,8 @@
     typeArguments (getter: List<DartType>)
   RecordType (class extends Object implements DartType):
     new (constructor: RecordType Function({required Map<String, DartType> named, required NullabilitySuffix nullabilitySuffix, required List<DartType> positional}))
-    element3 (getter: Null)
+    element (getter: Null)
+    element3 (getter: Null, deprecated)
     namedFields (getter: List<RecordTypeNamedField>)
     positionalFields (getter: List<RecordTypePositionalField>)
   RecordTypeField (class extends Object):
@@ -4430,10 +4434,12 @@
   TypeParameterType (class extends Object implements DartType):
     new (constructor: TypeParameterType Function())
     bound (getter: DartType)
-    element3 (getter: TypeParameterElement, experimental)
+    element (getter: TypeParameterElement, experimental)
+    element3 (getter: TypeParameterElement, deprecated, experimental)
   VoidType (class extends Object implements DartType):
     new (constructor: VoidType Function())
-    element3 (getter: Null)
+    element (getter: Null)
+    element3 (getter: Null, deprecated)
 package:analyzer/dart/element/type_provider.dart:
   TypeProvider (class extends Object):
     new (constructor: TypeProvider Function())
diff --git a/pkg/analyzer/lib/dart/element/type.dart b/pkg/analyzer/lib/dart/element/type.dart
index f8c5248..6cb2a2f 100644
--- a/pkg/analyzer/lib/dart/element/type.dart
+++ b/pkg/analyzer/lib/dart/element/type.dart
@@ -39,6 +39,12 @@
   /// Return the element representing the declaration of this type, or `null`
   /// if the type is not associated with an element.
   @experimental
+  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')
+  @experimental
   Element? get element3;
 
   /// The extension type erasure of this type.
@@ -203,6 +209,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 element3;
 
   /// The formal parameters.
@@ -273,6 +283,11 @@
 
   @experimental
   @override
+  InterfaceElement get element;
+
+  @Deprecated('Use element instead')
+  @experimental
+  @override
   InterfaceElement get element3;
 
   /// Return a list containing all of the getters declared in this type.
@@ -526,6 +541,10 @@
   }) = RecordTypeImpl.fromApi;
 
   @override
+  Null get element;
+
+  @Deprecated('Use element instead')
+  @override
   Null get element3;
 
   /// The named fields (might be empty).
@@ -566,6 +585,11 @@
 
   @experimental
   @override
+  TypeParameterElement get element;
+
+  @Deprecated('Use element instead')
+  @experimental
+  @override
   TypeParameterElement get element3;
 }
 
@@ -573,5 +597,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 element3;
 }
diff --git a/pkg/analyzer/lib/src/dart/analysis/index.dart b/pkg/analyzer/lib/src/dart/analysis/index.dart
index 6cd8c7d..d728223 100644
--- a/pkg/analyzer/lib/src/dart/analysis/index.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/index.dart
@@ -719,7 +719,7 @@
     _addSubtypeForClassDeclaration(node);
     var declaredElement = node.declaredFragment!.element;
     if (node.extendsClause == null) {
-      var objectElement = declaredElement.supertype?.element3;
+      var objectElement = declaredElement.supertype?.element;
       recordRelationOffset(
         objectElement,
         IndexRelationKind.IS_EXTENDED_BY,
@@ -1468,7 +1468,7 @@
       if (superType != null) {
         _recordIsAncestorOf(
           descendant,
-          superType.element3,
+          superType.element,
           true,
           visitedElements,
         );
@@ -1477,20 +1477,20 @@
     for (InterfaceType mixinType in ancestor.mixins) {
       _recordIsAncestorOf(
         descendant,
-        mixinType.element3,
+        mixinType.element,
         true,
         visitedElements,
       );
     }
     if (ancestor is MixinElement) {
       for (InterfaceType type in ancestor.superclassConstraints) {
-        _recordIsAncestorOf(descendant, type.element3, true, visitedElements);
+        _recordIsAncestorOf(descendant, type.element, true, visitedElements);
       }
     }
     for (InterfaceType implementedType in ancestor.interfaces) {
       _recordIsAncestorOf(
         descendant,
-        implementedType.element3,
+        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 9a65c38..7b2c942 100644
--- a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
+++ b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
@@ -554,7 +554,7 @@
         ).eliminateToGreatest(valueType);
         return _typeSystem.isSubtypeOf(constantType, valueTypeGreatest);
       } else if (valueType is TypeParameterTypeImpl) {
-        var bound = valueType.promotedBound ?? valueType.element3.bound;
+        var bound = valueType.promotedBound ?? valueType.element.bound;
         if (bound != null && !hasTypeParameterReference(bound)) {
           var lowestBound =
               valueType.nullabilitySuffix == NullabilitySuffix.question
diff --git a/pkg/analyzer/lib/src/dart/constant/evaluation.dart b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
index d268d95..126cdb3 100644
--- a/pkg/analyzer/lib/src/dart/constant/evaluation.dart
+++ b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
@@ -301,7 +301,7 @@
           var superclass = constant.returnType.superclass;
           if (superclass != null && !superclass.isDartCoreObject) {
             var unnamedConstructor =
-                superclass.element3.unnamedConstructor2?.baseElement;
+                superclass.element.unnamedConstructor2?.baseElement;
             if (unnamedConstructor != null && unnamedConstructor.isConst) {
               callback(unnamedConstructor.asElement);
             }
@@ -955,7 +955,7 @@
       if (typeArgumentTypes != null) {
         var instantiatedTypeArgumentTypes = typeArgumentTypes.map((type) {
           if (type is TypeParameterType) {
-            return _lexicalTypeEnvironment?[type.element3] ?? type;
+            return _lexicalTypeEnvironment?[type.element] ?? type;
           } else {
             return type;
           }
@@ -2989,7 +2989,7 @@
     }
 
     var definingType = this.definingType;
-    if (definingType.element3 case ExtensionTypeElement element) {
+    if (definingType.element case ExtensionTypeElement element) {
       var representation = _fieldMap[element.representation.name3];
       if (representation != null) {
         return representation;
diff --git a/pkg/analyzer/lib/src/dart/constant/value.dart b/pkg/analyzer/lib/src/dart/constant/value.dart
index d97a6d8..267d7ec 100644
--- a/pkg/analyzer/lib/src/dart/constant/value.dart
+++ b/pkg/analyzer/lib/src/dart/constant/value.dart
@@ -1580,7 +1580,7 @@
         return enclosing is ClassElement && enclosing.isDartCoreObject;
       }
 
-      var element = type.element3;
+      var element = type.element;
       var library = element.library2;
 
       var eqEq = type.lookUpMethod('==', library, concrete: true);
diff --git a/pkg/analyzer/lib/src/dart/element/class_hierarchy.dart b/pkg/analyzer/lib/src/dart/element/class_hierarchy.dart
index 512a3bb..174c380 100644
--- a/pkg/analyzer/lib/src/dart/element/class_hierarchy.dart
+++ b/pkg/analyzer/lib/src/dart/element/class_hierarchy.dart
@@ -59,7 +59,7 @@
       interfacesMerger.add(type);
 
       var substitution = Substitution.fromInterfaceType(type);
-      var element = type.element3;
+      var element = type.element;
       var rawInterfaces = implementedInterfaces(element);
       for (var rawInterface in rawInterfaces) {
         var newInterface = substitution.mapInterfaceType(rawInterface);
@@ -127,7 +127,7 @@
   }
 
   void add(InterfaceTypeImpl type) {
-    var element = type.element3;
+    var element = type.element;
     var classResult = _map[element];
     if (classResult == null) {
       classResult = _ClassInterfaceType(
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 2c3aafb..4f2ddc5 100644
--- a/pkg/analyzer/lib/src/dart/element/display_string_builder.dart
+++ b/pkg/analyzer/lib/src/dart/element/display_string_builder.dart
@@ -213,7 +213,7 @@
       return;
     }
 
-    _write(type.element3.name3 ?? '<null>');
+    _write(type.element.name3 ?? '<null>');
     _writeTypeArguments(type.typeArguments);
     _writeNullability(type.nullabilitySuffix);
   }
@@ -376,14 +376,14 @@
       if (hasSuffix) {
         _write('(');
       }
-      _write(type.element3.displayName);
+      _write(type.element.displayName);
       _write(' & ');
       _writeType(promotedBound);
       if (hasSuffix) {
         _write(')');
       }
     } else {
-      _write(type.element3.displayName);
+      _write(type.element.displayName);
     }
     _writeNullability(type.nullabilitySuffix);
   }
@@ -600,7 +600,7 @@
 
     void collectTypeParameters(DartType? type) {
       if (type is TypeParameterType) {
-        referencedTypeParameters.add(type.element3);
+        referencedTypeParameters.add(type.element);
       } else if (type is FunctionType) {
         for (var typeParameter in type.typeParameters) {
           collectTypeParameters(typeParameter.bound);
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 3872637..5a60f74 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -263,12 +263,12 @@
         }
         // check mixins
         for (var mixinType in currentElement.mixins) {
-          classesToVisit.add(mixinType.element3);
+          classesToVisit.add(mixinType.element);
         }
         // check super
         var supertype = currentElement.supertype;
         if (supertype != null) {
-          classesToVisit.add(supertype.element3);
+          classesToVisit.add(supertype.element);
         }
       }
     }
@@ -330,7 +330,7 @@
 
     // No subclasses in the library.
     for (var class_ in library2.classes) {
-      if (class_.supertype?.element3 == this) {
+      if (class_.supertype?.element == this) {
         return false;
       }
     }
@@ -575,7 +575,7 @@
     // Assign to break a possible infinite recursion during computing.
     _constructors = const <ConstructorFragmentImpl>[];
 
-    var superElement2 = superType.element3 as ClassElementImpl;
+    var superElement2 = superType.element as ClassElementImpl;
     var superElement = superElement2.firstFragment;
 
     var constructorsToForward = superElement.constructors
@@ -604,7 +604,7 @@
     );
 
     bool typeHasInstanceVariables(InterfaceTypeImpl type) =>
-        type.element3.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.
@@ -4894,14 +4894,14 @@
       }
       for (var mixin in element.mixins.reversed) {
         mixin as InterfaceTypeImpl;
-        getter = mixin.element3.getGetter(name);
+        getter = mixin.element.getGetter(name);
         if (getter != null) {
           yield getter as PropertyAccessorElement2OrMember;
         }
       }
       var supertype = element.firstFragment.supertype;
       supertype as InterfaceTypeImpl?;
-      element = supertype?.element3;
+      element = supertype?.element;
     }
   }
 
@@ -4920,14 +4920,14 @@
       }
       for (var mixin in element.mixins.reversed) {
         mixin as InterfaceTypeImpl;
-        method = mixin.element3.getMethod(name);
+        method = mixin.element.getMethod(name);
         if (method != null) {
           yield method as MethodElement2OrMember;
         }
       }
       var supertype = element.firstFragment.supertype;
       supertype as InterfaceTypeImpl?;
-      element = supertype?.element3;
+      element = supertype?.element;
     }
   }
 
@@ -4946,14 +4946,14 @@
       }
       for (var mixin in element.mixins.reversed) {
         mixin as InterfaceTypeImpl;
-        setter = mixin.element3.getSetter(name);
+        setter = mixin.element.getSetter(name);
         if (setter != null) {
           yield setter as PropertyAccessorElement2OrMember;
         }
       }
       var supertype = element.firstFragment.supertype;
       supertype as InterfaceTypeImpl?;
-      element = supertype?.element3;
+      element = supertype?.element;
     }
   }
 }
@@ -9734,7 +9734,7 @@
       return false;
     }
     var typeParameters = typeParameters2;
-    var aliasedClass = aliasedType_.element3;
+    var aliasedClass = aliasedType_.element;
     var typeArguments = aliasedType_.typeArguments;
     var typeParameterCount = typeParameters.length;
     if (typeParameterCount != aliasedClass.typeParameters2.length) {
@@ -9751,7 +9751,7 @@
       }
       var typeArgument = typeArguments[i];
       if (typeArgument is TypeParameterType &&
-          typeParameters[i] != typeArgument.element3) {
+          typeParameters[i] != typeArgument.element) {
         return false;
       }
     }
@@ -9833,7 +9833,7 @@
       );
     } else if (type is InterfaceTypeImpl) {
       return InterfaceTypeImpl(
-        element: type.element3,
+        element: type.element,
         typeArguments: type.typeArguments,
         nullabilitySuffix: resultNullability,
         alias: InstantiatedTypeAliasElementImpl(
@@ -9853,7 +9853,7 @@
       );
     } else if (type is TypeParameterTypeImpl) {
       return TypeParameterTypeImpl(
-        element3: type.element3,
+        element: type.element,
         nullabilitySuffix: resultNullability,
         alias: InstantiatedTypeAliasElementImpl(
           element2: this,
@@ -10081,7 +10081,7 @@
     required NullabilitySuffix nullabilitySuffix,
   }) {
     return TypeParameterTypeImpl(
-      element3: this,
+      element: this,
       nullabilitySuffix: nullabilitySuffix,
     );
   }
@@ -10233,7 +10233,7 @@
   /// Computes the variance of the type parameters in the [type].
   shared.Variance computeVarianceInType(DartType type) {
     if (type is TypeParameterTypeImpl) {
-      if (type.element3 == element) {
+      if (type.element == element) {
         return shared.Variance.covariant;
       } else {
         return shared.Variance.unrelated;
@@ -10242,7 +10242,7 @@
       var result = shared.Variance.unrelated;
       for (int i = 0; i < type.typeArguments.length; ++i) {
         var argument = type.typeArguments[i];
-        var parameter = type.element3.typeParameters2[i];
+        var parameter = type.element.typeParameters2[i];
 
         var parameterVariance = parameter.variance;
         result = result.meet(
diff --git a/pkg/analyzer/lib/src/dart/element/extensions.dart b/pkg/analyzer/lib/src/dart/element/extensions.dart
index 94a951f..43f3f8d 100644
--- a/pkg/analyzer/lib/src/dart/element/extensions.dart
+++ b/pkg/analyzer/lib/src/dart/element/extensions.dart
@@ -13,7 +13,7 @@
 
 extension DartTypeExtension on DartType {
   bool get isExtensionType {
-    return element3 is ExtensionTypeElement;
+    return element is ExtensionTypeElement;
   }
 }
 
@@ -110,7 +110,7 @@
     if (element is GetterElement) {
       var type = element.returnType;
       if (type is InterfaceType) {
-        interfaceElement = type.element3;
+        interfaceElement = type.element;
       }
     } else if (element is ConstructorElement) {
       interfaceElement = element.enclosingElement;
diff --git a/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart b/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
index 4c782b8..ba24ff0 100644
--- a/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
+++ b/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
@@ -795,7 +795,7 @@
     }
     if (errorEntity is ConstructorName &&
         !(errorEntity.type.type as InterfaceType)
-            .element3
+            .element
             .metadata
             .hasOptionalTypeArgs) {
       String constructorName =
@@ -829,7 +829,7 @@
         if (element is VariableElement) {
           // For variable elements, we check their type and possible alias type.
           var type = element.type;
-          var typeElement = type is InterfaceType ? type.element3 : null;
+          var typeElement = type is InterfaceType ? type.element : null;
           if (typeElement != null && typeElement.metadata.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 123c639..02d3fb9 100644
--- a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
+++ b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
@@ -248,7 +248,7 @@
   }) {
     type as InterfaceTypeImpl; // TODO(scheglov): remove cast
     var rawElement = getMember(
-      type.element3,
+      type.element,
       name,
       concrete: concrete,
       forMixinIndex: forMixinIndex,
@@ -501,7 +501,7 @@
     if (superType != null) {
       superType as InterfaceTypeImpl;
       var substitution = Substitution.fromInterfaceType(superType);
-      superTypeInterface = getInterface(superType.element3);
+      superTypeInterface = getInterface(superType.element);
       _addCandidates(
         namedCandidates: namedCandidates,
         substitution: substitution,
@@ -523,7 +523,7 @@
     // interfaces. Consider using `Map<Name, ExecutableElement>` here.
     var mixinsConflicts = <List<Conflict>>[];
     for (var mixin in element.mixins) {
-      var mixinElement = mixin.element3;
+      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:
@@ -598,7 +598,7 @@
       _addCandidates(
         namedCandidates: namedCandidates,
         substitution: Substitution.fromInterfaceType(interface),
-        interface: getInterface(interface.element3),
+        interface: getInterface(interface.element),
       );
     }
 
@@ -707,7 +707,7 @@
     var notExtensionCandidates = <Name, _ExtensionTypeCandidates>{};
     for (var interface in element.interfaces) {
       var substitution = Substitution.fromInterfaceType(interface);
-      for (var entry in getInterface(interface.element3).map.entries) {
+      for (var entry in getInterface(interface.element).map.entries) {
         var name = entry.key;
         var executable = ExecutableMember.from(entry.value, substitution);
         if (executable.isExtensionTypeMember) {
@@ -857,7 +857,7 @@
     var superCandidates = <Name, List<ExecutableElement2OrMember>>{};
     for (var constraint in element.superclassConstraints) {
       var substitution = Substitution.fromInterfaceType(constraint);
-      var interfaceObj = getInterface(constraint.element3);
+      var interfaceObj = getInterface(constraint.element);
       _addCandidates(
         namedCandidates: superCandidates,
         substitution: substitution,
@@ -879,7 +879,7 @@
       _addCandidates(
         namedCandidates: interfaceCandidates,
         substitution: Substitution.fromInterfaceType(interface),
-        interface: getInterface(interface.element3),
+        interface: getInterface(interface.element),
       );
     }
 
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 84e69ce..a7962b1 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
   TypeImpl? visitTypeParameterType(TypeParameterType type) {
-    if (eliminationTargets.contains(type.element3)) {
+    if (eliminationTargets.contains(type.element)) {
       var replacement = _typeParameterReplacement;
       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 740ac62..d903a8e 100644
--- a/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart
+++ b/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart
@@ -60,10 +60,10 @@
       return type1.withNullability(nullability);
     }
 
-    if (type1.element3 == type2.element3) {
+    if (type1.element == type2.element) {
       var args1 = type1.typeArguments;
       var args2 = type2.typeArguments;
-      var params = type1.element3.typeParameters2;
+      var params = type1.element.typeParameters2;
       assert(args1.length == args2.length);
       assert(args1.length == params.length);
 
@@ -95,7 +95,7 @@
       }
 
       return InterfaceTypeImpl(
-        element: type1.element3,
+        element: type1.element,
         typeArguments: args,
         nullabilitySuffix: nullability,
       );
@@ -125,7 +125,7 @@
       return;
     }
 
-    if (type.element3 is ExtensionTypeElement) {
+    if (type.element is ExtensionTypeElement) {
       set.add(typeSystem.objectQuestion);
     }
 
@@ -206,7 +206,7 @@
     InterfaceType type,
     Set<InterfaceElement> visitedElements,
   ) {
-    var element = type.element3;
+    var element = type.element;
     // recursion
     if (visitedElements.contains(element)) {
       return 0;
@@ -330,7 +330,7 @@
   LeastUpperBoundHelper(this._typeSystem);
 
   InterfaceTypeImpl get _interfaceTypeFunctionNone {
-    return _typeSystem.typeProvider.functionType.element3.instantiateImpl(
+    return _typeSystem.typeProvider.functionType.element.instantiateImpl(
       typeArguments: const [],
       nullabilitySuffix: NullabilitySuffix.none,
     );
@@ -415,7 +415,7 @@
       }
       // otherwise UP(B1a, T2)
       //   where B1a is the greatest closure of B1 with respect to X1
-      var B1a = _typeSystem.greatestClosure(B1, [X1.element3]);
+      var B1a = _typeSystem.greatestClosure(B1, [X1.element]);
       return getLeastUpperBound(B1a, T2);
     }
 
@@ -432,7 +432,7 @@
       }
       // otherwise UP(T1, B2a)
       //   where B2a is the greatest closure of B2 with respect to X2
-      var B2a = _typeSystem.greatestClosure(B2, [X2.element3]);
+      var B2a = _typeSystem.greatestClosure(B2, [X2.element]);
       return getLeastUpperBound(T1, B2a);
     }
 
@@ -538,7 +538,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.element3]);
+      var closure = _typeSystem.greatestClosure(bound, [T1.element]);
       return getLeastUpperBound(closure, T2);
     }
 
@@ -556,7 +556,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.element3]);
+      var closure = _typeSystem.greatestClosure(bound, [T2.element]);
       return getLeastUpperBound(T1, closure);
     }
 
@@ -848,7 +848,7 @@
 
   /// Return the promoted or declared bound of the type parameter.
   TypeImpl _typeParameterBound(TypeParameterTypeImpl type) {
-    var bound = type.promotedBound ?? type.element3.bound;
+    var bound = type.promotedBound ?? type.element.bound;
     if (bound != null) {
       return bound;
     }
diff --git a/pkg/analyzer/lib/src/dart/element/non_covariant_type_parameter_position.dart b/pkg/analyzer/lib/src/dart/element/non_covariant_type_parameter_position.dart
index e326689..5444d20 100644
--- a/pkg/analyzer/lib/src/dart/element/non_covariant_type_parameter_position.dart
+++ b/pkg/analyzer/lib/src/dart/element/non_covariant_type_parameter_position.dart
@@ -77,7 +77,7 @@
   @override
   bool visitTypeParameterType(TypeParameterType type) {
     return _variance != Variance.covariant &&
-        _typeParameters.contains(type.element3);
+        _typeParameters.contains(type.element);
   }
 
   @override
diff --git a/pkg/analyzer/lib/src/dart/element/normalize.dart b/pkg/analyzer/lib/src/dart/element/normalize.dart
index 96323ab..43b63b3 100644
--- a/pkg/analyzer/lib/src/dart/element/normalize.dart
+++ b/pkg/analyzer/lib/src/dart/element/normalize.dart
@@ -140,7 +140,7 @@
 
     // NORM(C<T0, ..., Tn>) = C<R0, ..., Rn> where Ri is NORM(Ti)
     if (T is InterfaceTypeImpl) {
-      return T.element3.instantiateImpl(
+      return T.element.instantiateImpl(
         typeArguments: T.typeArguments.map(_normalize).toFixedList(),
         nullabilitySuffix: NullabilitySuffix.none,
       );
@@ -210,7 +210,7 @@
   /// NORM(X & T)
   /// NORM(X extends T)
   TypeImpl _typeParameterType(TypeParameterTypeImpl T) {
-    var element = T.element3;
+    var element = T.element;
 
     // NORM(X & T)
     var promotedBound = T.promotedBound;
@@ -259,7 +259,7 @@
     // * if S is X then X
     if (S is TypeParameterType &&
         S.nullabilitySuffix == NullabilitySuffix.none &&
-        S.element3 == X) {
+        S.element == X) {
       return X.instantiate(nullabilitySuffix: NullabilitySuffix.none);
     }
 
@@ -277,7 +277,7 @@
 
     // * else X & S
     return TypeParameterTypeImpl(
-      element3: X,
+      element: X,
       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 c6ed00f..552a3a2 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
@@ -90,7 +90,7 @@
   }
 
   InterfaceTypeImpl _interfaceType(InterfaceTypeImpl type, Variance variance) {
-    var typeParameters = type.element3.typeParameters2;
+    var typeParameters = type.element.typeParameters2;
     if (typeParameters.isEmpty) {
       return type;
     }
@@ -105,7 +105,7 @@
     }
 
     return InterfaceTypeImpl(
-      element: type.element3,
+      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 c6ea8bc..efffb05 100644
--- a/pkg/analyzer/lib/src/dart/element/replacement_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/element/replacement_visitor.dart
@@ -87,7 +87,7 @@
     }
 
     return InterfaceTypeImpl(
-      element: type.element3,
+      element: type.element,
       typeArguments: newTypeArguments ?? type.typeArguments,
       nullabilitySuffix: newNullability ?? type.nullabilitySuffix,
       alias: newAlias ?? type.alias,
@@ -106,7 +106,7 @@
     return NamedTypeBuilder(
       linker: type.linker,
       typeSystem: type.typeSystem,
-      element3: type.element3,
+      element: type.element,
       arguments: newTypeArguments ?? type.arguments,
       nullabilitySuffix: newNullability ?? type.nullabilitySuffix,
     );
@@ -134,7 +134,7 @@
 
     var promotedBound = (type as TypeParameterTypeImpl).promotedBound;
     return TypeParameterTypeImpl(
-      element3: type.element3,
+      element: type.element,
       nullabilitySuffix: newNullability ?? type.nullabilitySuffix,
       promotedBound: newPromotedBound ?? promotedBound,
       alias: type.alias,
@@ -150,7 +150,7 @@
     }
 
     return TypeParameterTypeImpl(
-      element3: type.element3,
+      element: type.element,
       nullabilitySuffix: newNullability,
       alias: type.alias,
     );
@@ -377,7 +377,7 @@
     }
 
     var newTypeArguments = _typeArguments(
-      type.element3.typeParameters2,
+      type.element.typeParameters2,
       type.typeArguments,
     );
 
@@ -399,7 +399,7 @@
     var newNullability = visitNullability(type);
 
     var parameters = const <TypeParameterElementImpl>[];
-    var element = type.element3;
+    var element = type.element;
     if (element is InterfaceElementImpl) {
       parameters = element.typeParameters2;
     } else if (element is TypeAliasElementImpl) {
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 d1fbc1a..cefadf3 100644
--- a/pkg/analyzer/lib/src/dart/element/runtime_type_equality.dart
+++ b/pkg/analyzer/lib/src/dart/element/runtime_type_equality.dart
@@ -98,7 +98,7 @@
   @override
   bool visitInterfaceType(InterfaceType T1, DartType T2) {
     if (T2 is InterfaceType &&
-        identical(T1.element3, T2.element3) &&
+        identical(T1.element, T2.element) &&
         _compatibleNullability(T1, T2)) {
       var T1_typeArguments = T1.typeArguments;
       var T2_typeArguments = T2.typeArguments;
@@ -177,7 +177,7 @@
   bool visitTypeParameterType(TypeParameterType T1, DartType T2) {
     return T2 is TypeParameterType &&
         _compatibleNullability(T1, T2) &&
-        identical(T1.element3, T2.element3);
+        identical(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 648df8c..9f8e0e0 100644
--- a/pkg/analyzer/lib/src/dart/element/subtype.dart
+++ b/pkg/analyzer/lib/src/dart/element/subtype.dart
@@ -86,7 +86,7 @@
           T0 is TypeParameterTypeImpl) {
         var S = T0.promotedBound;
         if (S == null) {
-          var B = T0.element3.bound ?? _objectQuestion;
+          var B = T0.element.bound ?? _objectQuestion;
           return isSubtypeOf(B, _objectNone);
         } else {
           return isSubtypeOf(S, _objectNone);
@@ -109,7 +109,7 @@
         return false;
       }
       // Extension types require explicit `Object` implementation.
-      if (T0 is InterfaceTypeImpl && T0.element3 is ExtensionTypeElement) {
+      if (T0 is InterfaceTypeImpl && T0.element is ExtensionTypeElement) {
         for (var interface in T0.interfaces) {
           if (isSubtypeOf(interface, T1)) {
             return true;
@@ -173,7 +173,7 @@
     if (T0 is TypeParameterTypeImpl &&
         T1 is TypeParameterTypeImpl &&
         T1.promotedBound == null &&
-        T0.element3 == T1.element3) {
+        T0.element == T1.element) {
       return true;
     }
 
@@ -183,7 +183,7 @@
       var T1_promotedBound = T1.promotedBound;
       if (T1_promotedBound != null) {
         var X1 = TypeParameterTypeImpl(
-          element3: T1.element3,
+          element: T1.element,
           nullabilitySuffix: T1.nullabilitySuffix,
         );
         return isSubtypeOf(T0, X1) && isSubtypeOf(T0, T1_promotedBound);
@@ -215,7 +215,7 @@
         if (S0 != null && isSubtypeOf(S0, T1)) {
           return true;
         }
-        var B0 = T0.element3.bound;
+        var B0 = T0.element.bound;
         if (B0 != null && isSubtypeOf(B0, T1)) {
           return true;
         }
@@ -243,7 +243,7 @@
         if (S0 != null && isSubtypeOf(S0, T1)) {
           return true;
         }
-        var B0 = T0.element3.bound;
+        var B0 = T0.element.bound;
         if (B0 != null && isSubtypeOf(B0, T1)) {
           return true;
         }
@@ -269,7 +269,7 @@
         return true;
       }
 
-      var B0 = T0.element3.bound;
+      var B0 = T0.element.bound;
       if (B0 != null && isSubtypeOf(B0, T1)) {
         return true;
       }
@@ -454,8 +454,8 @@
       return false;
     }
 
-    var subElement = subType.element3;
-    var superElement = superType.element3;
+    var subElement = subType.element;
+    var superElement = superType.element;
     if (identical(subElement, superElement)) {
       return _interfaceArguments(superElement, subType, superType);
     }
@@ -466,7 +466,7 @@
     }
 
     for (var interface in subElement.allSupertypes) {
-      if (identical(interface.element3, superElement)) {
+      if (identical(interface.element, superElement)) {
         var substitution = Substitution.fromInterfaceType(subType);
         var substitutedInterface = substitution.mapInterfaceType(interface);
         return _interfaceArguments(
diff --git a/pkg/analyzer/lib/src/dart/element/top_merge.dart b/pkg/analyzer/lib/src/dart/element/top_merge.dart
index e911c7a..2a6fdf1 100644
--- a/pkg/analyzer/lib/src/dart/element/top_merge.dart
+++ b/pkg/analyzer/lib/src/dart/element/top_merge.dart
@@ -119,7 +119,7 @@
     }
 
     if (T is TypeParameterType && S is TypeParameterType) {
-      if (T.element3 == S.element3) {
+      if (T.element == S.element) {
         return T;
       } else {
         throw _TopMergeStateError(T, S, 'Not the same type parameters');
@@ -225,7 +225,7 @@
   }
 
   InterfaceTypeImpl _interfaceTypes(InterfaceTypeImpl T, InterfaceTypeImpl S) {
-    if (T.element3 != S.element3) {
+    if (T.element != S.element) {
       throw _TopMergeStateError(T, S, 'Different class elements');
     }
 
@@ -239,7 +239,7 @@
         (i) => topMerge(T_arguments[i], S_arguments[i]),
         growable: false,
       );
-      return T.element3.instantiateImpl(
+      return T.element.instantiateImpl(
         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 ad254d0..19218b8 100644
--- a/pkg/analyzer/lib/src/dart/element/type.dart
+++ b/pkg/analyzer/lib/src/dart/element/type.dart
@@ -39,7 +39,11 @@
   DynamicTypeImpl._();
 
   @override
-  DynamicElementImpl get element3 => DynamicElementImpl.instance;
+  DynamicElementImpl get element => DynamicElementImpl.instance;
+
+  @Deprecated('Use element instead')
+  @override
+  DynamicElementImpl get element3 => element;
 
   @override
   int get hashCode => 1;
@@ -211,6 +215,10 @@
   });
 
   @override
+  Null get element => null;
+
+  @Deprecated('Use element instead')
+  @override
   Null get element3 => null;
 
   @override
@@ -412,7 +420,7 @@
       return instantiate([
         for (var i = 0; i < typeFormals.length; i++)
           TypeParameterTypeImpl(
-            element3: TypeParameterFragmentImpl.synthetic(name2: 'T$i').element,
+            element: TypeParameterFragmentImpl.synthetic(name2: 'T$i').element,
             nullabilitySuffix: NullabilitySuffix.none,
           ),
       ]).hashCode;
@@ -534,7 +542,7 @@
 /// `FutureOr<...>`.
 class FutureOrTypeImpl extends InterfaceTypeImpl {
   FutureOrTypeImpl({
-    required super.element3,
+    required super.element,
     required super.typeArgument,
     required super.nullabilitySuffix,
     super.alias,
@@ -550,7 +558,7 @@
     if (this.nullabilitySuffix == nullabilitySuffix) return this;
 
     return FutureOrTypeImpl(
-      element3: element3,
+      element: element,
       typeArgument: typeArgument,
       nullabilitySuffix: nullabilitySuffix,
       alias: alias,
@@ -574,7 +582,7 @@
 /// A concrete implementation of an [InterfaceType].
 class InterfaceTypeImpl extends TypeImpl implements InterfaceType {
   @override
-  final InterfaceElementImpl element3;
+  final InterfaceElementImpl element;
 
   @override
   final List<TypeImpl> typeArguments;
@@ -602,7 +610,7 @@
   }) {
     if (element.name3 == 'FutureOr' && element.library2.isDartAsync) {
       return FutureOrTypeImpl(
-        element3: element,
+        element: element,
         typeArgument:
             typeArguments.isNotEmpty
                 ? typeArguments[0]
@@ -611,10 +619,10 @@
         alias: alias,
       );
     } else if (element.name3 == 'Null' && element.library2.isDartCore) {
-      return NullTypeImpl(element3: element, alias: alias);
+      return NullTypeImpl(element: element, alias: alias);
     } else {
       return InterfaceTypeImpl._(
-        element3: element,
+        element: element,
         typeArguments: typeArguments,
         nullabilitySuffix: nullabilitySuffix,
         alias: alias,
@@ -623,33 +631,33 @@
   }
 
   InterfaceTypeImpl._({
-    required this.element3,
+    required this.element,
     required this.typeArguments,
     required this.nullabilitySuffix,
     required super.alias,
   });
 
   InterfaceTypeImpl._futureOr({
-    required this.element3,
+    required this.element,
     required TypeImpl typeArgument,
     required this.nullabilitySuffix,
     super.alias,
   }) : typeArguments = [typeArgument] {
-    assert(element3.name3 == 'FutureOr' && element3.library2.isDartAsync);
+    assert(element.name3 == 'FutureOr' && element.library2.isDartAsync);
     assert(this is FutureOrTypeImpl);
   }
 
-  InterfaceTypeImpl._null({required this.element3, super.alias})
+  InterfaceTypeImpl._null({required this.element, super.alias})
     : typeArguments = const [],
       nullabilitySuffix = NullabilitySuffix.none {
-    assert(element3.name3 == 'Null' && element3.library2.isDartCore);
+    assert(element.name3 == 'Null' && element.library2.isDartCore);
     assert(this is NullTypeImpl);
   }
 
   @override
   List<InterfaceTypeImpl> get allSupertypes {
     var substitution = Substitution.fromInterfaceType(this);
-    return element3.allSupertypes.map((interface) {
+    return element.allSupertypes.map((interface) {
       return substitution
           .mapInterfaceType(interface)
           .withNullability(nullabilitySuffix);
@@ -659,135 +667,139 @@
   @override
   List<ConstructorElementMixin2> get constructors2 {
     return _constructors ??=
-        element3.constructors.map((constructor) {
+        element.constructors.map((constructor) {
           return ConstructorMember.from2(constructor, this);
         }).toFixedList();
   }
 
+  @Deprecated('Use element instead')
+  @override
+  InterfaceElementImpl get element3 => element;
+
   @override
   List<GetterElement2OrMember> get getters {
     return _getters ??=
-        element3.getters.map((e) {
+        element.getters.map((e) {
           return GetterMember.forTargetType(e, this);
         }).toFixedList();
   }
 
   @override
   int get hashCode {
-    return element3.hashCode;
+    return element.hashCode;
   }
 
   @override
   List<InterfaceTypeImpl> get interfaces {
-    return _instantiateSuperTypes(element3.interfaces);
+    return _instantiateSuperTypes(element.interfaces);
   }
 
   @override
   bool get isDartAsyncFuture {
-    return element3.name3 == "Future" && element3.library2.isDartAsync;
+    return element.name3 == "Future" && element.library2.isDartAsync;
   }
 
   @override
   bool get isDartAsyncStream {
-    return element3.name3 == "Stream" && element3.library2.isDartAsync;
+    return element.name3 == "Stream" && element.library2.isDartAsync;
   }
 
   @override
   bool get isDartCoreBool {
-    return element3.name3 == "bool" && element3.library2.isDartCore;
+    return element.name3 == "bool" && element.library2.isDartCore;
   }
 
   @override
   bool get isDartCoreDouble {
-    return element3.name3 == "double" && element3.library2.isDartCore;
+    return element.name3 == "double" && element.library2.isDartCore;
   }
 
   @override
   bool get isDartCoreEnum {
-    var element = element3;
+    var element = this.element;
     return element is ClassElementImpl && element.isDartCoreEnum;
   }
 
   @override
   bool get isDartCoreFunction {
-    return element3.name3 == "Function" && element3.library2.isDartCore;
+    return element.name3 == "Function" && element.library2.isDartCore;
   }
 
   @override
   bool get isDartCoreInt {
-    return element3.name3 == "int" && element3.library2.isDartCore;
+    return element.name3 == "int" && element.library2.isDartCore;
   }
 
   @override
   bool get isDartCoreIterable {
-    return element3.name3 == "Iterable" && element3.library2.isDartCore;
+    return element.name3 == "Iterable" && element.library2.isDartCore;
   }
 
   @override
   bool get isDartCoreList {
-    return element3.name3 == "List" && element3.library2.isDartCore;
+    return element.name3 == "List" && element.library2.isDartCore;
   }
 
   @override
   bool get isDartCoreMap {
-    return element3.name3 == "Map" && element3.library2.isDartCore;
+    return element.name3 == "Map" && element.library2.isDartCore;
   }
 
   @override
   bool get isDartCoreNum {
-    return element3.name3 == "num" && element3.library2.isDartCore;
+    return element.name3 == "num" && element.library2.isDartCore;
   }
 
   @override
   bool get isDartCoreObject {
-    return element3.name3 == "Object" && element3.library2.isDartCore;
+    return element.name3 == "Object" && element.library2.isDartCore;
   }
 
   @override
   bool get isDartCoreRecord {
-    return element3.name3 == "Record" && element3.library2.isDartCore;
+    return element.name3 == "Record" && element.library2.isDartCore;
   }
 
   @override
   bool get isDartCoreSet {
-    return element3.name3 == "Set" && element3.library2.isDartCore;
+    return element.name3 == "Set" && element.library2.isDartCore;
   }
 
   @override
   bool get isDartCoreString {
-    return element3.name3 == "String" && element3.library2.isDartCore;
+    return element.name3 == "String" && element.library2.isDartCore;
   }
 
   @override
   bool get isDartCoreSymbol {
-    return element3.name3 == "Symbol" && element3.library2.isDartCore;
+    return element.name3 == "Symbol" && element.library2.isDartCore;
   }
 
   @override
   bool get isDartCoreType {
-    return element3.name3 == "Type" && element3.library2.isDartCore;
+    return element.name3 == "Type" && element.library2.isDartCore;
   }
 
   @override
   List<MethodElement2OrMember> get methods2 {
     return _methods ??=
-        element3.methods.map((e) {
+        element.methods.map((e) {
           return MethodMember.forTargetType(e, this);
         }).toFixedList();
   }
 
   @override
   List<InterfaceTypeImpl> get mixins {
-    return _instantiateSuperTypes(element3.mixins);
+    return _instantiateSuperTypes(element.mixins);
   }
 
   @Deprecated('Check element, or use getDisplayString()')
   @override
-  String get name => element3.name3!;
+  String get name => element.name3!;
 
-  /// The instantiated representation type, if [element3] is an extension type.
+  /// The instantiated representation type, if [element] is an extension type.
   TypeImpl? get representationType {
-    if (element3 case ExtensionTypeElement element) {
+    if (element case ExtensionTypeElement element) {
       var substitution = Substitution.fromInterfaceType(this);
       var representationType = element.representation.type;
       return substitution.substituteType(representationType);
@@ -798,14 +810,14 @@
   @override
   List<SetterElement2OrMember> get setters {
     return _setters ??=
-        element3.setters.map((e) {
+        element.setters.map((e) {
           return SetterMember.forTargetType(e, this);
         }).toFixedList();
   }
 
   @override
   InterfaceTypeImpl? get superclass {
-    var supertype = element3.supertype;
+    var supertype = element.supertype;
     if (supertype == null) {
       return null;
     }
@@ -817,7 +829,7 @@
 
   @override
   List<InterfaceTypeImpl> get superclassConstraints {
-    var element = element3;
+    var element = this.element;
     if (element is MixinElementImpl) {
       var constraints = element.superclassConstraints;
       return _instantiateSuperTypes(constraints);
@@ -827,7 +839,7 @@
   }
 
   InheritanceManager3 get _inheritanceManager =>
-      element3.library2.session.inheritanceManager;
+      element.library2.session.inheritanceManager;
 
   @override
   bool operator ==(Object other) {
@@ -835,7 +847,7 @@
       return true;
     }
     if (other is InterfaceTypeImpl) {
-      if (!identical(other.element3, element3)) {
+      if (!identical(other.element, element)) {
         return false;
       }
       if (other.nullabilitySuffix != nullabilitySuffix) {
@@ -866,12 +878,12 @@
 
   @override
   InterfaceTypeImpl? asInstanceOf2(InterfaceElement targetElement) {
-    if (element3 == targetElement) {
+    if (element == targetElement) {
       return this;
     }
 
-    for (var rawInterface in element3.allSupertypes) {
-      if (rawInterface.element3 == targetElement) {
+    for (var rawInterface in element.allSupertypes) {
+      if (rawInterface.element == targetElement) {
         var substitution = Substitution.fromInterfaceType(this);
         return substitution.mapInterfaceType(rawInterface);
       }
@@ -882,7 +894,7 @@
 
   @override
   GetterElement2OrMember? getGetter(String getterName) {
-    var element = element3.getGetter(getterName);
+    var element = this.element.getGetter(getterName);
     return element != null ? GetterMember.forTargetType(element, this) : null;
   }
 
@@ -894,7 +906,7 @@
 
   @override
   MethodElement2OrMember? getMethod(String methodName) {
-    var element = element3.getMethod(methodName);
+    var element = this.element.getMethod(methodName);
     return element != null ? MethodMember.forTargetType(element, this) : null;
   }
 
@@ -906,7 +918,7 @@
 
   @override
   SetterElement2OrMember? getSetter(String setterName) {
-    var element = element3.getSetter(setterName);
+    var element = this.element.getSetter(setterName);
     return element != null ? SetterMember.forTargetType(element, this) : null;
   }
 
@@ -924,9 +936,9 @@
     // prepare base ConstructorElement
     ConstructorElementImpl? constructorElement;
     if (constructorName == null) {
-      constructorElement = element3.unnamedConstructor2;
+      constructorElement = element.unnamedConstructor2;
     } else {
-      constructorElement = element3.getNamedConstructor2(constructorName);
+      constructorElement = element.getNamedConstructor2(constructorName);
     }
     // not found or not accessible
     if (constructorElement == null ||
@@ -964,7 +976,7 @@
           return result;
         }
       } else {
-        var rawElement = inheritance.getInherited(element3, nameObj);
+        var rawElement = inheritance.getInherited(element, nameObj);
         if (rawElement is GetterElement2OrMember) {
           return GetterMember.forTargetType(rawElement, this);
         }
@@ -978,7 +990,7 @@
     }
 
     if (recoveryStatic) {
-      return element3.lookupStaticGetter(name, library);
+      return element.lookupStaticGetter(name, library);
     }
 
     return null;
@@ -1020,7 +1032,7 @@
           return result;
         }
       } else {
-        var rawElement = inheritance.getInherited(element3, nameObj);
+        var rawElement = inheritance.getInherited(element, nameObj);
         if (rawElement is MethodElement2OrMember) {
           return MethodMember.forTargetType(rawElement, this);
         }
@@ -1034,7 +1046,7 @@
     }
 
     if (recoveryStatic) {
-      return element3.lookupStaticMethod(name, library);
+      return element.lookupStaticMethod(name, library);
     }
 
     return null;
@@ -1076,7 +1088,7 @@
           return result;
         }
       } else {
-        var rawElement = inheritance.getInherited(element3, nameObj);
+        var rawElement = inheritance.getInherited(element, nameObj);
         if (rawElement is SetterElement2OrMember) {
           return SetterMember.forTargetType(rawElement, this);
         }
@@ -1090,7 +1102,7 @@
     }
 
     if (recoveryStatic) {
-      return element3.lookupStaticSetter(name, library);
+      return element.lookupStaticSetter(name, library);
     }
 
     return null;
@@ -1130,7 +1142,7 @@
     if (this.nullabilitySuffix == nullabilitySuffix) return this;
 
     return InterfaceTypeImpl(
-      element: element3,
+      element: element,
       typeArguments: typeArguments,
       nullabilitySuffix: nullabilitySuffix,
       alias: alias,
@@ -1143,7 +1155,7 @@
     if (definedTypes.isEmpty) return definedTypes;
 
     MapSubstitution? substitution;
-    if (element3.typeParameters2.isNotEmpty) {
+    if (element.typeParameters2.isNotEmpty) {
       substitution = Substitution.fromInterfaceType(this);
     }
 
@@ -1170,7 +1182,11 @@
   InvalidTypeImpl._();
 
   @override
-  Null get element3 => null;
+  Null get element => null;
+
+  @Deprecated('Use element instead')
+  @override
+  Null get element3 => element;
 
   @override
   int get hashCode => 1;
@@ -1220,6 +1236,10 @@
   static final NeverTypeImpl instance = NeverTypeImpl._(NullabilitySuffix.none);
 
   @override
+  final NeverElementImpl element = NeverElementImpl.instance;
+
+  @Deprecated('Use element instead')
+  @override
   final NeverElementImpl element3 = NeverElementImpl.instance;
 
   @override
@@ -1282,7 +1302,7 @@
 /// A concrete implementation of [DartType] representing the type `Null`, with
 /// no type parameters and no nullability suffix.
 class NullTypeImpl extends InterfaceTypeImpl implements SharedNullType {
-  NullTypeImpl({required super.element3, super.alias}) : super._null();
+  NullTypeImpl({required super.element, super.alias}) : super._null();
 
   @override
   bool get isDartCoreNull => true;
@@ -1341,7 +1361,11 @@
   }
 
   @override
-  Null get element3 => null;
+  Null get element => null;
+
+  @Deprecated('Use element instead')
+  @override
+  Null get element3 => element;
 
   @override
   int get hashCode {
@@ -1629,7 +1653,7 @@
 /// A concrete implementation of a [TypeParameterType].
 class TypeParameterTypeImpl extends TypeImpl implements TypeParameterType {
   @override
-  final TypeParameterElementImpl element3;
+  final TypeParameterElementImpl element;
 
   @override
   final NullabilitySuffix nullabilitySuffix;
@@ -1637,13 +1661,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 [element3].
+  /// is therefore the same as the bound of [element].
   final TypeImpl? promotedBound;
 
   /// Initialize a newly created type parameter type to be declared by the given
-  /// [element3] and to have the given name.
+  /// [element] and to have the given name.
   TypeParameterTypeImpl({
-    required this.element3,
+    required this.element,
     required this.nullabilitySuffix,
     DartType? promotedBound,
     super.alias,
@@ -1653,10 +1677,14 @@
 
   @override
   TypeImpl get bound =>
-      promotedBound ?? element3.bound ?? DynamicTypeImpl.instance;
+      promotedBound ?? element.bound ?? DynamicTypeImpl.instance;
+
+  @Deprecated('Use element instead')
+  @override
+  TypeParameterElementImpl get element3 => element;
 
   @override
-  int get hashCode => element3.hashCode;
+  int get hashCode => element.hashCode;
 
   @override
   bool get isBottom {
@@ -1665,7 +1693,7 @@
     // bounds form a loop.  So we have to be more careful.
     Set<TypeParameterElement> seenTypes = {};
     TypeParameterType type = this;
-    while (seenTypes.add(type.element3)) {
+    while (seenTypes.add(type.element)) {
       if (type.nullabilitySuffix == NullabilitySuffix.question) {
         return false;
       }
@@ -1682,11 +1710,11 @@
 
   @Deprecated('Check element, or use getDisplayString()')
   @override
-  String get name => element3.name3!;
+  String get name => element.name3!;
 
   TypeParameterTypeImpl get withoutPromotedBound {
     return TypeParameterTypeImpl(
-      element3: element3,
+      element: element,
       nullabilitySuffix: nullabilitySuffix,
     );
   }
@@ -1697,7 +1725,7 @@
       return true;
     }
 
-    if (other is TypeParameterTypeImpl && other.element3 == element3) {
+    if (other is TypeParameterTypeImpl && other.element == element) {
       if (other.nullabilitySuffix != nullabilitySuffix) {
         return false;
       }
@@ -1732,14 +1760,14 @@
 
   @override
   bool referencesAny2(Set<TypeParameterElementImpl> parameters) {
-    return parameters.contains(element3);
+    return parameters.contains(element);
   }
 
   @override
   TypeImpl withNullability(NullabilitySuffix nullabilitySuffix) {
     if (this.nullabilitySuffix == nullabilitySuffix) return this;
     return TypeParameterTypeImpl(
-      element3: element3,
+      element: element,
       nullabilitySuffix: nullabilitySuffix,
       promotedBound: promotedBound,
     );
@@ -1755,6 +1783,10 @@
   VoidTypeImpl._();
 
   @override
+  Null get element => null;
+
+  @Deprecated('Use element instead')
+  @override
   Null get element3 => null;
 
   @override
diff --git a/pkg/analyzer/lib/src/dart/element/type_algebra.dart b/pkg/analyzer/lib/src/dart/element/type_algebra.dart
index 6713f8d..07442ed 100644
--- a/pkg/analyzer/lib/src/dart/element/type_algebra.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_algebra.dart
@@ -34,7 +34,7 @@
   var map = <TypeParameterElement, DartType>{};
   for (int i = 0; i < typeParameters.length; ++i) {
     map[typeParameters[i]] = TypeParameterTypeImpl(
-      element3: freshParameters[i],
+      element: freshParameters[i],
       nullabilitySuffix: NullabilitySuffix.none,
     );
   }
@@ -195,7 +195,7 @@
     if (type.typeArguments.isEmpty) {
       return _NullSubstitution.instance;
     }
-    return fromPairs2(type.element3.typeParameters2, type.typeArguments);
+    return fromPairs2(type.element.typeParameters2, type.typeArguments);
   }
 
   /// Substitutes each parameter to the type it maps to in [map].
@@ -317,7 +317,7 @@
   @override
   DartType getSubstitute(TypeParameterElement parameter, bool upperBound) {
     return TypeParameterTypeImpl(
-      element3: parameter as TypeParameterElementImpl,
+      element: parameter as TypeParameterElementImpl,
       nullabilitySuffix: NullabilitySuffix.none,
     );
   }
@@ -521,7 +521,7 @@
     }
 
     return InterfaceTypeImpl(
-      element: type.element3,
+      element: type.element,
       typeArguments: typeArguments,
       nullabilitySuffix: type.nullabilitySuffix,
       alias: alias,
@@ -546,7 +546,7 @@
     return NamedTypeBuilder(
       linker: type.linker,
       typeSystem: type.typeSystem,
-      element3: type.element3,
+      element: type.element,
       arguments: arguments,
       nullabilitySuffix: type.nullabilitySuffix,
     );
@@ -593,7 +593,7 @@
 
   @override
   TypeImpl visitTypeParameterType(covariant TypeParameterTypeImpl type) {
-    var argument = getSubstitute(type.element3);
+    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 64a7155..3ee331e 100644
--- a/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart
@@ -247,8 +247,8 @@
     InterfaceType type,
     InterfaceElementImpl typeDeclaration,
   ) {
-    for (var interface in type.element3.allSupertypes) {
-      if (interface.element3 == typeDeclaration) {
+    for (var interface in type.element.allSupertypes) {
+      if (interface.element == typeDeclaration) {
         var substitution = Substitution.fromInterfaceType(type);
         return substitution.mapInterfaceType(interface).typeArguments;
       }
diff --git a/pkg/analyzer/lib/src/dart/element/type_demotion.dart b/pkg/analyzer/lib/src/dart/element/type_demotion.dart
index 4e85857..64748d6 100644
--- a/pkg/analyzer/lib/src/dart/element/type_demotion.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_demotion.dart
@@ -21,7 +21,7 @@
     }
 
     return TypeParameterTypeImpl(
-      element3: type.element3,
+      element: type.element,
       nullabilitySuffix: 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 a8032f5..6fd9106 100644
--- a/pkg/analyzer/lib/src/dart/element/type_provider.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_provider.dart
@@ -78,7 +78,7 @@
 abstract class TypeProviderBase implements TypeProvider {
   @override
   bool isObjectGetter(String id) {
-    var element = objectType.element3.getGetter(id);
+    var element = objectType.element.getGetter(id);
     return element != null && !element.isStatic;
   }
 
@@ -89,7 +89,7 @@
 
   @override
   bool isObjectMethod(String id) {
-    var element = objectType.element3.getMethod(id);
+    var element = objectType.element.getMethod(id);
     return element != null && !element.isStatic;
   }
 }
diff --git a/pkg/analyzer/lib/src/dart/element/type_schema.dart b/pkg/analyzer/lib/src/dart/element/type_schema.dart
index 6bdbe70..be1810b 100644
--- a/pkg/analyzer/lib/src/dart/element/type_schema.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_schema.dart
@@ -24,7 +24,11 @@
   const UnknownInferredType._();
 
   @override
-  Element? get element3 => null;
+  Element? get element => null;
+
+  @Deprecated('Use element instead')
+  @override
+  Element? get element3 => 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 ae8a65c..8dbc753 100644
--- a/pkg/analyzer/lib/src/dart/element/type_system.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_system.dart
@@ -195,8 +195,8 @@
     }
 
     if (left is InterfaceTypeImpl && right is InterfaceTypeImpl) {
-      var leftElement = left.element3;
-      var rightElement = right.element3;
+      var leftElement = left.element;
+      var rightElement = right.element;
 
       // Can happen in JavaScript.
       if (left.isDartCoreInt && right.isDartCoreDouble ||
@@ -208,7 +208,7 @@
         InterfaceTypeImpl left,
         InterfaceTypeImpl right,
       ) {
-        assert(left.element3 == right.element3);
+        assert(left.element == right.element);
         var leftArguments = left.typeArguments;
         var rightArguments = right.typeArguments;
         assert(leftArguments.length == rightArguments.length);
@@ -421,7 +421,7 @@
         // * otherwise, flatten(T) = flatten(X)
         return flatten(
           TypeParameterTypeImpl(
-            element3: T.element3,
+            element: T.element,
             nullabilitySuffix: nullabilitySuffix,
           ),
         );
@@ -525,7 +525,7 @@
       }
     }
     return candidates
-        .where((type) => type.element3.typeParameters2.isNotEmpty)
+        .where((type) => type.element.typeParameters2.isNotEmpty)
         .toList();
   }
 
@@ -538,7 +538,7 @@
   FunctionTypeImpl? getCallMethodType(DartType t) {
     if (t is InterfaceTypeImpl) {
       return t
-          .lookUpMethod(MethodElement.CALL_METHOD_NAME, t.element3.library2)
+          .lookUpMethod(MethodElement.CALL_METHOD_NAME, t.element.library2)
           ?.type;
     }
     return null;
@@ -567,7 +567,7 @@
       }
       visitedTypes.add(type);
       if (type is TypeParameterType) {
-        var element = type.element3;
+        var element = type.element;
         if ((candidates == null || candidates.contains(element)) &&
             !boundTypeParameters.contains(element)) {
           parameters ??= <TypeParameterElement>[];
@@ -715,7 +715,7 @@
       return type.instantiate(typeArguments);
     } else if (type is InterfaceTypeImpl) {
       // TODO(scheglov): Use `ClassElement.instantiate()`, don't use raw types.
-      return type.element3.instantiateImpl(
+      return type.element.instantiateImpl(
         typeArguments: typeArguments,
         nullabilitySuffix: type.nullabilitySuffix,
       );
@@ -828,7 +828,7 @@
       if (type.isDartCoreNull) {
         return true;
       }
-      var element = type.element3;
+      var element = type.element;
       if (element is EnumElement) {
         return true;
       }
@@ -847,7 +847,7 @@
       if (promotedBound != null && isAlwaysExhaustive(promotedBound)) {
         return true;
       }
-      var bound = type.element3.bound;
+      var bound = type.element.bound;
       if (bound != null && isAlwaysExhaustive(bound)) {
         return true;
       }
@@ -910,7 +910,7 @@
     }
 
     if (type is TypeParameterTypeImpl) {
-      var bound = type.element3.bound;
+      var bound = type.element.bound;
       if (bound != null && isDynamicBounded(bound)) {
         return true;
       }
@@ -946,7 +946,7 @@
     }
 
     if (type is TypeParameterTypeImpl) {
-      var bound = type.element3.bound;
+      var bound = type.element.bound;
       if (bound != null && isFunctionBounded(bound)) {
         return true;
       }
@@ -970,7 +970,7 @@
     }
 
     // `T` is an extension type that does not implement `Future`.
-    if (T.element3 is ExtensionTypeElement) {
+    if (T.element is ExtensionTypeElement) {
       var anyFuture = typeProvider.futureType(objectQuestion);
       if (!isSubtypeOf(T, anyFuture)) {
         return true;
@@ -984,7 +984,7 @@
       }
       // `T` is a type variable with bound `S`, and `S` is incompatible
       // with await.
-      if (T.element3.bound case var S?) {
+      if (T.element.bound case var S?) {
         return isIncompatibleWithAwait(S);
       }
     }
@@ -999,7 +999,7 @@
     }
 
     if (type is TypeParameterTypeImpl) {
-      var bound = type.element3.bound;
+      var bound = type.element.bound;
       if (bound != null && isInvalidBounded(bound)) {
         return true;
       }
@@ -1064,8 +1064,8 @@
       // is anything except none by this point.
       assert(T_nullability == NullabilitySuffix.none);
       assert(S_nullability == NullabilitySuffix.none);
-      var T_element = T.element3;
-      var S_element = S.element3;
+      var T_element = T.element;
+      var S_element = S.element;
 
       // MOREBOTTOM(X&T, Y&S) = MOREBOTTOM(T, S)
       var T_promotedBound = T.promotedBound;
@@ -1183,11 +1183,11 @@
       if (type.isDartAsyncFutureOr) {
         return isNonNullable(type.typeArguments[0]);
       }
-      if (type.element3 is ExtensionTypeElement) {
+      if (type.element is ExtensionTypeElement) {
         return type.interfaces.isNotEmpty;
       }
     } else if (type is TypeParameterType) {
-      var bound = type.element3.bound;
+      var bound = type.element.bound;
       return bound != null && isNonNullable(bound);
     }
     return true;
@@ -1275,7 +1275,7 @@
       if (type.isDartAsyncFutureOr) {
         return isStrictlyNonNullable(type.typeArguments[0]);
       }
-      if (type.element3 is ExtensionTypeElement) {
+      if (type.element is ExtensionTypeElement) {
         return type.interfaces.isNotEmpty;
       }
     } else if (type is TypeParameterType) {
@@ -1491,13 +1491,13 @@
     if (type.isDartCoreNull) return NeverTypeImpl.instance;
 
     if (type is TypeParameterTypeImpl) {
-      var element = type.element3;
+      var element = type.element;
 
       // NonNull(X & T) = X & NonNull(T)
       if (type.promotedBound != null) {
         var promotedBound = promoteToNonNull(type.promotedBound!);
         return TypeParameterTypeImpl(
-          element3: element,
+          element: element,
           nullabilitySuffix: NullabilitySuffix.none,
           promotedBound: promotedBound,
         );
@@ -1512,7 +1512,7 @@
         promotedBound = null;
       }
       return TypeParameterTypeImpl(
-        element3: element,
+        element: element,
         nullabilitySuffix: NullabilitySuffix.none,
         promotedBound: promotedBound,
       );
@@ -1667,7 +1667,7 @@
         return resolveToBound(promotedBound);
       }
 
-      var bound = type.element3.bound;
+      var bound = type.element.bound;
       if (bound == null) {
         return objectQuestion;
       }
@@ -1769,9 +1769,9 @@
     // `U` to `S` where `S <: U`, yielding a type parameter `T extends S`.
     if (from is TypeParameterTypeImpl) {
       if (isSubtypeOf(to, from.bound)) {
-        var declaration = from.element3.baseElement;
+        var declaration = from.element.baseElement;
         return TypeParameterTypeImpl(
-          element3: declaration as TypeParameterElementImpl,
+          element: declaration as TypeParameterElementImpl,
           nullabilitySuffix: _promotedTypeParameterTypeNullability(
             from.nullabilitySuffix,
             to.nullabilitySuffix,
@@ -1788,7 +1788,7 @@
   /// the type arguments of [right]. Both types must be instantiations of the
   /// same element.
   bool _canBeEqualArguments(InterfaceType left, InterfaceType right) {
-    assert(left.element3 == right.element3);
+    assert(left.element == right.element);
     var leftArguments = left.typeArguments;
     var rightArguments = right.typeArguments;
     assert(leftArguments.length == rightArguments.length);
@@ -1805,7 +1805,7 @@
   /// Optimistically estimates, if [left] can be equal to [right].
   bool _canBeEqualTo(DartType left, DartType right) {
     if (left is InterfaceType && right is InterfaceType) {
-      if (left.element3 != right.element3) {
+      if (left.element != right.element) {
         return false;
       }
     }
@@ -1845,7 +1845,7 @@
     }
 
     if (T is TypeParameterTypeImpl) {
-      var bound = T.element3.bound;
+      var bound = T.element.bound;
       if (bound != null) {
         var result = _futureTypeOfBounded(bound);
         if (result != null) {
diff --git a/pkg/analyzer/lib/src/dart/element/well_bounded.dart b/pkg/analyzer/lib/src/dart/element/well_bounded.dart
index 11f24c7..2fbf043 100644
--- a/pkg/analyzer/lib/src/dart/element/well_bounded.dart
+++ b/pkg/analyzer/lib/src/dart/element/well_bounded.dart
@@ -83,8 +83,8 @@
       typeParameters = alias.element2.typeParameters2;
       typeArguments = alias.typeArguments;
     } else if (type is InterfaceTypeImpl) {
-      elementName = type.element3.name3;
-      typeParameters = type.element3.typeParameters2;
+      elementName = type.element.name3;
+      typeParameters = type.element.typeParameters2;
       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 58c7b77..9099004 100644
--- a/pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart
@@ -446,7 +446,7 @@
     ExecutableElement? getter;
     var aliasedType = typeAliasElement.aliasedType;
     if (aliasedType is InterfaceType) {
-      var classElement = aliasedType.element3;
+      var classElement = aliasedType.element;
       if (getterName != null) {
         getter = classElement.getGetter(getterName.name);
       }
diff --git a/pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart b/pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart
index 1e8430c..1f96d7a 100644
--- a/pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart
@@ -209,7 +209,7 @@
             node: node,
             typeIdentifier: target,
             constructorIdentifier: methodName,
-            classElement: aliasedType.element3,
+            classElement: aliasedType.element,
           );
         }
       }
@@ -234,7 +234,7 @@
               node: node,
               typeNameIdentifier: target,
               constructorIdentifier: methodName,
-              classElement: aliasedType.element3,
+              classElement: aliasedType.element,
             );
           }
         }
@@ -296,7 +296,7 @@
         //     X.named
         return _toConstructorReference_prefixed(
           node: node,
-          classElement: aliasedType.element3,
+          classElement: aliasedType.element,
         );
       }
     }
@@ -386,7 +386,7 @@
           node: node,
           receiver: receiverIdentifier,
           typeArguments: typeArguments,
-          classElement: aliasedType.element3,
+          classElement: aliasedType.element,
         );
       }
     }
diff --git a/pkg/analyzer/lib/src/dart/resolver/comment_reference_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/comment_reference_resolver.dart
index 3042617..ddd46e0 100644
--- a/pkg/analyzer/lib/src/dart/resolver/comment_reference_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/comment_reference_resolver.dart
@@ -67,7 +67,7 @@
 
     if (prefixElement is TypeAliasElement) {
       // When resolving `name`, use the aliased element.
-      prefixElement = prefixElement.aliasedType.element3;
+      prefixElement = prefixElement.aliasedType.element;
     }
 
     if (prefixElement is PrefixElement) {
@@ -140,7 +140,7 @@
 
     if (element is TypeAliasElement) {
       // When resolving `propertyName`, use the aliased element.
-      element = element.aliasedType.element3;
+      element = element.aliasedType.element;
     }
 
     if (element is InterfaceElement) {
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 cb2aa2d..ad69bcc 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) {
         var aliasedType = enclosingElement.aliasedType;
         enclosingElement =
-            aliasedType is InterfaceType ? aliasedType.element3 : 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/flow_analysis_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
index 09044e6..934c64c 100644
--- a/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
@@ -648,7 +648,7 @@
 
   @override
   bool isExtensionTypeInternal(TypeImpl type) {
-    return type is InterfaceType && type.element3 is ExtensionTypeElement;
+    return type is InterfaceType && type.element is ExtensionTypeElement;
   }
 
   @override
@@ -661,7 +661,7 @@
     return type is InterfaceType &&
         !type.isDartCoreNull &&
         !type.isDartAsyncFutureOr &&
-        type.element3 is! ExtensionTypeElement;
+        type.element is! ExtensionTypeElement;
   }
 
   @override
@@ -778,7 +778,7 @@
   @override
   TypeParameterElementImpl? matchInferableParameterInternal(TypeImpl type) {
     if (type is TypeParameterTypeImpl) {
-      return type.element3;
+      return type.element;
     } else {
       return null;
     }
@@ -828,7 +828,7 @@
       return TypeDeclarationMatchResult(
         typeDeclarationKind: TypeDeclarationKind.interfaceDeclaration,
         typeDeclarationType: interfaceType,
-        typeDeclaration: interfaceType.element3,
+        typeDeclaration: interfaceType.element,
         typeArguments: interfaceType.typeArguments,
       );
     } else if (isExtensionTypeInternal(type)) {
@@ -836,7 +836,7 @@
       return TypeDeclarationMatchResult(
         typeDeclarationKind: TypeDeclarationKind.extensionTypeDeclaration,
         typeDeclarationType: interfaceType,
-        typeDeclaration: interfaceType.element3,
+        typeDeclaration: interfaceType.element,
         typeArguments: interfaceType.typeArguments,
       );
     } else {
@@ -848,7 +848,7 @@
   TypeImpl? matchTypeParameterBoundInternal(TypeImpl type) {
     if (type is TypeParameterTypeImpl &&
         type.nullabilitySuffix == NullabilitySuffix.none) {
-      return type.promotedBound ?? type.element3.bound;
+      return type.promotedBound ?? type.element.bound;
     } else {
       return null;
     }
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 40576be..84ca7aa 100644
--- a/pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart
@@ -177,7 +177,7 @@
     // extension method applies.
     return type.lookUpMethod(
           MethodElement.CALL_METHOD_NAME,
-          type.element3.library2,
+          type.element.library2,
         ) ??
         _extensionResolver.findExtension(type, node, callMethodName).getter2;
   }
@@ -249,7 +249,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.element3.bound;
+      rawType = rawType.element.bound;
     }
 
     if (rawType is FunctionType) {
@@ -927,7 +927,7 @@
       } else if (receiverElement is TypeAliasElement) {
         var aliasedType = receiverElement.aliasedType;
         if (aliasedType is InterfaceType) {
-          var element = _resolveStaticElement(aliasedType.element3, name);
+          var element = _resolveStaticElement(aliasedType.element, name);
           name.element = element;
           return element?.referenceType;
         } else {
diff --git a/pkg/analyzer/lib/src/dart/resolver/instance_creation_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/instance_creation_expression_resolver.dart
index c090797..a6a769b 100644
--- a/pkg/analyzer/lib/src/dart/resolver/instance_creation_expression_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/instance_creation_expression_resolver.dart
@@ -73,7 +73,7 @@
 
     // TODO(kallentu): Support other context types
     if (dotShorthandContextType is InterfaceTypeImpl) {
-      InterfaceElementImpl? contextElement = dotShorthandContextType.element3;
+      InterfaceElementImpl? contextElement = dotShorthandContextType.element;
       // This branch will be true if we're resolving an explicitly marked
       // const constructor invocation. It's completely unresolved, unlike a
       // rewritten [DotShorthandConstructorInvocation] that resulted from
@@ -134,7 +134,7 @@
     var whyNotPromotedArguments = <WhyNotPromotedGetter>[];
     _resolver.elementResolver.visitDotShorthandConstructorInvocation(node);
     var elementToInfer = _resolver.inferenceHelper.constructorElementToInfer(
-      typeElement: dotShorthandContextType.element3,
+      typeElement: dotShorthandContextType.element,
       constructorName: node.constructorName,
       definingLibrary: _resolver.definingLibrary,
     );
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 d2edfe5..de87072 100644
--- a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
@@ -172,7 +172,7 @@
         if (aliasedType is InterfaceType) {
           return _resolveReceiverTypeLiteral(
             node,
-            aliasedType.element3,
+            aliasedType.element,
             nameNode,
             name,
             whyNotPromotedArguments,
@@ -274,7 +274,7 @@
 
     // TODO(kallentu): Dot shorthands work - Support other context types
     if (dotShorthandContextType is InterfaceTypeImpl) {
-      var receiver = dotShorthandContextType.element3;
+      var receiver = dotShorthandContextType.element;
       return _resolveReceiverTypeLiteralForDotShorthand(
         node,
         receiver,
@@ -851,7 +851,7 @@
           contextType: contextType,
         );
         var receiverTypeName = switch (receiverType) {
-          InterfaceTypeImpl() => receiverType.element3.name3!,
+          InterfaceTypeImpl() => receiverType.element.name3!,
           FunctionType() => 'Function',
           _ => '<unknown>',
         };
@@ -1158,7 +1158,7 @@
 
     String receiverClassName = '<unknown>';
     if (receiverType is InterfaceTypeImpl) {
-      receiverClassName = receiverType.element3.name3!;
+      receiverClassName = receiverType.element.name3!;
     } else if (receiverType is FunctionType) {
       receiverClassName = 'Function';
     }
@@ -1187,7 +1187,7 @@
     required TypeImpl contextType,
   }) {
     if (node.isCascaded) {
-      receiver = _typeType.element3;
+      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 e47f826..50a85b6 100644
--- a/pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart
@@ -260,7 +260,7 @@
     if (element is InterfaceElementImpl) {
       if (identical(node, withClause_namedType)) {
         for (var mixin in enclosingClass!.mixins) {
-          if (mixin.element3 == 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 1bd36df..357c72b 100644
--- a/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
@@ -81,7 +81,7 @@
         // Infer type parameters.
         var elementToInfer = _resolver.inferenceHelper
             .constructorElementToInfer(
-              typeElement: context.element3,
+              typeElement: context.element,
               constructorName: identifier,
               definingLibrary: _resolver.definingLibrary,
             );
@@ -114,7 +114,7 @@
       }
 
       // Didn't find any constructor tearoffs, look for static getters.
-      var contextElement = context.element3;
+      var contextElement = context.element;
       return _resolveTargetInterfaceElement(
         typeReference: contextElement,
         isCascaded: false,
@@ -506,7 +506,7 @@
         var aliasedType = targetElement.aliasedType;
         if (aliasedType is InterfaceType) {
           return _resolveTargetInterfaceElement(
-            typeReference: aliasedType.element3,
+            typeReference: aliasedType.element,
             isCascaded: isCascaded,
             propertyName: propertyName,
             hasRead: hasRead,
@@ -779,7 +779,7 @@
     bool resolvingDotShorthand = false,
   }) {
     if (isCascaded) {
-      typeReference = _resolver.typeProvider.typeType.element3;
+      typeReference = _resolver.typeProvider.typeType.element;
     }
 
     ExecutableElement? readElement;
@@ -927,7 +927,7 @@
       if (hasRead) {
         var name = Name(_definingLibrary.source.uri, propertyName.name);
         readElement = _resolver.inheritance.getMember(
-          targetType.element3,
+          targetType.element,
           name,
           forSuper: true,
         );
@@ -939,7 +939,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.getInherited(
-            targetType.element3,
+            targetType.element,
             name,
           );
           if (readElement != null) {
diff --git a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
index 7d73a9f..a34a69f 100644
--- a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
@@ -1723,7 +1723,7 @@
       return;
     }
 
-    var element = type.element3;
+    var element = type.element;
     switch (element) {
       case ClassElement():
         return;
@@ -1875,7 +1875,7 @@
                 .EXTENSION_TYPE_IMPLEMENTS_REPRESENTATION_NOT_SUPERTYPE,
             arguments: [
               implementedRepresentation,
-              type.element3.name3 ?? '',
+              type.element.name3 ?? '',
               declaredRepresentation,
               declaredElement.name2 ?? '',
             ],
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 58767fd..d641c16 100644
--- a/pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart
@@ -279,7 +279,7 @@
       _needsGetterError = _getterRequested == null;
 
       if (_getterRequested == null && recoverWithStatic) {
-        var classElement = type.element3;
+        var classElement = type.element;
         _getterRecovery ??=
             classElement.lookupStaticGetter(_name, _definingLibrary) ??
             classElement.lookupStaticMethod(_name, _definingLibrary);
@@ -297,7 +297,7 @@
       _needsSetterError = _setterRequested == null;
 
       if (_setterRequested == null && recoverWithStatic) {
-        var classElement = type.element3;
+        var classElement = type.element;
         _setterRecovery ??= classElement.lookupStaticSetter(
           _name,
           _definingLibrary,
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 852acd0..7e6d180 100644
--- a/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart
@@ -787,12 +787,12 @@
       // 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.element3 == _typeProvider.mapElement2) {
+        literalType.element == _typeProvider.mapElement2) {
       node.becomeMap();
     } else {
       assert(
         literalType is InterfaceType &&
-            literalType.element3 == _typeProvider.setElement2,
+            literalType.element == _typeProvider.setElement2,
       );
       node.becomeSet();
     }
diff --git a/pkg/analyzer/lib/src/error/annotation_verifier.dart b/pkg/analyzer/lib/src/error/annotation_verifier.dart
index 9adcbc2..71938be 100644
--- a/pkg/analyzer/lib/src/error/annotation_verifier.dart
+++ b/pkg/analyzer/lib/src/error/annotation_verifier.dart
@@ -77,7 +77,7 @@
         return;
       }
 
-      var element = type.element3;
+      var element = type.element;
       if (element is InterfaceElement &&
           element.allSupertypes.any((t) => t.isDartAsyncFuture)) {
         return;
@@ -300,10 +300,10 @@
     var parent = node.parent;
     if (parent is ClassDeclaration) {
       classElement = parent.declaredFragment?.element;
-      superElement = classElement?.supertype?.element3;
+      superElement = classElement?.supertype?.element;
     } else if (parent is ClassTypeAlias) {
       classElement = parent.declaredFragment?.element;
-      superElement = classElement?.supertype?.element3;
+      superElement = classElement?.supertype?.element;
     } else {
       // If `parent` is neither of the above types, then `_checkKinds` will
       // report a warning.
diff --git a/pkg/analyzer/lib/src/error/base_or_final_type_verifier.dart b/pkg/analyzer/lib/src/error/base_or_final_type_verifier.dart
index 36de537..efc738b 100644
--- a/pkg/analyzer/lib/src/error/base_or_final_type_verifier.dart
+++ b/pkg/analyzer/lib/src/error/base_or_final_type_verifier.dart
@@ -66,7 +66,7 @@
     for (NamedType interface in interfaces) {
       var interfaceType = interface.type;
       if (interfaceType is InterfaceType) {
-        var interfaceElement = interfaceType.element3;
+        var interfaceElement = interfaceType.element;
         if (interfaceElement is InterfaceElementImpl) {
           // Return early if an error has been reported to prevent reporting
           // multiple errors on one element.
@@ -90,7 +90,7 @@
     InterfaceElementImpl subElement,
   ) {
     for (var supertype in supertypes) {
-      var supertypeElement = supertype.element3;
+      var supertypeElement = supertype.element;
       if (supertypeElement is InterfaceElementImpl) {
         // Return early if an error has been reported to prevent reporting
         // multiple errors on one element.
@@ -141,7 +141,7 @@
   ) {
     InterfaceElementImpl? baseOrFinalElement;
     for (var supertype in supertypes) {
-      var supertypeElement = supertype.element3;
+      var supertypeElement = supertype.element;
       if (supertypeElement is InterfaceElementImpl) {
         baseOrFinalElement = _getExplicitlyBaseOrFinalElement(supertypeElement);
         if (baseOrFinalElement != null) {
diff --git a/pkg/analyzer/lib/src/error/best_practices_verifier.dart b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
index bcea26f..3a580d6 100644
--- a/pkg/analyzer/lib/src/error/best_practices_verifier.dart
+++ b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
@@ -691,7 +691,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.element3 == _nullType.element3 ||
+      if ((type is InterfaceType && type.element == _nullType.element ||
               (type is DynamicType && node.name.lexeme == 'dynamic')) &&
           type.alias == null) {
         _diagnosticReporter.atToken(
@@ -918,17 +918,17 @@
           return true;
         }
         for (InterfaceType interface in element.mixins) {
-          if (isOrInheritsImmutable(interface.element3, visited)) {
+          if (isOrInheritsImmutable(interface.element, visited)) {
             return true;
           }
         }
         for (InterfaceType mixin in element.interfaces) {
-          if (isOrInheritsImmutable(mixin.element3, visited)) {
+          if (isOrInheritsImmutable(mixin.element, visited)) {
             return true;
           }
         }
         if (element.supertype != null) {
-          return isOrInheritsImmutable(element.supertype!.element3, visited);
+          return isOrInheritsImmutable(element.supertype!.element, visited);
         }
       }
       return false;
@@ -952,13 +952,13 @@
         nonFinalFields = nonFinalInstanceFields(element);
         nonFinalFields = nonFinalFields.followedBy(
           element.mixins.expand(
-            (InterfaceType mixin) => nonFinalInstanceFields(mixin.element3),
+            (InterfaceType mixin) => nonFinalInstanceFields(mixin.element),
           ),
         );
         if (element.supertype != null) {
           nonFinalFields = nonFinalFields.followedBy(
             definedOrInheritedNonFinalInstanceFields(
-              element.supertype!.element3,
+              element.supertype!.element,
               visited,
             ),
           );
@@ -1049,7 +1049,7 @@
     // TODO(srawlins): Perhaps replace this with a getter on Element, like
     // `Element.hasOrInheritsSealed`?
     for (InterfaceType supertype in element.allSupertypes) {
-      var superclass = supertype.element3;
+      var superclass = supertype.element;
       if (superclass.metadata.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 396e00a..545117e 100644
--- a/pkg/analyzer/lib/src/error/correct_override.dart
+++ b/pkg/analyzer/lib/src/error/correct_override.dart
@@ -145,7 +145,7 @@
 
     var superMembers = <_SuperMember>[];
     for (var interface in interfaces) {
-      var superMember = _correspondingMember(interface.element3, _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 8a467bd..f2eceeb 100644
--- a/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart
+++ b/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart
@@ -227,7 +227,7 @@
     } else if (node is MethodInvocation &&
         displayName == MethodElement.CALL_METHOD_NAME) {
       var invokeType = node.staticInvokeType as InterfaceType;
-      var invokeClass = invokeType.element3;
+      var invokeClass = invokeType.element;
       displayName = "${invokeClass.name3}.${element.displayName}";
     }
     var message = _deprecatedMessage(element, strictCasts: _strictCasts);
diff --git a/pkg/analyzer/lib/src/error/error_handler_verifier.dart b/pkg/analyzer/lib/src/error/error_handler_verifier.dart
index ad584d2..56c331e 100644
--- a/pkg/analyzer/lib/src/error/error_handler_verifier.dart
+++ b/pkg/analyzer/lib/src/error/error_handler_verifier.dart
@@ -302,8 +302,8 @@
   /// the 'dart:async' library.
   bool _isDartCoreAsyncType(DartType type, String typeName) =>
       type is InterfaceType &&
-      type.element3.name3 == typeName &&
-      type.element3.library2.isDartAsync;
+      type.element.name3 == typeName &&
+      type.element.library2.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 eb34eda..57c6545 100644
--- a/pkg/analyzer/lib/src/error/inheritance_override.dart
+++ b/pkg/analyzer/lib/src/error/inheritance_override.dart
@@ -429,7 +429,7 @@
     InterfaceTypeImpl type, {
     required int mixinIndex,
   }) {
-    var libraryUri = type.element3.library2.uri;
+    var libraryUri = type.element.library2.uri;
     for (var method in type.methods2) {
       _checkDeclaredMember(node, libraryUri, method, mixinIndex: mixinIndex);
     }
@@ -456,7 +456,7 @@
     if (type is! InterfaceType) {
       return false;
     }
-    var typeElement = type.element3;
+    var typeElement = type.element;
 
     var classElement = this.classElement;
     if (typeElement is ClassElement &&
@@ -612,26 +612,26 @@
     // n-case
     var supertype = element.supertype;
     if (supertype != null &&
-        _checkForRecursiveInterfaceInheritance(supertype.element3, path)) {
+        _checkForRecursiveInterfaceInheritance(supertype.element, path)) {
       return true;
     }
 
     for (var type in element.mixins) {
-      if (_checkForRecursiveInterfaceInheritance(type.element3, path)) {
+      if (_checkForRecursiveInterfaceInheritance(type.element, path)) {
         return true;
       }
     }
 
     if (element is MixinElementImpl) {
       for (var type in element.superclassConstraints) {
-        if (_checkForRecursiveInterfaceInheritance(type.element3, path)) {
+        if (_checkForRecursiveInterfaceInheritance(type.element, path)) {
           return true;
         }
       }
     }
 
     for (var type in element.interfaces) {
-      if (_checkForRecursiveInterfaceInheritance(type.element3, path)) {
+      if (_checkForRecursiveInterfaceInheritance(type.element, path)) {
         return true;
       }
     }
@@ -730,7 +730,7 @@
       return false;
     }
 
-    var interfaceElement = type.element3;
+    var interfaceElement = type.element;
     if (interfaceElement is EnumElement ||
         interfaceElement is ExtensionTypeElement) {
       return false;
@@ -750,20 +750,20 @@
   /// Return the error code that should be used when the given class [element]
   /// references itself directly.
   DiagnosticCode _getRecursiveErrorCode(InterfaceElement element) {
-    if (element.supertype?.element3 == classElement.asElement2) {
+    if (element.supertype?.element == classElement.asElement2) {
       return CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_EXTENDS;
     }
 
     if (element is MixinElement) {
       for (var type in element.superclassConstraints) {
-        if (type.element3 == classElement.asElement2) {
+        if (type.element == classElement.asElement2) {
           return CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_ON;
         }
       }
     }
 
     for (var type in element.mixins) {
-      if (type.element3 == classElement.asElement2) {
+      if (type.element == classElement.asElement2) {
         return CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_WITH;
       }
     }
@@ -774,7 +774,7 @@
   /// If [name] is not implemented in the extended concrete class, the
   /// issue should be fixed there, and then [classElement] will not have it too.
   bool _isNotImplementedInConcreteSuperClass(Name name) {
-    var superElement = classElement.supertype?.element3;
+    var superElement = classElement.supertype?.element;
     if (superElement is ClassElementImpl && !superElement.isAbstract) {
       var superInterface = inheritance.getInterface(superElement);
       return superInterface.map.containsKey(name);
diff --git a/pkg/analyzer/lib/src/error/listener.dart b/pkg/analyzer/lib/src/error/listener.dart
index 9310f26..800a7d6 100644
--- a/pkg/analyzer/lib/src/error/listener.dart
+++ b/pkg/analyzer/lib/src/error/listener.dart
@@ -150,7 +150,7 @@
           addElementsFrom(parameter.type);
         }
       } else if (type is InterfaceType) {
-        if (elements.add(type.element3)) {
+        if (elements.add(type.element)) {
           for (var typeArgument in type.typeArguments) {
             addElementsFrom(typeArgument);
           }
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 cec8aa3..557367c 100644
--- a/pkg/analyzer/lib/src/error/must_call_super_verifier.dart
+++ b/pkg/analyzer/lib/src/error/must_call_super_verifier.dart
@@ -100,11 +100,11 @@
     var superclasses = Queue<InterfaceElement?>();
 
     void addToQueue(InterfaceElement element) {
-      superclasses.addAll(element.mixins.map((i) => i.element3));
-      superclasses.add(element.supertype?.element3);
+      superclasses.addAll(element.mixins.map((i) => i.element));
+      superclasses.add(element.supertype?.element);
       if (element is MixinElement) {
         superclasses.addAll(
-          element.superclassConstraints.map((i) => i.element3),
+          element.superclassConstraints.map((i) => i.element),
         );
       }
     }
@@ -204,7 +204,7 @@
   bool isConcrete(String name) {
     var self = this;
     if (self == null) return false;
-    var element = self.element3;
+    var element = self.element;
 
     var library = element.library2 as LibraryElementImpl;
     var inheritanceManager = library.session.inheritanceManager;
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 b3fe3a6..29bf596 100644
--- a/pkg/analyzer/lib/src/error/null_safe_api_verifier.dart
+++ b/pkg/analyzer/lib/src/error/null_safe_api_verifier.dart
@@ -48,7 +48,7 @@
     var targetType = node.realTarget?.staticType;
     if (targetType is! InterfaceTypeImpl) return;
 
-    var targetClass = targetType.element3;
+    var targetClass = targetType.element;
 
     if (targetClass.library2.isDartAsync == true &&
         targetClass.name3 == 'Completer' &&
diff --git a/pkg/analyzer/lib/src/error/type_arguments_verifier.dart b/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
index b2a4c51..6cdbc79 100644
--- a/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
+++ b/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
@@ -312,8 +312,8 @@
       typeParameters = alias.element2.typeParameters2;
       typeArguments = alias.typeArguments;
     } else if (type is InterfaceTypeImpl) {
-      elementName = type.element3.name3;
-      typeParameters = type.element3.typeParameters2;
+      elementName = type.element.name3;
+      typeParameters = type.element.typeParameters2;
       typeArguments = type.typeArguments;
     } else {
       return;
@@ -681,7 +681,7 @@
         return false;
     }
 
-    if (namedType.type?.element3 is ExtensionTypeElement) {
+    if (namedType.type?.element is ExtensionTypeElement) {
       return false;
     }
 
diff --git a/pkg/analyzer/lib/src/fine/library_manifest.dart b/pkg/analyzer/lib/src/fine/library_manifest.dart
index 5129997..b6b959a 100644
--- a/pkg/analyzer/lib/src/fine/library_manifest.dart
+++ b/pkg/analyzer/lib/src/fine/library_manifest.dart
@@ -241,7 +241,7 @@
       var item = declaredItems[element] as ClassItem;
 
       // SAFETY: we set `Object` during linking if it is not a class.
-      var superElement = element.supertype!.element3;
+      var superElement = element.supertype!.element;
       superElement as ClassElementImpl;
 
       // The supertype could be a mixin application itself.
@@ -890,7 +890,7 @@
 
       // Ensure that we have interfaces of supertypes first.
       for (var superType in element.allSupertypes) {
-        addInterfacesToFill(superType.element3);
+        addInterfacesToFill(superType.element);
       }
 
       interfaceSet.add(element);
diff --git a/pkg/analyzer/lib/src/fine/manifest_type.dart b/pkg/analyzer/lib/src/fine/manifest_type.dart
index 2a3f2f2..b4c6960 100644
--- a/pkg/analyzer/lib/src/fine/manifest_type.dart
+++ b/pkg/analyzer/lib/src/fine/manifest_type.dart
@@ -289,7 +289,7 @@
     InterfaceType type,
   ) {
     return ManifestInterfaceType._(
-      element: ManifestElement.encode(context, type.element3),
+      element: ManifestElement.encode(context, type.element),
       arguments: type.typeArguments.encode(context),
       nullabilitySuffix: type.nullabilitySuffix,
     );
@@ -326,7 +326,7 @@
       return false;
     }
 
-    if (!element.match(context, type.element3)) {
+    if (!element.match(context, type.element)) {
       return false;
     }
 
@@ -634,7 +634,7 @@
     TypeParameterTypeImpl type,
   ) {
     return ManifestTypeParameterType._(
-      index: context.indexOfTypeParameter(type.element3),
+      index: context.indexOfTypeParameter(type.element),
       nullabilitySuffix: type.nullabilitySuffix,
     );
   }
@@ -665,7 +665,7 @@
       return false;
     }
 
-    var elementIndex = context.indexOfTypeParameter(type.element3);
+    var elementIndex = context.indexOfTypeParameter(type.element);
     if (elementIndex != index) {
       return false;
     }
diff --git a/pkg/analyzer/lib/src/generated/error_detection_helpers.dart b/pkg/analyzer/lib/src/generated/error_detection_helpers.dart
index 7801cf5..00cf276 100644
--- a/pkg/analyzer/lib/src/generated/error_detection_helpers.dart
+++ b/pkg/analyzer/lib/src/generated/error_detection_helpers.dart
@@ -365,7 +365,7 @@
           .getMember3(
             type,
             Name.forLibrary(
-              type.element3.library2,
+              type.element.library2,
               MethodElement.CALL_METHOD_NAME,
             ),
           )
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index 712c3cf..149175c 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -79,7 +79,7 @@
         if (boundNode is NamedType) {
           var boundType = boundNode.typeOrThrow;
           boundType = boundType.extensionTypeErasure;
-          current = elementToNode[boundType.element3];
+          current = elementToNode[boundType.element];
         } else {
           current = null;
         }
@@ -346,7 +346,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?.element3;
+    var superClass = _enclosingClass?.supertype?.element;
     return superClass != null &&
         _isDartFfiLibrary(superClass.library2) &&
         superClass.name3 == 'Struct';
@@ -355,7 +355,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?.element3;
+    var superClass = _enclosingClass?.supertype?.element;
     return superClass != null &&
         _isDartFfiLibrary(superClass.library2) &&
         superClass.name3 == 'Union';
@@ -1848,14 +1848,14 @@
         )) {
           problemReported = true;
         } else {
-          var mixinElement = mixinType.element3;
+          var mixinElement = mixinType.element;
           if (_checkForExtendsOrImplementsDeferredClass(
             mixinName,
             CompileTimeErrorCode.MIXIN_DEFERRED_CLASS,
           )) {
             problemReported = true;
           }
-          if (mixinType.element3 is ExtensionTypeElement) {
+          if (mixinType.element is ExtensionTypeElement) {
             // Already reported.
           } else if (mixinElement is MixinElement) {
             if (_checkForMixinSuperclassConstraints(
@@ -2159,8 +2159,8 @@
         var implementedInterfaces =
             [
               interfaceType,
-              ...interfaceType.element3.allSupertypes,
-            ].map((e) => e.element3).toList();
+              ...interfaceType.element.allSupertypes,
+            ].map((e) => e.element).toList();
         for (var interfaceElement in implementedInterfaces) {
           if ((interfaceElement is ClassElementImpl &&
                       interfaceElement.isBase ||
@@ -2213,7 +2213,7 @@
       for (NamedType withMixin in withClause.mixinTypes) {
         var withType = withMixin.type;
         if (withType is InterfaceType) {
-          var withElement = withType.element3;
+          var withElement = withType.element;
           if (withElement is ClassElementImpl &&
               !withElement.isMixinClass &&
               withElement.library2.featureSet.isEnabled(
@@ -2663,7 +2663,7 @@
         superInitializer != declaration.initializers.last) {
       var superType = enclosingClass.supertype;
       if (superType != null) {
-        var superNamedType = superType.element3.displayName;
+        var superNamedType = superType.element.displayName;
         var constructorStrName = superNamedType;
         var constructorName = superInitializer.constructorName;
         if (constructorName != null) {
@@ -2704,7 +2704,7 @@
     var instanceFields = <FieldElement>[];
     for (var mixin in enclosingClass.mixins) {
       instanceFields.addAll(
-        mixin.element3.fields.where((field) {
+        mixin.element.fields.where((field) {
           if (field.isStatic) {
             return false;
           }
@@ -2843,7 +2843,7 @@
     NamedType namedType,
     InterfaceType type,
   ) {
-    var element = type.element3;
+    var element = type.element;
     if (element is ClassElement && element.isAbstract) {
       var constructorElement = expression.constructorName.element;
       if (constructorElement != null && !constructorElement.isFactory) {
@@ -2861,7 +2861,7 @@
     NamedType namedType,
     InterfaceType type,
   ) {
-    if (type.element3 is MixinElement) {
+    if (type.element is MixinElement) {
       diagnosticReporter.atNode(
         namedType,
         CompileTimeErrorCode.MIXIN_INSTANTIATE,
@@ -3273,7 +3273,7 @@
     }
     var type = namedType.type;
     return type is InterfaceType &&
-        _typeProvider.isNonSubtypableClass2(type.element3);
+        _typeProvider.isNonSubtypableClass2(type.element);
   }
 
   void _checkForExtensionDeclaresInstanceField(FieldDeclaration node) {
@@ -3585,7 +3585,7 @@
     if (superclass != null) {
       var type = superclass.type;
       if (type is InterfaceType) {
-        var element = type.element3;
+        var element = type.element;
         if (element is ClassElementImpl &&
             element.isFinal &&
             !element.isSealed &&
@@ -3606,8 +3606,8 @@
           var implementedInterfaces =
               [
                 type,
-                ...type.element3.allSupertypes,
-              ].map((e) => e.element3).toList();
+                ...type.element.allSupertypes,
+              ].map((e) => e.element).toList();
           for (var element in implementedInterfaces) {
             if (element is ClassElement &&
                 element.isFinal &&
@@ -3617,8 +3617,8 @@
               // If the final interface is an indirect interface and is in a
               // different library that has class modifiers enabled, there is a
               // nearer declaration that would emit an error, if any.
-              if (element != type.element3 &&
-                  type.element3.library2.featureSet.isEnabled(
+              if (element != type.element &&
+                  type.element.library2.featureSet.isEnabled(
                     Feature.class_modifiers,
                   )) {
                 continue;
@@ -3639,7 +3639,7 @@
       for (NamedType namedType in onClause.superclassConstraints) {
         var type = namedType.type;
         if (type is InterfaceType) {
-          var element = type.element3;
+          var element = type.element;
           if (element is ClassElement &&
               element.isFinal &&
               !element.isSealed &&
@@ -3814,7 +3814,7 @@
     if (superclass != null) {
       var superclassType = superclass.type;
       if (superclassType is InterfaceType) {
-        var superclassElement = superclassType.element3;
+        var superclassElement = superclassType.element;
         if (superclassElement is ClassElementImpl &&
             superclassElement.isInterface &&
             !superclassElement.isSealed &&
@@ -4182,7 +4182,7 @@
 
     var hasCaseNull = false;
     if (expressionType is InterfaceType) {
-      var enumElement = expressionType.element3;
+      var enumElement = expressionType.element;
       if (enumElement is EnumElement) {
         var constantNames =
             enumElement.fields
@@ -4487,7 +4487,7 @@
         }
         names[name] = namedType.name.lexeme;
         var inheritedMember = _inheritanceManager.getMember(
-          declaredSupertype.element3,
+          declaredSupertype.element,
           Name(library.uri, name),
           concrete: true,
         );
@@ -4516,7 +4516,7 @@
     for (NamedType mixinType in withClause.mixinTypes) {
       DartType type = mixinType.typeOrThrow;
       if (type is InterfaceType) {
-        var library = type.element3.library2;
+        var library = type.element.library2;
         if (library != _currentLibrary) {
           for (var getter in type.getters) {
             if (getter.isStatic) {
@@ -4578,7 +4578,7 @@
     }
     DartType type = namedType.typeOrThrow;
     if (type is InterfaceType) {
-      var element = type.element3;
+      var element = type.element;
       if (element is EnumElement || element is MixinElement) {
         // We have already reported the error.
         return;
@@ -4617,7 +4617,7 @@
     if (superType == null) {
       return;
     }
-    var superElement = superType.element3;
+    var superElement = superType.element;
     // try to find default generative super constructor
     var superUnnamedConstructor = superElement.unnamedConstructor2;
     if (superUnnamedConstructor != null) {
@@ -4638,7 +4638,7 @@
       }
     }
 
-    if (!_typeProvider.isNonSubtypableClass2(superType.element3)) {
+    if (!_typeProvider.isNonSubtypableClass2(superType.element)) {
       // Don't report this diagnostic for non-subtypable classes because the
       // real problem was already reported.
       diagnosticReporter.atElement2(
@@ -4661,7 +4661,7 @@
       // subclass has only factory constructors.
       return false;
     }
-    var superElement = superType.element3;
+    var superElement = superType.element;
     if (superElement.constructors.isEmpty) {
       // Exclude empty constructor set, which indicates other errors occurred.
       return false;
@@ -5164,7 +5164,7 @@
     for (var namedType in namedTypes) {
       var type = namedType.type;
       if (type is InterfaceType) {
-        var element = type.element3;
+        var element = type.element;
         var added = accumulatedElements.add(element);
         if (!added) {
           diagnosticReporter.atNode(
@@ -5226,7 +5226,7 @@
       for (NamedType namedType in namedTypes) {
         var type = namedType.type;
         if (type is InterfaceType) {
-          var element = type.element3;
+          var element = type.element;
           if (element is ClassElement &&
               element.isSealed &&
               element.library2 != _currentLibrary) {
@@ -5432,7 +5432,7 @@
     if (superType == null) {
       return;
     }
-    var superElement = superType.element3;
+    var superElement = superType.element;
 
     if (superElement.constructors.every(
       (constructor) => constructor.isFactory,
@@ -6015,14 +6015,14 @@
       return;
     }
 
-    var superElement = _enclosingClass!.supertype?.element3;
+    var superElement = _enclosingClass!.supertype?.element;
     if (superElement == null) {
       return;
     }
 
     for (var interfaceNode in implementsClause.interfaces) {
       var type = interfaceNode.type;
-      if (type is InterfaceType && type.element3 == superElement) {
+      if (type is InterfaceType && type.element == superElement) {
         diagnosticReporter.atNode(
           interfaceNode,
           CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS,
@@ -6081,14 +6081,14 @@
       return;
     }
 
-    var superElement = _enclosingClass!.supertype?.element3;
+    var superElement = _enclosingClass!.supertype?.element;
     if (superElement == null) {
       return;
     }
 
     for (var mixinNode in withClause.mixinTypes) {
       var type = mixinNode.type;
-      if (type is InterfaceType && type.element3 == superElement) {
+      if (type is InterfaceType && type.element == superElement) {
         diagnosticReporter.atNode(
           mixinNode,
           CompileTimeErrorCode.MIXINS_SUPER_CLASS,
@@ -6500,7 +6500,7 @@
       } else if (element is TypeAliasElement) {
         var aliasedType = element.aliasedType;
         if (aliasedType is InterfaceType) {
-          return aliasedType.element3;
+          return aliasedType.element;
         }
       }
     }
diff --git a/pkg/analyzer/lib/src/generated/exhaustiveness.dart b/pkg/analyzer/lib/src/generated/exhaustiveness.dart
index 2a33d24..16a0c74 100644
--- a/pkg/analyzer/lib/src/generated/exhaustiveness.dart
+++ b/pkg/analyzer/lib/src/generated/exhaustiveness.dart
@@ -79,7 +79,7 @@
 
   @override
   EnumElement? getEnumClass(TypeImpl type) {
-    var element = type.element3;
+    var element = type.element;
     if (element is EnumElement) {
       return element;
     }
@@ -149,7 +149,7 @@
       }
       if (declaration != sealedClass && declaration is InterfaceElementImpl) {
         bool checkType(InterfaceTypeImpl? type) {
-          if (type?.element3 == sealedClass) {
+          if (type?.element == sealedClass) {
             subclasses.add(declaration);
             return true;
           }
@@ -183,7 +183,7 @@
 
   @override
   ClassElementImpl? getSealedClass(TypeImpl type) {
-    var element = type.element3;
+    var element = type.element;
     if (element is ClassElementImpl && element.isSealed) {
       return element;
     }
@@ -196,7 +196,7 @@
     covariant InterfaceTypeImpl sealedClassType,
   ) {
     var thisType = subClass.thisType;
-    var asSealedClass = thisType.asInstanceOf2(sealedClassType.element3)!;
+    var asSealedClass = thisType.asInstanceOf2(sealedClassType.element)!;
     if (thisType.typeArguments.isEmpty) {
       return thisType;
     }
@@ -677,7 +677,7 @@
     } else if (pattern is ListPattern) {
       var type = pattern.requiredType as InterfaceTypeImpl;
       assert(
-        type.element3 == cache.typeSystem.typeProvider.listElement2 &&
+        type.element == cache.typeSystem.typeProvider.listElement2 &&
             type.typeArguments.length == 1,
       );
       var elementType = type.typeArguments[0];
@@ -708,7 +708,7 @@
     } else if (pattern is MapPattern) {
       var type = pattern.requiredType as InterfaceTypeImpl;
       assert(
-        type.element3 == cache.typeSystem.typeProvider.mapElement2 &&
+        type.element == cache.typeSystem.typeProvider.mapElement2 &&
             type.typeArguments.length == 2,
       );
       var keyType = type.typeArguments[0];
@@ -778,7 +778,7 @@
       return Space(path, cache.getStaticType(type), properties: properties);
     }
     if (type is InterfaceTypeImpl) {
-      var element = type.element3;
+      var element = type.element;
       if (element is EnumElementImpl) {
         return Space(path, cache.getEnumElementStaticType(element, value));
       }
@@ -830,7 +830,7 @@
     if (_variance == Variance.contravariant) {
       return _replaceTypeParameterTypes(_typeSystem.typeProvider.neverType);
     } else {
-      var element = node.element3;
+      var element = node.element;
       var defaultType = element.defaultType!;
       return _replaceTypeParameterTypes(defaultType);
     }
diff --git a/pkg/analyzer/lib/src/generated/ffi_verifier.dart b/pkg/analyzer/lib/src/generated/ffi_verifier.dart
index 5373aaf..f4b5f31 100644
--- a/pkg/analyzer/lib/src/generated/ffi_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/ffi_verifier.dart
@@ -199,7 +199,7 @@
       if (implementsClause != null) {
         var compoundType = node.declaredFragment!.element.thisType;
         var structType = compoundType.superclass!;
-        var ffiLibrary = structType.element3.library2;
+        var ffiLibrary = structType.element.library2;
         var finalizableElement = ffiLibrary.getClass2(_finalizableClassName)!;
         var finalizableType = finalizableElement.thisType;
         if (typeSystem.isSubtypeOf(compoundType, finalizableType)) {
@@ -518,7 +518,7 @@
                 formalParameters: dartSignature.formalParameters,
                 returnType:
                     ffiVoidType ??=
-                        annotationType.element3.library2
+                        annotationType.element.library2
                             .getClass2('Void')!
                             .thisType,
                 nullabilitySuffix: dartSignature.nullabilitySuffix,
@@ -753,7 +753,7 @@
       if (type.getDisplayString() == 'NativeFieldWrapperClass1') {
         return true;
       }
-      var element = type.element3;
+      var element = type.element;
       type = element.supertype;
     }
     return false;
@@ -889,7 +889,7 @@
       }
       if (nativeType.isCompoundSubtype) {
         if (!allowEmptyStruct) {
-          if (nativeType.element3.isEmptyStruct) {
+          if (nativeType.element.isEmptyStruct) {
             // TODO(dacoharkes): This results in an error message not  mentioning
             // empty structs at all.
             // dartbug.com/36780
@@ -919,18 +919,18 @@
   bool _isValidTypedData(InterfaceType nativeType, InterfaceType dartType) {
     if (nativeType.isPointer) {
       var elementType = nativeType.typeArguments.single;
-      var elementName = elementType.element3?.name3;
-      if (dartType.element3.isTypedDataClass) {
+      var elementName = elementType.element?.name3;
+      if (dartType.element.isTypedDataClass) {
         if (elementName == 'Float' &&
-            dartType.element3.name3 == 'Float32List') {
+            dartType.element.name3 == 'Float32List') {
           return true;
         }
         if (elementName == 'Double' &&
-            dartType.element3.name3 == 'Float64List') {
+            dartType.element.name3 == 'Float64List') {
           return true;
         }
         if (_primitiveIntegerNativeTypesFixedSize.contains(elementName) &&
-            dartType.element3.name3 == '${elementName}List') {
+            dartType.element.name3 == '${elementName}List') {
           return true;
         }
       }
@@ -964,7 +964,7 @@
 
   _PrimitiveDartType _primitiveNativeType(DartType nativeType) {
     if (nativeType is InterfaceType) {
-      var element = nativeType.element3;
+      var element = nativeType.element;
       if (element.isFfiClass) {
         var name = element.name3;
         if (_primitiveIntegerNativeTypes.contains(name)) {
@@ -1059,7 +1059,7 @@
           if (element is MapLiteralEntry) {
             var valueType = element.value.staticType;
             if (valueType is InterfaceType) {
-              var name = valueType.element3.name3!;
+              var name = valueType.element.name3!;
               if (!_primitiveIntegerNativeTypesFixedSize.contains(name)) {
                 _diagnosticReporter.atNode(
                   element.value,
@@ -1082,7 +1082,7 @@
     for (var nativeType in mappingValues.values) {
       var type = nativeType?.type;
       if (type is InterfaceType) {
-        var nativeTypeName = type.element3.name3!;
+        var nativeTypeName = type.element.name3!;
         if (!_primitiveIntegerNativeTypesFixedSize.contains(nativeTypeName)) {
           _diagnosticReporter.atNode(
             arguments.first,
@@ -1379,7 +1379,7 @@
     var nativeReturnType = _primitiveNativeType(nativeType);
     if (nativeReturnType == _PrimitiveDartType.int ||
         (nativeType is InterfaceTypeImpl &&
-            nativeType.superclass?.element3.name3 ==
+            nativeType.superclass?.element.name3 ==
                 _abiSpecificIntegerClassName)) {
       return dartType.isDartCoreInt;
     } else if (nativeReturnType == _PrimitiveDartType.double) {
@@ -1565,7 +1565,7 @@
           isLastField,
         );
       } else if (declaredType.isCompoundSubtype) {
-        var clazz = (declaredType as InterfaceType).element3;
+        var clazz = (declaredType as InterfaceType).element;
         if (clazz.isEmptyStruct) {
           _diagnosticReporter.atNode(
             node,
@@ -1755,7 +1755,7 @@
         var annotationType = value?.type;
 
         if (annotationType is InterfaceTypeImpl &&
-            annotationType.element3.isNative) {
+            annotationType.element.isNative) {
           var nativeType = annotationType.typeArguments[0];
 
           if (nativeType is FunctionType) {
@@ -1792,7 +1792,7 @@
                     formalParameters: staticType.formalParameters,
                     returnType:
                         ffiVoidType ??=
-                            annotationType.element3.library2
+                            annotationType.element.library2
                                 .getClass2('Void')!
                                 .thisType,
                     nullabilitySuffix: staticType.nullabilitySuffix,
@@ -2347,14 +2347,14 @@
 extension on DartObject {
   bool get isDefaultAsset {
     return switch (type) {
-      InterfaceType(:var element3) => element3.isDefaultAsset,
+      InterfaceType(:var element) => element.isDefaultAsset,
       _ => false,
     };
   }
 
   bool get isNative {
     return switch (type) {
-      InterfaceType(:var element3) => element3.isNative,
+      InterfaceType(:var element) => element.isNative,
       _ => false,
     };
   }
@@ -2554,17 +2554,17 @@
 extension on DartType? {
   bool get isAbiSpecificInteger {
     var self = this;
-    return self is InterfaceType && self.element3.isAbiSpecificInteger;
+    return self is InterfaceType && self.element.isAbiSpecificInteger;
   }
 
   bool get isStruct {
     var self = this;
-    return self is InterfaceType && self.element3.isStruct;
+    return self is InterfaceType && self.element.isStruct;
   }
 
   bool get isUnion {
     var self = this;
-    return self is InterfaceType && self.element3.isUnion;
+    return self is InterfaceType && self.element.isUnion;
   }
 }
 
@@ -2573,8 +2573,8 @@
     DartType iterator = this;
     int dimensions = 0;
     while (iterator is InterfaceType &&
-        iterator.element3.name3 == FfiVerifier._arrayClassName &&
-        iterator.element3.isFfiClass) {
+        iterator.element.name3 == FfiVerifier._arrayClassName &&
+        iterator.element.isFfiClass) {
       dimensions++;
       iterator = iterator.typeArguments.single;
     }
@@ -2584,7 +2584,7 @@
   bool get isAbiSpecificInteger {
     var self = this;
     if (self is InterfaceType) {
-      var element = self.element3;
+      var element = self.element;
       var name = element.name3;
       return name == FfiVerifier._abiSpecificIntegerClassName &&
           element.isFfiClass;
@@ -2597,9 +2597,9 @@
   bool get isAbiSpecificIntegerSubtype {
     var self = this;
     if (self is InterfaceType) {
-      var superType = self.element3.supertype;
+      var superType = self.element.supertype;
       if (superType != null) {
-        var superClassElement = superType.element3;
+        var superClassElement = superType.element;
         return superClassElement.name3 ==
                 FfiVerifier._abiSpecificIntegerClassName &&
             superClassElement.isFfiClass;
@@ -2612,7 +2612,7 @@
   bool get isArray {
     var self = this;
     if (self is InterfaceType) {
-      var element = self.element3;
+      var element = self.element;
       return element.name3 == FfiVerifier._arrayClassName && element.isFfiClass;
     }
     return false;
@@ -2621,7 +2621,7 @@
   bool get isCompound {
     var self = this;
     if (self is InterfaceType) {
-      var element = self.element3;
+      var element = self.element;
       var name = element.name3;
       return (name == FfiVerifier._structClassName ||
               name == FfiVerifier._unionClassName) &&
@@ -2634,7 +2634,7 @@
   bool get isCompoundSubtype {
     var self = this;
     if (self is InterfaceType) {
-      var superType = self.element3.supertype;
+      var superType = self.element.supertype;
       if (superType != null) {
         return superType.isCompound;
       }
@@ -2645,7 +2645,7 @@
   bool get isHandle {
     var self = this;
     if (self is InterfaceType) {
-      var element = self.element3;
+      var element = self.element;
       return element.name3 == 'Handle' && element.isFfiClass;
     }
     return false;
@@ -2655,7 +2655,7 @@
   bool get isNativeFunction {
     var self = this;
     if (self is InterfaceType) {
-      var element = self.element3;
+      var element = self.element;
       return element.name3 == 'NativeFunction' && element.isFfiClass;
     }
     return false;
@@ -2665,7 +2665,7 @@
   bool get isNativeType {
     var self = this;
     if (self is InterfaceType) {
-      var element = self.element3;
+      var element = self.element;
       return element.name3 == 'NativeType' && element.isFfiClass;
     }
     return false;
@@ -2673,16 +2673,16 @@
 
   bool get isOpaque {
     var self = this;
-    return self is InterfaceType && self.element3.isOpaque;
+    return self is InterfaceType && self.element.isOpaque;
   }
 
   /// Returns `true` iff this is a opaque type, i.e. a subtype of `Opaque`.
   bool get isOpaqueSubtype {
     var self = this;
     if (self is InterfaceType) {
-      var superType = self.element3.supertype;
+      var superType = self.element.supertype;
       if (superType != null) {
-        return superType.element3.isOpaque;
+        return superType.element.isOpaque;
       }
     }
     return false;
@@ -2690,7 +2690,7 @@
 
   bool get isPointer {
     var self = this;
-    return self is InterfaceType && self.element3.isPointer;
+    return self is InterfaceType && self.element.isPointer;
   }
 
   /// Only the subset of typed data classes that correspond to a Pointer.
@@ -2699,10 +2699,10 @@
     if (self is! InterfaceType) {
       return false;
     }
-    if (!self.element3.isTypedDataClass) {
+    if (!self.element.isTypedDataClass) {
       return false;
     }
-    var elementName = self.element3.name3!;
+    var elementName = self.element.name3!;
     if (!elementName.endsWith('List')) {
       return false;
     }
@@ -2719,7 +2719,7 @@
   bool get isVarArgs {
     var self = this;
     if (self is InterfaceType) {
-      var element = self.element3;
+      var element = self.element;
       return element.name3 == 'VarArgs' && element.isFfiClass;
     }
     return false;
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 055c0fe..0d1a681 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -5833,7 +5833,7 @@
 
   factory SwitchExhaustiveness(TypeImpl expressionType) {
     if (expressionType is InterfaceType) {
-      var enum_ = expressionType.element3;
+      var enum_ = expressionType.element;
       if (enum_ is EnumElementImpl) {
         return SwitchExhaustiveness._(
           enum_.constants2.toSet(),
diff --git a/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart b/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart
index f61b7c3..d2a80c1 100644
--- a/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart
+++ b/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart
@@ -228,7 +228,7 @@
         targetType = node.realTarget.staticType;
       }
       if (targetType != null) {
-        var targetElement = targetType.element3;
+        var targetElement = targetType.element;
         return targetElement is ClassElement && targetElement.isDartCoreEnum;
       }
       return false;
diff --git a/pkg/analyzer/lib/src/summary2/bundle_reader.dart b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
index e234b89..ccf0c48 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
@@ -1801,7 +1801,7 @@
         );
       } else if (type is InterfaceTypeImpl) {
         return InterfaceTypeImpl(
-          element: type.element3,
+          element: type.element,
           typeArguments: type.typeArguments,
           nullabilitySuffix: type.nullabilitySuffix,
           alias: InstantiatedTypeAliasElementImpl(
@@ -1821,7 +1821,7 @@
         );
       } else if (type is TypeParameterTypeImpl) {
         return TypeParameterTypeImpl(
-          element3: type.element3,
+          element: type.element,
           nullabilitySuffix: type.nullabilitySuffix,
           alias: InstantiatedTypeAliasElementImpl(
             element2: aliasElement,
diff --git a/pkg/analyzer/lib/src/summary2/bundle_writer.dart b/pkg/analyzer/lib/src/summary2/bundle_writer.dart
index 5a95340..f088db3 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_writer.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_writer.dart
@@ -1017,11 +1017,11 @@
           writeByte(Tag.InterfaceType_noTypeArguments_question);
         }
         // TODO(scheglov): Write raw
-        writeElement(type.element3);
+        writeElement(type.element);
       } else {
         writeByte(Tag.InterfaceType);
         // TODO(scheglov): Write raw
-        writeElement(type.element3);
+        writeElement(type.element);
         writeUInt30(typeArguments.length);
         for (var i = 0; i < typeArguments.length; ++i) {
           writeType(typeArguments[i]);
@@ -1041,7 +1041,7 @@
       _writeTypeAliasElementArguments(type);
     } else if (type is TypeParameterTypeImpl) {
       writeByte(Tag.TypeParameterType);
-      writeElement(type.element3);
+      writeElement(type.element);
       _writeNullabilitySuffix(type.nullabilitySuffix);
       _writeTypeAliasElementArguments(type);
     } else if (type is VoidTypeImpl) {
diff --git a/pkg/analyzer/lib/src/summary2/default_types_builder.dart b/pkg/analyzer/lib/src/summary2/default_types_builder.dart
index ac2a36e..1667444 100644
--- a/pkg/analyzer/lib/src/summary2/default_types_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/default_types_builder.dart
@@ -282,11 +282,11 @@
   ) {
     var paths = <List<_CycleElement>>[];
     if (startType is NamedTypeBuilder) {
-      var declaration = startType.element3;
+      var declaration = startType.element;
       if (startType.arguments.isEmpty) {
-        if (startType.element3 == end) {
+        if (startType.element == end) {
           paths.add([_CycleElement(startParameter, startType)]);
-        } else if (visited.add(startType.element3)) {
+        } else if (visited.add(startType.element)) {
           void recurseParameters(List<TypeParameterElement> parameters) {
             for (var parameter in parameters) {
               var parameterNode = _getTypeParameterNode(
@@ -317,7 +317,7 @@
           } else if (declaration is TypeAliasElement) {
             recurseParameters(declaration.typeParameters2);
           }
-          visited.remove(startType.element3);
+          visited.remove(startType.element);
         }
       } else {
         for (var argument in startType.arguments) {
@@ -421,7 +421,7 @@
         _collectReferencesFrom(index, argument);
       }
     } else if (type is TypeParameterType) {
-      var typeIndex = _parameterToIndex[type.element3];
+      var typeIndex = _parameterToIndex[type.element];
       if (typeIndex != null) {
         _edges[typeIndex].add(index);
       }
@@ -472,9 +472,9 @@
   @override
   TypeImpl? visitTypeParameterType(TypeParameterType type) {
     if (_variance == Variance.contravariant) {
-      return _lower[type.element3];
+      return _lower[type.element];
     } else {
-      return _upper[type.element3];
+      return _upper[type.element];
     }
   }
 }
diff --git a/pkg/analyzer/lib/src/summary2/element_builder.dart b/pkg/analyzer/lib/src/summary2/element_builder.dart
index b899547..4c86d41 100644
--- a/pkg/analyzer/lib/src/summary2/element_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/element_builder.dart
@@ -2196,6 +2196,7 @@
   final List<MethodFragmentImpl> _methods = [];
   final List<MixinFragmentImpl> _mixins = [];
   final List<FormalParameterFragmentImpl> _parameters = [];
+
   // TODO(scheglov): Use getters / setters instead.
   final List<PropertyAccessorFragmentImpl> _propertyAccessors = [];
   final List<TopLevelVariableFragmentImpl> _topLevelVariables = [];
diff --git a/pkg/analyzer/lib/src/summary2/enclosing_type_parameters_flag.dart b/pkg/analyzer/lib/src/summary2/enclosing_type_parameters_flag.dart
index c5f8861..7d7bb74 100644
--- a/pkg/analyzer/lib/src/summary2/enclosing_type_parameters_flag.dart
+++ b/pkg/analyzer/lib/src/summary2/enclosing_type_parameters_flag.dart
@@ -96,7 +96,7 @@
 
   @override
   bool visitTypeParameterType(TypeParameterType type) {
-    if (type.element3.enclosingElement == instanceElement) {
+    if (type.element.enclosingElement == instanceElement) {
       result = true;
     }
     return true;
diff --git a/pkg/analyzer/lib/src/summary2/extension_type.dart b/pkg/analyzer/lib/src/summary2/extension_type.dart
index e7ecd4e..acb56b7 100644
--- a/pkg/analyzer/lib/src/summary2/extension_type.dart
+++ b/pkg/analyzer/lib/src/summary2/extension_type.dart
@@ -51,7 +51,7 @@
 
   @override
   bool visitInterfaceType(InterfaceType type) {
-    var element = type.element3;
+    var element = type.element;
     if (element is ExtensionTypeElementImpl) {
       dependencies.add(element);
     }
@@ -72,7 +72,7 @@
   @override
   List<_ImplementsNode> computeDependencies() {
     return element.interfaces
-        .map((interface) => interface.element3)
+        .map((interface) => interface.element)
         .whereType<ExtensionTypeElementImpl>()
         .map(walker.getNode)
         .toList();
diff --git a/pkg/analyzer/lib/src/summary2/library_builder.dart b/pkg/analyzer/lib/src/summary2/library_builder.dart
index b19ab85..f62d727 100644
--- a/pkg/analyzer/lib/src/summary2/library_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/library_builder.dart
@@ -851,20 +851,20 @@
 
     var supertype = class_.supertype;
     if (supertype != null) {
-      result.add(supertype.element3);
+      result.add(supertype.element);
     }
 
     for (var mixin in class_.mixins) {
-      result.add(mixin.element3);
+      result.add(mixin.element);
     }
 
     if (!ignoreImplements) {
       for (var interface in class_.interfaces) {
-        result.add(interface.element3);
+        result.add(interface.element);
       }
       if (class_ is MixinElementImpl) {
         for (var constraint in class_.superclassConstraints) {
-          result.add(constraint.element3);
+          result.add(constraint.element);
         }
       }
     }
diff --git a/pkg/analyzer/lib/src/summary2/named_type_builder.dart b/pkg/analyzer/lib/src/summary2/named_type_builder.dart
index d9cd0d8..338b8a0 100644
--- a/pkg/analyzer/lib/src/summary2/named_type_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/named_type_builder.dart
@@ -27,7 +27,7 @@
   final TypeSystemImpl typeSystem;
 
   @override
-  final Element element3;
+  final Element element;
 
   final List<TypeImpl> arguments;
 
@@ -48,7 +48,7 @@
   NamedTypeBuilder({
     required this.linker,
     required this.typeSystem,
-    required this.element3,
+    required this.element,
     required this.arguments,
     required this.nullabilitySuffix,
     this.node,
@@ -72,7 +72,7 @@
     return NamedTypeBuilder(
       linker: linker,
       typeSystem: typeSystem,
-      element3: element,
+      element: element,
       arguments: arguments,
       nullabilitySuffix: nullabilitySuffix,
       node: node,
@@ -81,7 +81,7 @@
 
   // TODO(scheglov): Only when enabled both in the element, and target?
   bool get _isNonFunctionTypeAliasesEnabled {
-    return element3.library2!.featureSet.isEnabled(
+    return element.library2!.featureSet.isEnabled(
       Feature.nonfunction_type_aliases,
     );
   }
@@ -102,28 +102,28 @@
       return _type!;
     }
 
-    var element3 = this.element3;
-    if (element3 is InterfaceElementImpl) {
-      var parameters = element3.typeParameters2;
+    var element = this.element;
+    if (element is InterfaceElementImpl) {
+      var parameters = element.typeParameters2;
       var arguments = _buildArguments(parameters);
-      _type = element3.instantiateImpl(
+      _type = element.instantiateImpl(
         typeArguments: arguments,
         nullabilitySuffix: nullabilitySuffix,
       );
-    } else if (element3 is TypeAliasElementImpl) {
-      var aliasedType = _getAliasedType(element3);
-      var parameters = element3.typeParameters2;
+    } else if (element is TypeAliasElementImpl) {
+      var aliasedType = _getAliasedType(element);
+      var parameters = element.typeParameters2;
       var arguments = _buildArguments(parameters);
-      element3.aliasedType = aliasedType;
-      _type = element3.instantiateImpl(
+      element.aliasedType = aliasedType;
+      _type = element.instantiateImpl(
         typeArguments: arguments,
         nullabilitySuffix: nullabilitySuffix,
       );
-    } else if (element3 is NeverElementImpl) {
+    } else if (element is NeverElementImpl) {
       _type = NeverTypeImpl.instance.withNullability(nullabilitySuffix);
-    } else if (element3 is TypeParameterElementImpl) {
+    } else if (element is TypeParameterElementImpl) {
       _type = TypeParameterTypeImpl(
-        element3: element3,
+        element: element,
         nullabilitySuffix: nullabilitySuffix,
       );
     } else {
@@ -137,7 +137,7 @@
   @override
   String toString() {
     var buffer = StringBuffer();
-    buffer.write(element3.displayName);
+    buffer.write(element.displayName);
     if (arguments.isNotEmpty) {
       buffer.write('<');
       buffer.write(arguments.join(', '));
@@ -155,7 +155,7 @@
     return NamedTypeBuilder(
       linker: linker,
       typeSystem: typeSystem,
-      element3: element3,
+      element: element,
       arguments: arguments,
       nullabilitySuffix: nullabilitySuffix,
       node: node,
diff --git a/pkg/analyzer/lib/src/summary2/reference_resolver.dart b/pkg/analyzer/lib/src/summary2/reference_resolver.dart
index 0264732..26dad72 100644
--- a/pkg/analyzer/lib/src/summary2/reference_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/reference_resolver.dart
@@ -466,7 +466,7 @@
       node.type = InvalidTypeImpl.instance;
     } else if (element is TypeParameterElementImpl) {
       node.type = TypeParameterTypeImpl(
-        element3: element,
+        element: element,
         nullabilitySuffix: nullabilitySuffix,
       );
     } else {
diff --git a/pkg/analyzer/lib/src/summary2/types_builder.dart b/pkg/analyzer/lib/src/summary2/types_builder.dart
index a835c6a..3b2d5c1 100644
--- a/pkg/analyzer/lib/src/summary2/types_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/types_builder.dart
@@ -22,7 +22,7 @@
 
 /// Return `true` if [type] can be used as a class.
 bool _isInterfaceTypeClass(InterfaceType type) {
-  if (type.element3 is! ClassElement) {
+  if (type.element is! ClassElement) {
     return false;
   }
   return _isInterfaceTypeInterface(type);
@@ -30,10 +30,10 @@
 
 /// Return `true` if [type] can be used as an interface or a mixin.
 bool _isInterfaceTypeInterface(InterfaceType type) {
-  if (type.element3 is EnumElement) {
+  if (type.element is EnumElement) {
     return false;
   }
-  if (type.element3 is ExtensionTypeElement) {
+  if (type.element is ExtensionTypeElement) {
     return false;
   }
   if (type.isDartCoreFunction || type.isDartCoreNull) {
@@ -497,7 +497,7 @@
     List<InterfaceTypeImpl> interfaceTypes,
   ) {
     for (var interfaceType in interfaceTypes) {
-      if (interfaceType.element3 == element) return interfaceType;
+      if (interfaceType.element == element) return interfaceType;
     }
     return null;
   }
@@ -509,7 +509,7 @@
     var result = <InterfaceTypeImpl>[];
     for (var constraint in constraints) {
       var interfaceType = _findInterfaceTypeForElement(
-        constraint.element3,
+        constraint.element,
         interfaceTypes,
       );
 
diff --git a/pkg/analyzer/lib/src/summary2/variance_builder.dart b/pkg/analyzer/lib/src/summary2/variance_builder.dart
index f4ba5a4..9daafc5 100644
--- a/pkg/analyzer/lib/src/summary2/variance_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/variance_builder.dart
@@ -56,13 +56,13 @@
 
   Variance _compute(TypeParameterElement variable, DartType? type) {
     if (type is TypeParameterType) {
-      if (type.element3 == variable) {
+      if (type.element == variable) {
         return Variance.covariant;
       } else {
         return Variance.unrelated;
       }
     } else if (type is NamedTypeBuilder) {
-      var element = type.element3;
+      var element = type.element;
       var arguments = type.arguments;
       if (element is InterfaceElementImpl) {
         var result = Variance.unrelated;
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 73b9aaa..ab5592f 100644
--- a/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart
+++ b/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart
@@ -1292,7 +1292,7 @@
 
   TypeParameterTypeImpl _typeParameterType(TypeParameterElementImpl element) {
     return TypeParameterTypeImpl(
-      element3: element,
+      element: element,
       nullabilitySuffix: NullabilitySuffix.none,
     );
   }
diff --git a/pkg/analyzer/lib/src/utilities/extensions/ast.dart b/pkg/analyzer/lib/src/utilities/extensions/ast.dart
index 76f005d..b2cae64 100644
--- a/pkg/analyzer/lib/src/utilities/extensions/ast.dart
+++ b/pkg/analyzer/lib/src/utilities/extensions/ast.dart
@@ -161,7 +161,7 @@
 
 extension ExtensionElementExtension on ExtensionElement {
   InterfaceElement? get extendedInterfaceElement =>
-      extendedType.ifTypeOrNull<InterfaceType>()?.element3;
+      extendedType.ifTypeOrNull<InterfaceType>()?.element;
 }
 
 extension VariableDeclarationExtension on VariableDeclaration {
diff --git a/pkg/analyzer/lib/src/utilities/extensions/element.dart b/pkg/analyzer/lib/src/utilities/extensions/element.dart
index a2cd52b..0f1b08b 100644
--- a/pkg/analyzer/lib/src/utilities/extensions/element.dart
+++ b/pkg/analyzer/lib/src/utilities/extensions/element.dart
@@ -369,7 +369,7 @@
 }
 
 extension InterfaceTypeImplExtension on InterfaceTypeImpl {
-  InterfaceFragmentImpl get elementImpl => element3.firstFragment;
+  InterfaceFragmentImpl get elementImpl => element.firstFragment;
 }
 
 extension JoinPatternVariableElementImplExtension
diff --git a/pkg/analyzer/lib/src/utilities/extensions/flutter.dart b/pkg/analyzer/lib/src/utilities/extensions/flutter.dart
index 713977d..4a13ca5 100644
--- a/pkg/analyzer/lib/src/utilities/extensions/flutter.dart
+++ b/pkg/analyzer/lib/src/utilities/extensions/flutter.dart
@@ -176,7 +176,7 @@
     var self = this;
     return self is InterfaceType &&
         self.nullabilitySuffix == NullabilitySuffix.none &&
-        self.element3._isExactly(_nameBuildContext, _uriFramework);
+        self.element._isExactly(_nameBuildContext, _uriFramework);
   }
 
   /// Whether this is the 'dart.ui' class `Color`, or a subtype.
@@ -186,9 +186,9 @@
       return false;
     }
 
-    return [self, ...self.element3.allSupertypes].any(
+    return [self, ...self.element.allSupertypes].any(
       (t) =>
-          t.element3.name3 == 'Color' && t.element3.library2.name3 == 'dart.ui',
+          t.element.name3 == 'Color' && t.element.library2.name3 == 'dart.ui',
     );
   }
 
@@ -199,10 +199,10 @@
       return false;
     }
 
-    return [self, ...self.element3.allSupertypes].any(
+    return [self, ...self.element.allSupertypes].any(
       (t) =>
-          t.element3.name3 == 'Diagnosticable' &&
-          t.element3.library2.firstFragment.source.uri == _uriDiagnostics,
+          t.element.name3 == 'Diagnosticable' &&
+          t.element.library2.firstFragment.source.uri == _uriDiagnostics,
     );
   }
 
@@ -210,77 +210,77 @@
   bool get isExactEdgeInsetsGeometryType {
     var self = this;
     return self is InterfaceType &&
-        self.element3._isExactly('EdgeInsetsGeometry', _uriEdgeInsets);
+        self.element._isExactly('EdgeInsetsGeometry', _uriEdgeInsets);
   }
 
   /// Whether this is the Flutter class `StatefulWidget`.
   bool get isExactlyStatefulWidgetType {
     var self = this;
     return self is InterfaceType &&
-        self.element3._isExactly(_nameStatefulWidget, _uriFramework);
+        self.element._isExactly(_nameStatefulWidget, _uriFramework);
   }
 
   /// Whether this is the Flutter class `StatelessWidget`.
   bool get isExactlyStatelessWidgetType {
     var self = this;
     return self is InterfaceType &&
-        self.element3._isExactly(_nameStatelessWidget, _uriFramework);
+        self.element._isExactly(_nameStatelessWidget, _uriFramework);
   }
 
   /// Whether this is the Flutter class `Align`.
   bool get isExactWidgetTypeAlign {
     var self = this;
     return self is InterfaceType &&
-        self.element3._isExactly(_nameAlign, _uriBasic);
+        self.element._isExactly(_nameAlign, _uriBasic);
   }
 
   /// Whether this is the Flutter class `Builder`.
   bool get isExactWidgetTypeBuilder {
     var self = this;
     return self is InterfaceType &&
-        self.element3._isExactly(_nameBuilder, _uriBasic);
+        self.element._isExactly(_nameBuilder, _uriBasic);
   }
 
   /// Whether this is the Flutter class `Center`.
   bool get isExactWidgetTypeCenter {
     var self = this;
     return self is InterfaceType &&
-        self.element3._isExactly(_nameCenter, _uriBasic);
+        self.element._isExactly(_nameCenter, _uriBasic);
   }
 
   /// Whether this is the Flutter class `Container`.
   bool get isExactWidgetTypeContainer {
     var self = this;
     return self is InterfaceType &&
-        self.element3._isExactly(_nameContainer, _uriContainer);
+        self.element._isExactly(_nameContainer, _uriContainer);
   }
 
   /// Whether this is the Flutter class `Expanded`.
   bool get isExactWidgetTypeExpanded {
     var self = this;
     return self is InterfaceType &&
-        self.element3._isExactly(_nameExpanded, _uriBasic);
+        self.element._isExactly(_nameExpanded, _uriBasic);
   }
 
   /// Whether this is the Flutter class `Flexible`.
   bool get isExactWidgetTypeFlexible {
     var self = this;
     return self is InterfaceType &&
-        self.element3._isExactly(_nameFlexible, _uriBasic);
+        self.element._isExactly(_nameFlexible, _uriBasic);
   }
 
   /// Whether this is the Flutter class `Padding`.
   bool get isExactWidgetTypePadding {
     var self = this;
     return self is InterfaceType &&
-        self.element3._isExactly(_namePadding, _uriBasic);
+        self.element._isExactly(_namePadding, _uriBasic);
   }
 
   /// Whether this is the Flutter class `SizedBox`.
   bool get isExactWidgetTypeSizedBox {
     var self = this;
     return self is InterfaceType &&
-        self.element3._isExactly(_nameSizedBox, _uriBasic);
+        self.element._isExactly(_nameSizedBox, _uriBasic);
   }
 
   /// Whether this is the Flutter class `Widget`, or its subtype.
@@ -299,10 +299,10 @@
       return false;
     }
 
-    return [self, ...self.element3.allSupertypes].any(
+    return [self, ...self.element.allSupertypes].any(
       (t) =>
-          t.element3.name3 == 'Matrix4' &&
-          t.element3.library2.name3 == 'vector_math_64',
+          t.element.name3 == 'Matrix4' &&
+          t.element.library2.name3 == 'vector_math_64',
     );
   }
 
@@ -319,7 +319,7 @@
   /// Whether this is the Flutter class `Widget`, or its subtype.
   bool get isWidgetType {
     var self = this;
-    return self is InterfaceType && self.element3.isWidget;
+    return self is InterfaceType && self.element.isWidget;
   }
 }
 
@@ -459,7 +459,7 @@
       return true;
     }
     return self.allSupertypes.any(
-      (type) => type.element3._isExactly(_nameFlex, _uriBasic),
+      (type) => type.element._isExactly(_nameFlex, _uriBasic),
     );
   }
 }
@@ -490,7 +490,7 @@
       return true;
     }
     return self.allSupertypes.any(
-      (type) => type.element3._isExactly(_nameWidget, _uriFramework),
+      (type) => type.element._isExactly(_nameWidget, _uriFramework),
     );
   }
 
@@ -502,8 +502,8 @@
       return false;
     }
     for (var type in self.allSupertypes) {
-      if (type.element3.name3 == requiredName) {
-        var uri = type.element3.library2.firstFragment.source.uri;
+      if (type.element.name3 == requiredName) {
+        var uri = type.element.library2.firstFragment.source.uri;
         if (uri == requiredUri) {
           return true;
         }
diff --git a/pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart b/pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart
index ea0e8f7..a4c5f91 100644
--- a/pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart
+++ b/pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart
@@ -212,7 +212,7 @@
 
   MethodElement lookupToString(DartType? type) {
     var class_ =
-        type is InterfaceType ? type.element3 : typeProvider.objectElement2;
+        type is InterfaceType ? type.element : typeProvider.objectElement2;
     return inheritanceManager.getMember(
           class_,
           Name.forLibrary(coreLibrary, 'toString'),
diff --git a/pkg/analyzer/test/error/error_reporter_test.dart b/pkg/analyzer/test/error/error_reporter_test.dart
index 7e34f14..63a7c32 100644
--- a/pkg/analyzer/test/error/error_reporter_test.dart
+++ b/pkg/analyzer/test/error/error_reporter_test.dart
@@ -90,7 +90,7 @@
 
     var reporter = DiagnosticReporter(
       listener,
-      firstType.element3.firstFragment.libraryFragment.source,
+      firstType.element.firstFragment.libraryFragment.source,
     );
 
     reporter.atNode(
@@ -132,7 +132,7 @@
 
     var reporter = DiagnosticReporter(
       listener,
-      firstType.element3.firstFragment.libraryFragment.source,
+      firstType.element.firstFragment.libraryFragment.source,
     );
     reporter.atNode(
       findNode.simple('x'),
diff --git a/pkg/analyzer/test/generated/elements_types_mixin.dart b/pkg/analyzer/test/generated/elements_types_mixin.dart
index 37e1bb1..d8ff2b2 100644
--- a/pkg/analyzer/test/generated/elements_types_mixin.dart
+++ b/pkg/analyzer/test/generated/elements_types_mixin.dart
@@ -556,7 +556,7 @@
     required TypeImpl promotedBound,
   }) {
     return TypeParameterTypeImpl(
-      element3: element,
+      element: element,
       nullabilitySuffix: nullabilitySuffix,
       promotedBound: promotedBound,
     );
@@ -685,7 +685,7 @@
     TypeImpl? promotedBound,
   }) {
     return TypeParameterTypeImpl(
-      element3: 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 2e1168d..7d0b3d9 100644
--- a/pkg/analyzer/test/generated/strong_mode_test.dart
+++ b/pkg/analyzer/test/generated/strong_mode_test.dart
@@ -414,7 +414,7 @@
     ClassElement elementA =
         AstFinder.getClass(unit, "A").declaredFragment!.element;
     var type = exp.constructorName.type.typeOrThrow as InterfaceType;
-    expect(type.element3, elementB);
+    expect(type.element, elementB);
     _isInstantiationOf(_hasElement(elementB))([
       _isType(
         elementA.typeParameters2[0].instantiate(
diff --git a/pkg/analyzer/test/generated/type_system_test.dart b/pkg/analyzer/test/generated/type_system_test.dart
index bf9855a..a9f3303 100644
--- a/pkg/analyzer/test/generated/type_system_test.dart
+++ b/pkg/analyzer/test/generated/type_system_test.dart
@@ -71,7 +71,7 @@
       NullabilitySuffix nullability,
       DartType promotedBound,
     ) {
-      expect(type.element3, 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 978568e..7ec7b1b 100644
--- a/pkg/analyzer/test/id_tests/inheritance_test.dart
+++ b/pkg/analyzer/test/id_tests/inheritance_test.dart
@@ -35,7 +35,7 @@
 
 String supertypeToString(InterfaceType type) {
   var sb = StringBuffer();
-  sb.write(type.element3.name3);
+  sb.write(type.element.name3);
   if (type.typeArguments.isNotEmpty) {
     sb.write('<');
     var comma = '';
diff --git a/pkg/analyzer/test/src/dart/analysis/index_test.dart b/pkg/analyzer/test/src/dart/analysis/index_test.dart
index b882549..5be7c14 100644
--- a/pkg/analyzer/test/src/dart/analysis/index_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/index_test.dart
@@ -214,7 +214,7 @@
 class A {}
 ''');
     var elementA = findElement2.class_('A');
-    var elementObject = elementA.supertype!.element3;
+    var elementObject = elementA.supertype!.element;
     assertElementIndexText(elementObject, r'''
 6 1:7 |A| IS_ANCESTOR_OF
 6 1:7 || IS_EXTENDED_BY qualified
@@ -1001,7 +1001,7 @@
 /// An [A].
 void f(A a) {}
 ''');
-    var element = findElement2.function('f').formalParameters[0].type.element3!;
+    var element = findElement2.function('f').formalParameters[0].type.element!;
     assertElementIndexText(element, r'''
 28 3:9 |A| IS_REFERENCED_BY
 39 4:8 |A| IS_REFERENCED_BY
@@ -1019,7 +1019,7 @@
 /// A [p.A] and [A].
 void f(p.A a) {}
 ''');
-    var element = findElement2.function('f').formalParameters[0].type.element3!;
+    var element = findElement2.function('f').formalParameters[0].type.element!;
     assertElementIndexText(element, r'''
 53 4:10 |A| IS_REFERENCED_BY qualified
 61 4:18 |A| IS_REFERENCED_BY
@@ -1038,7 +1038,7 @@
 /// A [p.A].
 void f(p.A a) {}
 ''');
-    var element = findElement2.function('f').formalParameters[0].type.element3!;
+    var element = findElement2.function('f').formalParameters[0].type.element!;
     assertElementIndexText(element, r'''
 34 3:10 |A| IS_REFERENCED_BY qualified
 47 4:10 |A| IS_REFERENCED_BY qualified
@@ -1474,7 +1474,7 @@
   f(E.c);
 }
 ''');
-    var element = findElement2.function('f').formalParameters[0].type.element3!;
+    var element = findElement2.function('f').formalParameters[0].type.element!;
     assertElementIndexText(element, r'''
 27 3:8 |E| IS_REFERENCED_BY
 38 4:5 |E| IS_REFERENCED_BY
@@ -1495,7 +1495,7 @@
   f(E.c);
 }
 ''');
-    var element = findElement2.function('f').formalParameters[0].type.element3!;
+    var element = findElement2.function('f').formalParameters[0].type.element!;
     assertElementIndexText(element, r'''
 53 4:10 |E| IS_REFERENCED_BY qualified
 64 5:5 |E| IS_REFERENCED_BY
@@ -1517,7 +1517,7 @@
   f(q.E.c);
 }
 ''');
-    var element = findElement2.function('f').formalParameters[0].type.element3!;
+    var element = findElement2.function('f').formalParameters[0].type.element!;
     assertElementIndexText(element, r'''
 58 4:10 |E| IS_REFERENCED_BY qualified
 71 5:7 |E| IS_REFERENCED_BY qualified
@@ -1538,7 +1538,7 @@
   f(p.E.c);
 }
 ''');
-    var element = findElement2.function('f').formalParameters[0].type.element3!;
+    var element = findElement2.function('f').formalParameters[0].type.element!;
     assertElementIndexText(element, r'''
 34 3:10 |E| IS_REFERENCED_BY qualified
 47 4:7 |E| IS_REFERENCED_BY qualified
@@ -1940,7 +1940,7 @@
 
 class B extends p.A {}
 ''');
-    var element = findElement2.class_('B').supertype!.element3;
+    var element = findElement2.class_('B').supertype!.element;
     assertElementIndexText(element, r'''
 38 3:14 |A| IS_REFERENCED_BY qualified
 50 5:7 |B| IS_ANCESTOR_OF
@@ -2033,7 +2033,7 @@
 
 class B extends p.A {}
 ''');
-    var element = findElement2.class_('B').supertype!.element3;
+    var element = findElement2.class_('B').supertype!.element;
     assertElementIndexText(element, r'''
 39 3:15 |A| IS_REFERENCED_BY qualified
 53 5:7 |B| IS_ANCESTOR_OF
@@ -2333,7 +2333,7 @@
 
 class B extends p.A {}
 ''');
-    var element = findElement2.class_('B').supertype!.element3;
+    var element = findElement2.class_('B').supertype!.element;
     assertElementIndexText(element, r'''
 44 3:20 |A| IS_REFERENCED_BY qualified
 60 5:7 |B| IS_ANCESTOR_OF
@@ -2355,7 +2355,7 @@
 
 class B extends p.A {}
 ''');
-    var element = findElement2.class_('B').supertype!.element3;
+    var element = findElement2.class_('B').supertype!.element;
     assertElementIndexText(element, r'''
 52 4:9 |A| IS_REFERENCED_BY
 62 6:7 |B| IS_ANCESTOR_OF
@@ -2376,7 +2376,7 @@
 
 class B extends p.A {}
 ''');
-    var element = findElement2.class_('B').supertype!.element3;
+    var element = findElement2.class_('B').supertype!.element;
     assertElementIndexText(element, r'''
 35 3:11 |A| IS_REFERENCED_BY qualified
 45 5:7 |B| IS_ANCESTOR_OF
diff --git a/pkg/analyzer/test/src/dart/analysis/session_test.dart b/pkg/analyzer/test/src/dart/analysis/session_test.dart
index 591d79f..7d1cb10 100644
--- a/pkg/analyzer/test/src/dart/analysis/session_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/session_test.dart
@@ -332,7 +332,7 @@
     var resolvedUnit =
         await session.getResolvedUnit(testFile.path) as ResolvedUnitResult;
     var typeProvider = resolvedUnit.typeProvider;
-    var intClass = typeProvider.intType.element3;
+    var intClass = typeProvider.intType.element;
 
     var parsedLibrary = session.getParsedLibraryValid(testFile);
 
@@ -555,7 +555,7 @@
     expect(resolvedLibrary.session, session);
 
     var typeProvider = resolvedLibrary.typeProvider;
-    expect(typeProvider.intType.element3.name3, 'int');
+    expect(typeProvider.intType.element.name3, 'int');
 
     var libraryElement = resolvedLibrary.element2;
 
@@ -605,7 +605,7 @@
     var resolvedLibrary = await session.getResolvedLibraryValid(testFile);
 
     expect(() {
-      var intClass = resolvedLibrary.typeProvider.intType.element3;
+      var intClass = resolvedLibrary.typeProvider.intType.element;
       resolvedLibrary.getFragmentDeclaration(intClass.firstFragment);
     }, throwsArgumentError);
   }
diff --git a/pkg/analyzer/test/src/dart/element/element_test.dart b/pkg/analyzer/test/src/dart/element/element_test.dart
index c7ef519..d36d26a7 100644
--- a/pkg/analyzer/test/src/dart/element/element_test.dart
+++ b/pkg/analyzer/test/src/dart/element/element_test.dart
@@ -533,7 +533,7 @@
   void test_getElement() {
     var element = typeParameter('E');
     TypeParameterTypeImpl type = typeParameterTypeNone(element);
-    expect(type.element3, element);
+    expect(type.element, element);
   }
 
   void _assert_asInstanceOf(
diff --git a/pkg/analyzer/test/src/dart/element/function_type_test.dart b/pkg/analyzer/test/src/dart/element/function_type_test.dart
index ce4c4a8..6b56071 100644
--- a/pkg/analyzer/test/src/dart/element/function_type_test.dart
+++ b/pkg/analyzer/test/src/dart/element/function_type_test.dart
@@ -429,14 +429,14 @@
           requiredParameter(
             name: 'x',
             type: TypeParameterTypeImpl(
-              element3: t.element,
+              element: t.element,
               nullabilitySuffix: NullabilitySuffix.none,
             ),
           ),
           requiredParameter(
             name: 'y',
             type: TypeParameterTypeImpl(
-              element3: t.element,
+              element: t.element,
               nullabilitySuffix: NullabilitySuffix.none,
             ),
           ),
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 66e05d7..0a9749b 100644
--- a/pkg/analyzer/test/src/dart/element/generic_inferrer_test.dart
+++ b/pkg/analyzer/test/src/dart/element/generic_inferrer_test.dart
@@ -205,7 +205,7 @@
 
     var inferredTypes = _inferCall(rawType, [S_and_int]);
     var inferredType = inferredTypes[0] as TypeParameterTypeImpl;
-    expect(inferredType.element3, 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 f13b6ff..653e276 100644
--- a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
+++ b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
@@ -964,12 +964,12 @@
     var foo = manager.getMember(B, Name(null, 'foo'))!;
     var T = foo.typeParameters2.single;
     var returnType = foo.returnType;
-    expect(returnType.element3, same(T));
+    expect(returnType.element, same(T));
   }
 
   test_getMember_fromGenericSuper_method_bound() async {
     void checkTextendsFooT(TypeParameterElement t) {
-      var otherT = (t.bound as InterfaceType).typeArguments.single.element3;
+      var otherT = (t.bound as InterfaceType).typeArguments.single.element;
       expect(otherT, same(t));
     }
 
@@ -998,7 +998,7 @@
 
   test_getMember_fromGenericSuper_method_bound2() async {
     void checkTextendsFooT(TypeParameterElement t) {
-      var otherT = (t.bound as InterfaceType).typeArguments.single.element3;
+      var otherT = (t.bound as InterfaceType).typeArguments.single.element;
       expect(otherT, same(t));
     }
 
@@ -1040,7 +1040,7 @@
     var T = foo.typeParameters2.single;
     var returnType = foo.returnType;
     // Check that the return type uses the same `T` as `<T>`.
-    expect(returnType.element3, same(T));
+    expect(returnType.element, same(T));
   }
 
   test_getMember_fromNotGenericSuper_method_returnType() async {
@@ -1055,7 +1055,7 @@
     var foo = manager.getMember(B, Name(null, 'foo'))!;
     var T = foo.typeParameters2.single;
     var returnType = foo.returnType;
-    expect(returnType.element3, same(T));
+    expect(returnType.element, same(T));
   }
 
   test_getMember_method_covariantAfterSubstitutedParameter_merged() async {
@@ -1438,7 +1438,7 @@
 class A {}
 ''');
     var member = manager.getMember(
-      typeProvider.objectType.element3,
+      typeProvider.objectType.element,
       Name(null, 'hashCode'),
       forSuper: true,
     );
diff --git a/pkg/analyzer/test/src/dart/element/nullable_test.dart b/pkg/analyzer/test/src/dart/element/nullable_test.dart
index dfde08e..e358446 100644
--- a/pkg/analyzer/test/src/dart/element/nullable_test.dart
+++ b/pkg/analyzer/test/src/dart/element/nullable_test.dart
@@ -587,7 +587,7 @@
     required TypeImpl? promotedBound,
   }) {
     var actual = typeSystem.promoteToNonNull(type) as TypeParameterTypeImpl;
-    expect(actual.element3, 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 1008fa6..ef4e025 100644
--- a/pkg/analyzer/test/src/dart/element/string_types.dart
+++ b/pkg/analyzer/test/src/dart/element/string_types.dart
@@ -453,8 +453,8 @@
 
   @override
   void visitTypeParameterType(TypeParameterType type) {
-    if (!functionTypeParameters.contains(type.element3)) {
-      var bound = type.element3.bound;
+    if (!functionTypeParameters.contains(type.element)) {
+      var bound = type.element.bound;
 
       if (bound == null) {
         return;
@@ -463,7 +463,7 @@
       var str = '';
 
       var boundStr = bound.getDisplayString();
-      str += '${type.element3.name3} extends $boundStr';
+      str += '${type.element.name3} 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 49fe498..d6b5aa7 100644
--- a/pkg/analyzer/test/src/dart/element/type_algebra_test.dart
+++ b/pkg/analyzer/test/src/dart/element/type_algebra_test.dart
@@ -222,8 +222,8 @@
     var T2 = result.typeParameters[0];
     var U2 = result.typeParameters[1];
     var T2boundArgs = (T2.bound as InterfaceType).typeArguments;
-    expect((T2boundArgs[0] as TypeParameterType).element3, same(T2));
-    expect((T2boundArgs[1] as TypeParameterType).element3, same(U2));
+    expect((T2boundArgs[0] as TypeParameterType).element, same(T2));
+    expect((T2boundArgs[1] as TypeParameterType).element, same(U2));
   }
 
   test_interface_arguments() async {
diff --git a/pkg/analyzer/test/src/dart/resolution/resolution.dart b/pkg/analyzer/test/src/dart/resolution/resolution.dart
index 4d9079e..74be0a0 100644
--- a/pkg/analyzer/test/src/dart/resolution/resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/resolution.dart
@@ -58,7 +58,7 @@
   InterfaceType get doubleType => typeProvider.doubleType;
 
   Element get dynamicElement =>
-      (typeProvider.dynamicType as DynamicTypeImpl).element3;
+      (typeProvider.dynamicType as DynamicTypeImpl).element;
 
   FeatureSet get featureSet => result.libraryElement2.featureSet;
 
diff --git a/pkg/analyzer/test/src/summary/element_text.dart b/pkg/analyzer/test/src/summary/element_text.dart
index afc3a7d..c09a1ef 100644
--- a/pkg/analyzer/test/src/summary/element_text.dart
+++ b/pkg/analyzer/test/src/summary/element_text.dart
@@ -1106,7 +1106,7 @@
 
       void writeSupertype(InterfaceElement e) {
         if (e.supertype case var supertype?) {
-          if (supertype.element3.name3 != 'Object' || e.mixins.isNotEmpty) {
+          if (supertype.element.name3 != 'Object' || e.mixins.isNotEmpty) {
             _writeType('supertype', supertype);
           }
         }
@@ -1148,7 +1148,7 @@
       }
 
       if (configuration.withAllSupertypes && e is InterfaceElementImpl) {
-        var sorted = e.allSupertypes.sortedBy((t) => t.element3.name3!);
+        var sorted = e.allSupertypes.sortedBy((t) => t.element.name3!);
         _elementPrinter.writeTypeList('allSupertypes', sorted);
       }
 
diff --git a/pkg/analyzer/test/src/summary/elements/library_export_test.dart b/pkg/analyzer/test/src/summary/elements/library_export_test.dart
index 9024cc6..b013759 100644
--- a/pkg/analyzer/test/src/summary/elements/library_export_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/library_export_test.dart
@@ -548,7 +548,7 @@
 ''');
 
     var typeA = library.getClass2('B')!.supertype!;
-    var fragmentA = typeA.element3.firstFragment;
+    var fragmentA = typeA.element.firstFragment;
     var sourceA = fragmentA.libraryFragment.source;
     expect(sourceA.shortName, 'foo.dart');
   }
@@ -598,7 +598,7 @@
 ''');
 
     var typeA = library.getClass2('B')!.supertype!;
-    var fragmentA = typeA.element3.firstFragment;
+    var fragmentA = typeA.element.firstFragment;
     var sourceA = fragmentA.libraryFragment.source;
     expect(sourceA.shortName, 'foo_io.dart');
   }
@@ -648,7 +648,7 @@
 ''');
 
     var typeA = library.getClass2('B')!.supertype!;
-    var fragmentA = typeA.element3.firstFragment;
+    var fragmentA = typeA.element.firstFragment;
     var sourceA = fragmentA.libraryFragment.source;
     expect(sourceA.shortName, 'foo_html.dart');
   }
diff --git a/pkg/analyzer/test/src/summary/elements/library_import_test.dart b/pkg/analyzer/test/src/summary/elements/library_import_test.dart
index 6cc164d..1dbdad1 100644
--- a/pkg/analyzer/test/src/summary/elements/library_import_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/library_import_test.dart
@@ -58,7 +58,7 @@
 ''');
 
     var typeA = library.getClass2('B')!.supertype!;
-    var fragmentA = typeA.element3.firstFragment;
+    var fragmentA = typeA.element.firstFragment;
     var sourceA = fragmentA.libraryFragment.source;
     expect(sourceA.shortName, 'foo.dart');
   }
@@ -106,7 +106,7 @@
 ''');
 
     var typeA = library.getClass2('B')!.supertype!;
-    var fragmentA = typeA.element3.firstFragment;
+    var fragmentA = typeA.element.firstFragment;
     var sourceA = fragmentA.libraryFragment.source;
     expect(sourceA.shortName, 'foo_io.dart');
   }
@@ -154,7 +154,7 @@
 ''');
 
     var typeA = library.getClass2('B')!.supertype!;
-    var fragmentA = typeA.element3.firstFragment;
+    var fragmentA = typeA.element.firstFragment;
     var sourceA = fragmentA.libraryFragment.source;
     expect(sourceA.shortName, 'foo_io.dart');
   }
@@ -202,7 +202,7 @@
 ''');
 
     var typeA = library.getClass2('B')!.supertype!;
-    var fragmentA = typeA.element3.firstFragment;
+    var fragmentA = typeA.element.firstFragment;
     var sourceA = fragmentA.libraryFragment.source;
     expect(sourceA.shortName, 'foo_html.dart');
   }
@@ -250,7 +250,7 @@
 ''');
 
     var typeA = library.getClass2('B')!.supertype!;
-    var fragmentA = typeA.element3.firstFragment;
+    var fragmentA = typeA.element.firstFragment;
     var sourceA = fragmentA.libraryFragment.source;
     expect(sourceA.shortName, 'foo_html.dart');
   }
diff --git a/pkg/analyzer/test/src/summary/elements/type_inference_test.dart b/pkg/analyzer/test/src/summary/elements/type_inference_test.dart
index 334f0d1..c9951f9 100644
--- a/pkg/analyzer/test/src/summary/elements/type_inference_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/type_inference_test.dart
@@ -2952,7 +2952,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.
-    var streamElement = (p.type as InterfaceType).element3;
+    var streamElement = (p.type as InterfaceType).element;
     expect(
       streamElement.firstFragment.libraryFragment.source,
       isNot(streamElement.library2.firstFragment.source),
diff --git a/pkg/analyzer/test/util/element_printer.dart b/pkg/analyzer/test/util/element_printer.dart
index dd80299..711f494 100644
--- a/pkg/analyzer/test/util/element_printer.dart
+++ b/pkg/analyzer/test/util/element_printer.dart
@@ -226,7 +226,7 @@
       if (type is InterfaceType) {
         if (_configuration.withInterfaceTypeElements) {
           _sink.withIndent(() {
-            writeNamedElement2('element', type.element3);
+            writeNamedElement2('element', type.element);
           });
         }
       }
diff --git a/pkg/analyzer/test/utils.dart b/pkg/analyzer/test/utils.dart
index 55e2984..bbfac5f7 100644
--- a/pkg/analyzer/test/utils.dart
+++ b/pkg/analyzer/test/utils.dart
@@ -172,7 +172,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).element3);
+      (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/tool/generators/ast_generator.dart b/pkg/analyzer/tool/generators/ast_generator.dart
index 05889fd..892f691 100644
--- a/pkg/analyzer/tool/generators/ast_generator.dart
+++ b/pkg/analyzer/tool/generators/ast_generator.dart
@@ -55,7 +55,7 @@
             .map((annotation) {
               var generateObject = annotation.computeConstantValue();
               var generateObjectType = generateObject?.type;
-              if (generateObjectType?.element3?.name3 != 'GenerateNodeImpl') {
+              if (generateObjectType?.element?.name3 != 'GenerateNodeImpl') {
                 return null;
               }
               return generateObject;
@@ -77,7 +77,7 @@
     }
 
     currentClassElement = classElement;
-    var interfaceElement = classElement.interfaces.last.element3;
+    var interfaceElement = classElement.interfaces.last.element;
 
     var inheritanceManager = classElement.inheritanceManager;
 
@@ -814,14 +814,14 @@
   bool get isAnnotatedNodeSubclass {
     var element = node.declaredFragment!.element;
     return element.allSupertypes.any(
-      (type) => type.element3.isAnnotatedNodeExactly,
+      (type) => type.element.isAnnotatedNodeExactly,
     );
   }
 
   bool get isNamedCompilationUnitMemberSubclass {
     var element = node.declaredFragment!.element;
     return element.allSupertypes.any(
-      (type) => type.element3.isNamedCompilationUnitMemberNodeExactly,
+      (type) => type.element.isNamedCompilationUnitMemberNodeExactly,
     );
   }
 
@@ -864,7 +864,7 @@
       case _PropertyTypeKindOther():
         return type.asCode;
       default:
-        return '${type.element3.name3!}Impl$nullSuffix';
+        return '${type.element.name3!}Impl$nullSuffix';
     }
   }
 }
@@ -899,7 +899,7 @@
   _PropertyTypeKindNodeList({required this.elementType});
 
   String get elementTypeCode {
-    return '${elementType.element3.name3!}Impl';
+    return '${elementType.element.name3!}Impl';
   }
 }
 
@@ -929,13 +929,13 @@
       case InterfaceType self:
         var typeArguments = self.typeArguments;
         if (typeArguments.isEmpty) {
-          return '${self.element3.name3!}$nullSuffix';
+          return '${self.element.name3!}$nullSuffix';
         } else {
           var typeArgumentsStr = typeArguments.map((t) => t.asCode).join(', ');
-          return '${self.element3.name3}<$typeArgumentsStr>$nullSuffix';
+          return '${self.element.name3}<$typeArgumentsStr>$nullSuffix';
         }
       case TypeParameterType self:
-        return '${self.element3.name3!}$nullSuffix';
+        return '${self.element.name3!}$nullSuffix';
       case VoidType():
         return 'void';
       default:
@@ -1028,15 +1028,15 @@
 
 extension _InterfaceTypeExtension on InterfaceType {
   bool get isExpressionExactly {
-    return element3.isExpressionExactly;
+    return element.isExpressionExactly;
   }
 
   bool get isNodeExactly {
-    return element3.isNodeExactly;
+    return element.isNodeExactly;
   }
 
   bool get isNodeListExactly {
-    return element3.isNodeListExactly;
+    return element.isNodeListExactly;
   }
 
   bool get isNodeOrSubtype {
@@ -1044,11 +1044,11 @@
   }
 
   bool get isToken {
-    return element3.isTokenExactly;
+    return element.isTokenExactly;
   }
 
   bool get isTokenListExactly {
-    return element3.isListExactly &&
+    return element.isListExactly &&
         typeArguments.length == 1 &&
         typeArguments.single.isToken;
   }
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 2ae71d2..20e6167 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
@@ -1140,7 +1140,7 @@
       } else if (expectedType.isDartCoreString) {
         _addSingleCharacterName(excluded, res, $s);
       } else if (expectedType is InterfaceType) {
-        var className = expectedType.element3.name3;
+        var className = expectedType.element.name3;
         _addAll(excluded, res, _getCamelWordCombinations(className));
       }
     }
@@ -1155,7 +1155,7 @@
   DartType? _getVisibleType(DartType? type,
       {ExecutableElement? methodBeingCopied}) {
     if (type is InterfaceType) {
-      var element = type.element3;
+      var element = type.element;
       if (element.isPrivate &&
           !_dartFileEditBuilder._isDefinedLocally(element)) {
         return null;
@@ -1164,7 +1164,7 @@
     }
     if (type is TypeParameterType) {
       _initializeEnclosingElements();
-      var element = type.element3;
+      var element = type.element;
       var enclosing = element.enclosingElement;
       while (enclosing is GenericFunctionTypeElement ||
           enclosing is FormalParameterElement) {
@@ -1308,7 +1308,7 @@
 
     if (type is InterfaceType) {
       _writeTypeElementArguments(
-        element: type.element3,
+        element: type.element,
         typeArguments: type.typeArguments,
         methodBeingCopied: methodBeingCopied,
       );
@@ -1323,7 +1323,7 @@
     }
 
     if (type is TypeParameterType) {
-      write(type.element3.name3!);
+      write(type.element.name3!);
       _writeTypeNullability(type);
       return true;
     }
diff --git a/pkg/analyzer_plugin/lib/src/utilities/navigation/navigation_dart.dart b/pkg/analyzer_plugin/lib/src/utilities/navigation/navigation_dart.dart
index 523ac60..4bb438a 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/navigation/navigation_dart.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/navigation/navigation_dart.dart
@@ -366,7 +366,7 @@
       if (token != null && token.keyword == Keyword.VAR) {
         var inferredType = node.declaredFragment?.element.type;
         if (inferredType is InterfaceType) {
-          computer._addRegionForElement(token, inferredType.element3);
+          computer._addRegionForElement(token, inferredType.element);
         }
       }
     }
@@ -656,13 +656,13 @@
         return null;
       }
 
-      var firstElement = firstType.element3;
+      var firstElement = firstType.element;
       for (var i = 1; i < variables.length; i++) {
         var type = variables[i].declaredFragment?.element.type;
         if (type is! InterfaceType) {
           return null;
         }
-        if (type.element3 != firstElement) {
+        if (type.element != firstElement) {
           return null;
         }
       }
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 1301bb9..2379f92 100644
--- a/pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart
+++ b/pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart
@@ -424,7 +424,7 @@
     var typesToVisit = <InterfaceType>[type];
     while (typesToVisit.isNotEmpty) {
       var nextType = typesToVisit.removeLast();
-      if (!classesSeen.add(nextType.element3)) {
+      if (!classesSeen.add(nextType.element)) {
         // Class had already been seen, so ignore this type.
         continue;
       }
diff --git a/pkg/analyzer_utilities/lib/tool/api.dart b/pkg/analyzer_utilities/lib/tool/api.dart
index 1c4cd13..6bbeec2 100644
--- a/pkg/analyzer_utilities/lib/tool/api.dart
+++ b/pkg/analyzer_utilities/lib/tool/api.dart
@@ -183,10 +183,10 @@
           ')',
           suffix,
         ];
-      case InterfaceType(:var element3, :var typeArguments):
-        _potentiallyDanglingReferences.addLast(element3);
+      case InterfaceType(:var element, :var typeArguments):
+        _potentiallyDanglingReferences.addLast(element);
         return [
-          _uniqueNamer.name(element3),
+          _uniqueNamer.name(element),
           if (typeArguments.isNotEmpty)
             ...typeArguments
                 .map(_describeType)
@@ -214,8 +214,8 @@
           ].separate(prefix: '(', suffix: ')'),
           suffix,
         ];
-      case TypeParameterType(:var element3):
-        return [element3.name3!, suffix];
+      case TypeParameterType(:var element):
+        return [element.name3!, suffix];
       case VoidType():
         return ['void'];
       case dynamic(:var runtimeType):
@@ -453,7 +453,7 @@
         if (interface is MixinElement) ...interface.superclassConstraints,
       ]) {
         if (superinterface == null) continue;
-        var superinterfaceElement = superinterface.element3;
+        var superinterfaceElement = superinterface.element;
         if (superinterfaceElement is ClassElement &&
             superinterfaceElement.isSealed) {
           (result[superinterfaceElement] ??= {}).add(interface);
@@ -674,7 +674,7 @@
   bool _isPublicApiAnnotation(ElementAnnotation annotation) {
     if (annotation.computeConstantValue() case DartObject(
       type: InterfaceType(
-        element3: InterfaceElement(name3: 'AnalyzerPublicApi'),
+        element: InterfaceElement(name3: 'AnalyzerPublicApi'),
       ),
     )) {
       return true;
diff --git a/pkg/linter/lib/src/extensions.dart b/pkg/linter/lib/src/extensions.dart
index fada3ca..9665a40 100644
--- a/pkg/linter/lib/src/extensions.dart
+++ b/pkg/linter/lib/src/extensions.dart
@@ -152,7 +152,7 @@
 extension ClassElementExtension on ClassElement {
   bool get hasImmutableAnnotation {
     var inheritedAndSelfElements = <InterfaceElement>[
-      ...allSupertypes.map((t) => t.element3),
+      ...allSupertypes.map((t) => t.element),
       this,
     ];
 
@@ -279,8 +279,8 @@
     }
     if (typeToCheck is InterfaceType) {
       return isAnyInterface(typeToCheck) ||
-          !typeToCheck.element3.isSynthetic &&
-              typeToCheck.element3.allSupertypes.any(isAnyInterface);
+          !typeToCheck.element.isSynthetic &&
+              typeToCheck.element.allSupertypes.any(isAnyInterface);
     } else {
       return false;
     }
@@ -292,7 +292,7 @@
       return false;
     }
     bool predicate(InterfaceType i) => i.isSameAs(interface, library);
-    var element = self.element3;
+    var element = self.element;
     return predicate(self) ||
         !element.isSynthetic && element.allSupertypes.any(predicate);
   }
@@ -302,8 +302,8 @@
   bool isSameAs(String? interface, String? library) {
     var self = this;
     return self is InterfaceType &&
-        self.element3.name3 == interface &&
-        self.element3.library2.name3 == library;
+        self.element.name3 == interface &&
+        self.element.library2.name3 == library;
   }
 
   static bool _extendsClass(
@@ -313,7 +313,7 @@
     String? library,
   ) =>
       type != null &&
-      seenElements.add(type.element3) &&
+      seenElements.add(type.element) &&
       (type.isSameAs(className, library) ||
           _extendsClass(type.superclass, seenElements, className, library));
 }
@@ -555,7 +555,7 @@
       Set<InterfaceElement> alreadyVisited,
       List<InterfaceType> interfaceTypes,
     ) {
-      if (type == null || !alreadyVisited.add(type.element3)) {
+      if (type == null || !alreadyVisited.add(type.element)) {
         return;
       }
       interfaceTypes.add(type);
diff --git a/pkg/linter/lib/src/rules/analyzer_public_api.dart b/pkg/linter/lib/src/rules/analyzer_public_api.dart
index 1b27267..7d3cd4d 100644
--- a/pkg/linter/lib/src/rules/analyzer_public_api.dart
+++ b/pkg/linter/lib/src/rules/analyzer_public_api.dart
@@ -319,11 +319,11 @@
             ..._problemsForAnalyzerPublicApi(f.type),
           for (var f in namedFields) ..._problemsForAnalyzerPublicApi(f.type),
         };
-      case InterfaceType(:var element3, :var typeArguments):
+      case InterfaceType(:var element, :var typeArguments):
         return {
-          if (!importedPublicElements.contains(element3) &&
-              !element3.isOkForAnalyzerPublicApi)
-            element3.name3!,
+          if (!importedPublicElements.contains(element) &&
+              !element.isOkForAnalyzerPublicApi)
+            element.name3!,
           for (var t in typeArguments) ..._problemsForAnalyzerPublicApi(t),
         };
       case NeverType():
@@ -422,7 +422,7 @@
         // in practice it doesn't matter (we don't expect to have multiple
         // declarations of this annotation that we need to distinguish), and the
         // advantage of not checking the URI is that unit testing is easier.
-        element3: InterfaceElement(name3: 'AnalyzerPublicApi'),
+        element: InterfaceElement(name3: 'AnalyzerPublicApi'),
       ),
     )) {
       return true;
diff --git a/pkg/linter/lib/src/rules/avoid_implementing_value_types.dart b/pkg/linter/lib/src/rules/avoid_implementing_value_types.dart
index ccf4a78..8b285af 100644
--- a/pkg/linter/lib/src/rules/avoid_implementing_value_types.dart
+++ b/pkg/linter/lib/src/rules/avoid_implementing_value_types.dart
@@ -45,7 +45,7 @@
     for (var interface in implementsClause.interfaces) {
       var interfaceType = interface.type;
       if (interfaceType is InterfaceType &&
-          _overridesEquals(interfaceType.element3)) {
+          _overridesEquals(interfaceType.element)) {
         rule.reportAtNode(interface);
       }
     }
diff --git a/pkg/linter/lib/src/rules/avoid_returning_this.dart b/pkg/linter/lib/src/rules/avoid_returning_this.dart
index 553734d..040028a 100644
--- a/pkg/linter/lib/src/rules/avoid_returning_this.dart
+++ b/pkg/linter/lib/src/rules/avoid_returning_this.dart
@@ -79,7 +79,7 @@
 
       var returnType = node.declaredFragment?.element.returnType;
       if (returnType is InterfaceType &&
-          returnType.element3 ==
+          returnType.element ==
               // ignore: cast_nullable_to_non_nullable
               (parent as Declaration).declaredFragment?.element) {
       } else {
diff --git a/pkg/linter/lib/src/rules/await_only_futures.dart b/pkg/linter/lib/src/rules/await_only_futures.dart
index a3c1f3c..96a700f 100644
--- a/pkg/linter/lib/src/rules/await_only_futures.dart
+++ b/pkg/linter/lib/src/rules/await_only_futures.dart
@@ -42,7 +42,7 @@
     if (type == null || type is DynamicType) return;
     type = context.typeSystem.promoteToNonNull(type);
     if (type.isDartAsyncFutureOr) return;
-    if (type.element3 is ExtensionTypeElement) return;
+    if (type.element is ExtensionTypeElement) return;
     if (type is InvalidType) return;
 
     if (context.typeSystem.isAssignableTo(
diff --git a/pkg/linter/lib/src/rules/collection_methods_unrelated_type.dart b/pkg/linter/lib/src/rules/collection_methods_unrelated_type.dart
index acde16b..8ec7624 100644
--- a/pkg/linter/lib/src/rules/collection_methods_unrelated_type.dart
+++ b/pkg/linter/lib/src/rules/collection_methods_unrelated_type.dart
@@ -101,7 +101,7 @@
   @override
   InterfaceType? collectionTypeFor(InterfaceType targetType) {
     for (var supertype in [targetType, ...targetType.allSupertypes]) {
-      var element = supertype.element3;
+      var element = supertype.element;
       if (element.name3 == interfaceName &&
           element.library2.name3 == libraryName) {
         return targetType.asInstanceOf2(element);
diff --git a/pkg/linter/lib/src/rules/exhaustive_cases.dart b/pkg/linter/lib/src/rules/exhaustive_cases.dart
index 7608a6a..45d6dfd 100644
--- a/pkg/linter/lib/src/rules/exhaustive_cases.dart
+++ b/pkg/linter/lib/src/rules/exhaustive_cases.dart
@@ -37,7 +37,7 @@
   void visitSwitchStatement(SwitchStatement statement) {
     var expressionType = statement.expression.staticType;
     if (expressionType is InterfaceType) {
-      var interfaceElement = expressionType.element3;
+      var interfaceElement = expressionType.element;
       // Handled in analyzer.
       if (interfaceElement is! ClassElement) {
         return;
diff --git a/pkg/linter/lib/src/rules/implicit_reopen.dart b/pkg/linter/lib/src/rules/implicit_reopen.dart
index 7d3d31d..70689ff0 100644
--- a/pkg/linter/lib/src/rules/implicit_reopen.dart
+++ b/pkg/linter/lib/src/rules/implicit_reopen.dart
@@ -48,7 +48,7 @@
     if (element.isMixinClass) return;
 
     var library = element.library2;
-    var supertype = element.supertype?.element3;
+    var supertype = element.supertype?.element;
     if (supertype is! ClassElement) return;
     if (supertype.library2 != library) return;
 
diff --git a/pkg/linter/lib/src/rules/invalid_runtime_check_with_js_interop_types.dart b/pkg/linter/lib/src/rules/invalid_runtime_check_with_js_interop_types.dart
index 416537a..5dd0342 100644
--- a/pkg/linter/lib/src/rules/invalid_runtime_check_with_js_interop_types.dart
+++ b/pkg/linter/lib/src/rules/invalid_runtime_check_with_js_interop_types.dart
@@ -41,7 +41,7 @@
 bool _isJsInteropType(DartType type, _InteropTypeKind kind) {
   if (type is TypeParameterType) return _isJsInteropType(type.bound, kind);
   if (type is InterfaceType) {
-    var element = type.element3;
+    var element = type.element;
     var dartJsInteropTypeKind =
         kind == _InteropTypeKind.dartJsInteropType ||
         kind == _InteropTypeKind.any;
@@ -83,7 +83,7 @@
     return _isWasmIncompatibleJsInterop(type.bound);
   }
   if (type is! InterfaceType) return false;
-  var element = type.element3;
+  var element = type.element;
   // `hasJS` only checks for the `dart:_js_annotations` definition, which is
   // what we want here.
   if (element.metadata.hasJS) return true;
@@ -102,7 +102,7 @@
 ///
 /// Returns null if `type` is not a `dart:js_interop` `@staticInterop` class.
 DartType? _jsTypeForStaticInterop(InterfaceType type) {
-  var element = type.element3;
+  var element = type.element;
   if (element is! ClassElement) return null;
   var metadata = element.metadata;
   var hasJS = false;
@@ -153,7 +153,7 @@
         : _isJsInteropType(type, _InteropTypeKind.dartJsInteropType)) {
       // Nullability and generics on interop types are ignored for this lint. In
       // order to just compare the interfaces themselves, we use `thisType`.
-      return type.element3.thisType;
+      return type.element.thisType;
     } else {
       // TODO(scheglov): remove this cast
       var jsType = _jsTypeForStaticInterop(type) as TypeImpl?;
diff --git a/pkg/linter/lib/src/rules/library_private_types_in_public_api.dart b/pkg/linter/lib/src/rules/library_private_types_in_public_api.dart
index fcdbbc4..7f1c2c9 100644
--- a/pkg/linter/lib/src/rules/library_private_types_in_public_api.dart
+++ b/pkg/linter/lib/src/rules/library_private_types_in_public_api.dart
@@ -135,7 +135,7 @@
     var element = node.declaredFragment?.element;
     if (element is FieldFormalParameterElement) {
       var type = element.type;
-      if (type is InterfaceType && isPrivateName(type.element3.name3)) {
+      if (type is InterfaceType && isPrivateName(type.element.name3)) {
         rule.reportAtToken(node.name);
       }
     }
@@ -247,7 +247,7 @@
     var element = node.declaredFragment?.element;
     if (element is SuperFormalParameterElement) {
       var type = element.type;
-      if (type is InterfaceType && isPrivateName(type.element3.name3)) {
+      if (type is InterfaceType && isPrivateName(type.element.name3)) {
         rule.reportAtToken(node.name);
       }
     }
diff --git a/pkg/linter/lib/src/rules/matching_super_parameters.dart b/pkg/linter/lib/src/rules/matching_super_parameters.dart
index d1d4e0f..17f5535 100644
--- a/pkg/linter/lib/src/rules/matching_super_parameters.dart
+++ b/pkg/linter/lib/src/rules/matching_super_parameters.dart
@@ -54,7 +54,7 @@
                 .declaredFragment
                 ?.element
                 .supertype
-                ?.element3
+                ?.element
                 .unnamedConstructor2;
       }
     }
diff --git a/pkg/linter/lib/src/rules/no_default_cases.dart b/pkg/linter/lib/src/rules/no_default_cases.dart
index e579513..4d67fa3 100644
--- a/pkg/linter/lib/src/rules/no_default_cases.dart
+++ b/pkg/linter/lib/src/rules/no_default_cases.dart
@@ -44,7 +44,7 @@
     if (expressionType is InterfaceType) {
       for (var member in statement.members) {
         if (member is SwitchDefault) {
-          var interfaceElement = expressionType.element3;
+          var interfaceElement = expressionType.element;
           if (interfaceElement is EnumElement ||
               interfaceElement is ClassElement &&
                   interfaceElement.isEnumLikeClass()) {
diff --git a/pkg/linter/lib/src/rules/no_runtimeType_toString.dart b/pkg/linter/lib/src/rules/no_runtimeType_toString.dart
index 71ffd9e..ceca035 100644
--- a/pkg/linter/lib/src/rules/no_runtimeType_toString.dart
+++ b/pkg/linter/lib/src/rules/no_runtimeType_toString.dart
@@ -63,7 +63,7 @@
           if (declaredElement != null) {
             var extendedType = declaredElement.extendedType;
             if (extendedType is InterfaceType) {
-              var extendedElement = extendedType.element3;
+              var extendedElement = extendedType.element;
               return !(extendedElement is ClassElement &&
                   !extendedElement.isAbstract);
             }
diff --git a/pkg/linter/lib/src/rules/null_closures.dart b/pkg/linter/lib/src/rules/null_closures.dart
index 26e9dc3..ad445e6 100644
--- a/pkg/linter/lib/src/rules/null_closures.dart
+++ b/pkg/linter/lib/src/rules/null_closures.dart
@@ -290,7 +290,7 @@
       );
     }
 
-    var element = type.element3;
+    var element = type.element;
     if (element.isSynthetic) return null;
 
     var elementName = element.name3;
@@ -302,7 +302,7 @@
     if (method != null) return method;
 
     for (var supertype in element.allSupertypes) {
-      var superElement = supertype.element3;
+      var superElement = supertype.element;
       if (superElement.name3 case var superElementName?) {
         method = getMethod(superElement.library2.name3, superElementName);
         if (method != null) return method;
diff --git a/pkg/linter/lib/src/rules/prefer_asserts_in_initializer_lists.dart b/pkg/linter/lib/src/rules/prefer_asserts_in_initializer_lists.dart
index ec337f28..5405cbe 100644
--- a/pkg/linter/lib/src/rules/prefer_asserts_in_initializer_lists.dart
+++ b/pkg/linter/lib/src/rules/prefer_asserts_in_initializer_lists.dart
@@ -106,9 +106,9 @@
       void addRecursively(InterfaceElement? element) {
         if (element != null && _classes.add(element)) {
           for (var t in element.mixins) {
-            addRecursively(t.element3);
+            addRecursively(t.element);
           }
-          addRecursively(element.supertype?.element3);
+          addRecursively(element.supertype?.element);
         }
       }
 
diff --git a/pkg/linter/lib/src/rules/prefer_const_constructors_in_immutables.dart b/pkg/linter/lib/src/rules/prefer_const_constructors_in_immutables.dart
index e6a5dfb..6104690 100644
--- a/pkg/linter/lib/src/rules/prefer_const_constructors_in_immutables.dart
+++ b/pkg/linter/lib/src/rules/prefer_const_constructors_in_immutables.dart
@@ -74,7 +74,7 @@
     InterfaceElement? current = self;
     var seenElements = <InterfaceElement>{};
     while (current != null && seenElements.add(current)) {
-      current = current.supertype?.element3;
+      current = current.supertype?.element;
     }
     return seenElements.toList();
   }
diff --git a/pkg/linter/lib/src/rules/prefer_const_literals_to_create_immutables.dart b/pkg/linter/lib/src/rules/prefer_const_literals_to_create_immutables.dart
index ec84223..eed5357 100644
--- a/pkg/linter/lib/src/rules/prefer_const_literals_to_create_immutables.dart
+++ b/pkg/linter/lib/src/rules/prefer_const_literals_to_create_immutables.dart
@@ -79,7 +79,7 @@
 
     InterfaceType? current = type;
     while (current != null) {
-      if (current.element3.metadata.hasImmutable) return true;
+      if (current.element.metadata.hasImmutable) return true;
       current = current.superclass;
     }
 
diff --git a/pkg/linter/lib/src/rules/prefer_mixin.dart b/pkg/linter/lib/src/rules/prefer_mixin.dart
index a46cb95..28f0ce6 100644
--- a/pkg/linter/lib/src/rules/prefer_mixin.dart
+++ b/pkg/linter/lib/src/rules/prefer_mixin.dart
@@ -36,7 +36,7 @@
     for (var mixinNode in node.mixinTypes) {
       var type = mixinNode.type;
       if (type is InterfaceType) {
-        var element = type.element3;
+        var element = type.element;
         if (element is MixinElement) continue;
         if (element is ClassElement && !element.isMixinClass) {
           rule.reportAtNode(mixinNode, arguments: [mixinNode.name.lexeme]);
diff --git a/pkg/linter/lib/src/rules/unawaited_futures.dart b/pkg/linter/lib/src/rules/unawaited_futures.dart
index afb7370..5b13320 100644
--- a/pkg/linter/lib/src/rules/unawaited_futures.dart
+++ b/pkg/linter/lib/src/rules/unawaited_futures.dart
@@ -46,7 +46,7 @@
 extension on DartType {
   /// Whether this type is `Future` from dart:async, or is a subtype thereof.
   bool get isOrImplementsFuture {
-    var typeElement = element3;
+    var typeElement = element;
     if (typeElement is! InterfaceElement) return false;
     return isDartAsyncFuture ||
         typeElement.allSupertypes.any((t) => t.isDartAsyncFuture);
diff --git a/pkg/linter/lib/src/rules/unnecessary_async.dart b/pkg/linter/lib/src/rules/unnecessary_async.dart
index a4ef5e3..e4a9d17 100644
--- a/pkg/linter/lib/src/rules/unnecessary_async.dart
+++ b/pkg/linter/lib/src/rules/unnecessary_async.dart
@@ -192,7 +192,7 @@
 
 extension on InterfaceType {
   bool get isDartAsyncFutureOrSubtype {
-    var typeProvider = element3.library2.typeProvider;
+    var typeProvider = element.library2.typeProvider;
     return asInstanceOf2(typeProvider.futureElement2) != null;
   }
 }
diff --git a/pkg/linter/lib/src/rules/unnecessary_null_checks.dart b/pkg/linter/lib/src/rules/unnecessary_null_checks.dart
index 802bd62..24b141e 100644
--- a/pkg/linter/lib/src/rules/unnecessary_null_checks.dart
+++ b/pkg/linter/lib/src/rules/unnecessary_null_checks.dart
@@ -122,7 +122,7 @@
     } else if (grandParent is MethodInvocation) {
       var targetType = grandParent.realTarget?.staticType;
       if (targetType is InterfaceType) {
-        var targetClass = targetType.element3;
+        var targetClass = targetType.element;
 
         if (targetClass.library2.isDartAsync &&
             targetClass.name3 == 'Completer' &&
diff --git a/pkg/linter/lib/src/rules/unreachable_from_main.dart b/pkg/linter/lib/src/rules/unreachable_from_main.dart
index 3f48796..09d41a9 100644
--- a/pkg/linter/lib/src/rules/unreachable_from_main.dart
+++ b/pkg/linter/lib/src/rules/unreachable_from_main.dart
@@ -278,7 +278,7 @@
     node.type?.alias != null ||
         // Any reference to an extension type marks it as reachable, since
         // casting can be used to instantiate the type.
-        node.type?.element3 is ExtensionTypeElement ||
+        node.type?.element is ExtensionTypeElement ||
         nodeIsInTypeArgument ||
         // A reference to any type in an external variable declaration marks
         // that type as reachable, since the external implementation can
@@ -640,7 +640,7 @@
       // Dunno what this is.
       return false;
     }
-    return type is InterfaceType && type.element3.isPragma;
+    return type is InterfaceType && type.element.isPragma;
   }
 
   bool get isWidgetPreview {
@@ -649,7 +649,7 @@
       // Dunno what this is.
       return false;
     }
-    return type is InterfaceType && type.element3.isWidgetPreview;
+    return type is InterfaceType && type.element.isWidgetPreview;
   }
 
   DartType? get _elementType {
diff --git a/pkg/linter/lib/src/rules/unrelated_type_equality_checks.dart b/pkg/linter/lib/src/rules/unrelated_type_equality_checks.dart
index e8b82a2..e0001a4 100644
--- a/pkg/linter/lib/src/rules/unrelated_type_equality_checks.dart
+++ b/pkg/linter/lib/src/rules/unrelated_type_equality_checks.dart
@@ -93,7 +93,7 @@
     // TODO(pq): add tests that ensure this predicate works with fixnum >= 1.1.0-dev
     // See: https://github.com/dart-lang/linter/issues/3868
     if (self is! InterfaceType) return false;
-    var element = self.element3;
+    var element = self.element;
     if (element.name3 != 'Int32' && element.name3 != 'Int64') return false;
     var uri = element.library2.uri;
     if (!uri.isScheme('package')) return false;
diff --git a/pkg/linter/lib/src/rules/unsafe_variance.dart b/pkg/linter/lib/src/rules/unsafe_variance.dart
index d65f055..c1ad6fa 100644
--- a/pkg/linter/lib/src/rules/unsafe_variance.dart
+++ b/pkg/linter/lib/src/rules/unsafe_variance.dart
@@ -47,7 +47,7 @@
     TypeAnnotation typeAnnotation,
   ) {
     if (staticType is TypeParameterType) {
-      var typeParameterElement = staticType.element3;
+      var typeParameterElement = staticType.element;
       if (!owningDeclarationSupportsVariance(typeParameterElement)) {
         return;
       }
diff --git a/pkg/linter/lib/src/rules/use_build_context_synchronously.dart b/pkg/linter/lib/src/rules/use_build_context_synchronously.dart
index a56f6ad..190facf 100644
--- a/pkg/linter/lib/src/rules/use_build_context_synchronously.dart
+++ b/pkg/linter/lib/src/rules/use_build_context_synchronously.dart
@@ -1230,7 +1230,7 @@
       if (staticType == null) return;
       for (var method in protectedInstanceMethods) {
         if (invocation.methodName.name == method.name &&
-            staticType.element3?.name3 == method.type) {
+            staticType.element?.name3 == method.type) {
           checkPositionalArguments(
             method.positional,
             positionalArguments,
@@ -1472,7 +1472,7 @@
           ExecutableElement() => self.returnType,
           VariableElement() => self.type,
           _ => null,
-        }?.element3;
+        }?.element;
     if (buildContextElement is InterfaceElement) {
       return buildContextElement.lookUpGetter(
         name: 'mounted',
diff --git a/pkg/linter/lib/src/rules/use_enums.dart b/pkg/linter/lib/src/rules/use_enums.dart
index 4b8e15d0..a5dd428 100644
--- a/pkg/linter/lib/src/rules/use_enums.dart
+++ b/pkg/linter/lib/src/rules/use_enums.dart
@@ -103,13 +103,13 @@
       throw _InvalidEnumException();
     }
     if (element != classElement) {
-      if (element.supertype?.element3 == classElement) {
+      if (element.supertype?.element == classElement) {
         throw _InvalidEnumException();
       } else if (element.interfaces
-          .map((e) => e.element3)
+          .map((e) => e.element)
           .contains(classElement)) {
         throw _InvalidEnumException();
-      } else if (element.mixins.map((e) => e.element3).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/linter/lib/src/rules/use_named_constants.dart b/pkg/linter/lib/src/rules/use_named_constants.dart
index 27c0169..010449a 100644
--- a/pkg/linter/lib/src/rules/use_named_constants.dart
+++ b/pkg/linter/lib/src/rules/use_named_constants.dart
@@ -37,7 +37,7 @@
     if (node.isConst) {
       var type = node.staticType;
       if (type is! InterfaceType) return;
-      var element = type.element3;
+      var element = type.element;
       if (element is ClassElement) {
         var nodeField =
             node
diff --git a/pkg/linter/lib/src/util/dart_type_utilities.dart b/pkg/linter/lib/src/util/dart_type_utilities.dart
index df37a39..ce56e81 100644
--- a/pkg/linter/lib/src/util/dart_type_utilities.dart
+++ b/pkg/linter/lib/src/util/dart_type_utilities.dart
@@ -190,8 +190,8 @@
       promotedRightType is TypeParameterType) {
     return typesAreUnrelated(
       typeSystem,
-      promotedLeftType.element3.bound,
-      promotedRightType.element3.bound,
+      promotedLeftType.element.bound,
+      promotedRightType.element.bound,
     );
   } else if (promotedLeftType is FunctionType) {
     if (_isFunctionTypeUnrelatedToType(promotedLeftType, promotedRightType)) {
@@ -214,7 +214,7 @@
     return false;
   }
   if (type2 is InterfaceType) {
-    var element2 = type2.element3;
+    var element2 = type2.element;
     if (element2 is ClassElement &&
         element2.thisType.lookUpMethod(
               'call',
@@ -255,8 +255,8 @@
     InterfaceType leftType,
     InterfaceType rightType,
   ) {
-    var leftElement = leftType.element3;
-    var rightElement = rightType.element3;
+    var leftElement = leftType.element;
+    var rightElement = rightType.element;
     if (leftElement == rightElement) {
       // In this case, [leftElement] and [rightElement] represent the same
       // class, modulo generics, e.g. `List<int>` and `List<dynamic>`. Now we
diff --git a/pkg/linter/lib/src/util/flutter_utils.dart b/pkg/linter/lib/src/util/flutter_utils.dart
index ac5368a..c9fc0fa 100644
--- a/pkg/linter/lib/src/util/flutter_utils.dart
+++ b/pkg/linter/lib/src/util/flutter_utils.dart
@@ -59,7 +59,7 @@
   }
   if (type is InterfaceType &&
       type.implementsAnyInterface(_collectionInterfaces)) {
-    return type.element3.typeParameters2.length == 1 &&
+    return type.element.typeParameters2.length == 1 &&
         isWidgetProperty(type.typeArguments.first);
   }
   return false;
@@ -102,7 +102,7 @@
         element.firstFragment.isAugmentation
             ? element.thisType
             : element.supertype;
-    return hasWidgetAsAscendant(type?.element3, alreadySeen);
+    return hasWidgetAsAscendant(type?.element, alreadySeen);
   }
 
   bool isBuildContext(DartType? type, {bool skipNullable = false}) {
@@ -112,7 +112,7 @@
     if (skipNullable && type.nullabilitySuffix == NullabilitySuffix.question) {
       return false;
     }
-    return isExactly(type.element3, _nameBuildContext, _uriFramework);
+    return isExactly(type.element, _nameBuildContext, _uriFramework);
   }
 
   /// Whether [element] is exactly the element named [type], from Flutter.
@@ -124,11 +124,11 @@
 
   bool isExactWidgetTypeContainer(DartType? type) =>
       type is InterfaceType &&
-      isExactly(type.element3, _nameContainer, _uriContainer);
+      isExactly(type.element, _nameContainer, _uriContainer);
 
   bool isExactWidgetTypeSizedBox(DartType? type) =>
       type is InterfaceType &&
-      isExactly(type.element3, _nameSizedBox, _uriBasic);
+      isExactly(type.element, _nameSizedBox, _uriBasic);
 
   bool isKDebugMode(Element? element) =>
       element != null &&
@@ -138,13 +138,13 @@
   bool isState(InterfaceElement element) =>
       isExactly(element, _nameState, _uriFramework) ||
       element.allSupertypes.any(
-        (type) => isExactly(type.element3, _nameState, _uriFramework),
+        (type) => isExactly(type.element, _nameState, _uriFramework),
       );
 
   bool isStatefulWidget(ClassElement element) =>
       isExactly(element, _nameStatefulWidget, _uriFramework) ||
       element.allSupertypes.any(
-        (type) => isExactly(type.element3, _nameStatefulWidget, _uriFramework),
+        (type) => isExactly(type.element, _nameStatefulWidget, _uriFramework),
       );
 
   bool isWidget(InterfaceElement element) {
@@ -152,7 +152,7 @@
       return true;
     }
     for (var type in element.allSupertypes) {
-      if (isExactly(type.element3, _nameWidget, _uriFramework)) {
+      if (isExactly(type.element, _nameWidget, _uriFramework)) {
         return true;
       }
     }
@@ -160,7 +160,7 @@
   }
 
   bool isWidgetType(DartType? type) =>
-      type is InterfaceType && isWidget(type.element3);
+      type is InterfaceType && isWidget(type.element);
 }
 
 // TODO(pq): based on similar extension in server. (Move and reuse.)
@@ -177,7 +177,7 @@
     if (isExactlyWidget) return true;
 
     return self.allSupertypes.any(
-      (type) => type.element3._isExactly(_nameWidget, _uriFramework),
+      (type) => type.element._isExactly(_nameWidget, _uriFramework),
     );
   }
 
@@ -198,6 +198,6 @@
 
     if (!alreadySeen.add(element)) return false;
 
-    return _hasWidgetAsAscendant(element.supertype?.element3, alreadySeen);
+    return _hasWidgetAsAscendant(element.supertype?.element, alreadySeen);
   }
 }
diff --git a/pkg/linter/lib/src/util/obvious_types.dart b/pkg/linter/lib/src/util/obvious_types.dart
index 1d3efb2..bd56da0 100644
--- a/pkg/linter/lib/src/util/obvious_types.dart
+++ b/pkg/linter/lib/src/util/obvious_types.dart
@@ -179,7 +179,7 @@
         } else {
           DartType? dartType = createdType.typeOrThrow;
           if (dartType is InterfaceType &&
-              dartType.element3.typeParameters2.isNotEmpty) {
+              dartType.element.typeParameters2.isNotEmpty) {
             // A raw type is not trivial.
             return false;
           }
diff --git a/pkg/linter/lib/src/util/unused_futures.dart b/pkg/linter/lib/src/util/unused_futures.dart
index 08eb4d2..91e35ff 100644
--- a/pkg/linter/lib/src/util/unused_futures.dart
+++ b/pkg/linter/lib/src/util/unused_futures.dart
@@ -110,7 +110,7 @@
   /// Whether this type is `Future` or `FutureOr` from dart:async, or is a
   /// subtype of `Future`.
   bool get isOrImplementsFutureOrFutureOr {
-    var typeElement = element3;
+    var typeElement = element;
     if (typeElement is! InterfaceElement) return false;
     return isDartAsyncFuture ||
         isDartAsyncFutureOr ||
diff --git a/pkg/linter/tool/checks/rules/visit_registered_nodes.dart b/pkg/linter/tool/checks/rules/visit_registered_nodes.dart
index ac1a1cd..48e1775 100644
--- a/pkg/linter/tool/checks/rules/visit_registered_nodes.dart
+++ b/pkg/linter/tool/checks/rules/visit_registered_nodes.dart
@@ -53,14 +53,14 @@
   void visitMethodInvocation(MethodInvocation node) {
     var targetType = node.target?.staticType;
     if (targetType is! InterfaceType) return;
-    if (targetType.element3.name3 != 'NodeLintRegistry') return;
+    if (targetType.element.name3 != 'NodeLintRegistry') return;
     var methodName = node.methodName.name;
     if (!methodName.startsWith('add')) return;
     var nodeType = methodName.substring(3);
     var args = node.argumentList.arguments;
     var argType = args[1].staticType;
     if (argType is! InterfaceType) return;
-    var visitor = argType.element3;
+    var visitor = argType.element;
     if (visitor is! ClassElement) return;
     if (implements(visitor, 'visit$nodeType')) return;