Elements. Migrate to Element2 (#3991)

Migrate to Element 2

- lib/src/model/annotation.dart
- lib/src/model/package.dart
- lib/src/model/package_builder.dart
- lib/src/model/package_graph.dart

Also removed the `ignore_for_file: analyzer_use_new_elements` from the
generated code.
diff --git a/lib/src/element_type.dart b/lib/src/element_type.dart
index a7eb044..7b7cabf 100644
--- a/lib/src/element_type.dart
+++ b/lib/src/element_type.dart
@@ -40,7 +40,7 @@
         fElement.kind == ElementKind.NEVER) {
       return UndefinedElementType._from(type, library, packageGraph);
     }
-    var modelElement = packageGraph.getModelForElement2(fElement);
+    var modelElement = packageGraph.getModelForElement(fElement);
     return DefinedElementType._from(type, modelElement, library, packageGraph);
   }
 
@@ -137,7 +137,7 @@
       : super._();
 
   List<TypeParameter> get typeFormals => type.typeParameters
-      .map((p) => getModelFor2(p, library) as TypeParameter)
+      .map((p) => getModelFor(p, library) as TypeParameter)
       .toList(growable: false);
 
   @override
@@ -329,7 +329,7 @@
 /// unless it is an alias reference.
 mixin Callable on ElementType {
   List<Parameter> get parameters => type.formalParameters
-      .map((p) => getModelFor2(p, library) as Parameter)
+      .map((p) => getModelFor(p, library) as Parameter)
       .toList(growable: false);
 
   late final ElementType returnType = getTypeFor(type.returnType, library);
diff --git a/lib/src/generator/templates.runtime_renderers.dart b/lib/src/generator/templates.runtime_renderers.dart
index e0a6f33..6bcfefc 100644
--- a/lib/src/generator/templates.runtime_renderers.dart
+++ b/lib/src/generator/templates.runtime_renderers.dart
@@ -8,8 +8,6 @@
 // ignore_for_file: unused_import
 // ignore_for_file: use_super_parameters
 
-// ignore_for_file: analyzer_use_new_elements
-
 import 'package:dartdoc/src/element_type.dart';
 import 'package:dartdoc/src/generator/template_data.dart';
 import 'package:dartdoc/src/model/annotation.dart';
diff --git a/lib/src/model/accessor.dart b/lib/src/model/accessor.dart
index 46f6622..594c71d 100644
--- a/lib/src/model/accessor.dart
+++ b/lib/src/model/accessor.dart
@@ -49,7 +49,7 @@
 
   /// The [enclosingCombo] where this element was defined.
   late final GetterSetterCombo definingCombo =
-      getModelForElement2(element2.variable3!) as GetterSetterCombo;
+      getModelForElement(element2.variable3!) as GetterSetterCombo;
 
   String get _sourceCode {
     if (!isSynthetic) {
@@ -119,8 +119,8 @@
   @override
   ModelElement get enclosingElement => switch (element2.enclosingElement2) {
         LibraryFragment enclosingCompilationUnit =>
-          getModelForElement2(enclosingCompilationUnit.element),
-        _ => getModelFor2(element2.enclosingElement2, library)
+          getModelForElement(enclosingCompilationUnit.element),
+        _ => getModelFor(element2.enclosingElement2, library)
       };
 
   @override
@@ -223,7 +223,7 @@
         continue;
       }
       final parentContainer =
-          getModelForElement2(supertype.element3) as InheritingContainer;
+          getModelForElement(supertype.element3) as InheritingContainer;
       final possibleFields =
           parentContainer.declaredFields.where((f) => !f.isStatic);
       final fieldName = accessor.lookupName?.replaceFirst('=', '');
diff --git a/lib/src/model/annotation.dart b/lib/src/model/annotation.dart
index c1fab31..0897184 100644
--- a/lib/src/model/annotation.dart
+++ b/lib/src/model/annotation.dart
@@ -2,11 +2,9 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// ignore_for_file: analyzer_use_new_elements
-
 import 'dart:convert';
 
-import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/element2.dart';
 import 'package:dartdoc/src/element_type.dart';
 import 'package:dartdoc/src/model/attribute.dart';
 import 'package:dartdoc/src/model/class.dart';
@@ -24,7 +22,7 @@
   final PackageGraph _packageGraph;
 
   Annotation(this._annotation, this._library, this._packageGraph)
-      : super(_annotation.element!.name!);
+      : super(_annotation.element2!.name3!);
 
   @override
   String get linkedNameWithParameters {
@@ -42,19 +40,19 @@
   }
 
   @override
-  String get linkedName => _annotation.element is PropertyAccessorElement
-      ? _packageGraph.getModelForElement(_annotation.element!).linkedName
+  String get linkedName => _annotation.element2 is PropertyAccessorElement2
+      ? _packageGraph.getModelForElement(_annotation.element2!).linkedName
       // TODO(jcollins-g): consider linking to constructor instead of type?
       : _modelType.linkedName;
 
-  late final ElementType _modelType = switch (_annotation.element) {
-    ConstructorElement(:var returnType) =>
+  late final ElementType _modelType = switch (_annotation.element2) {
+    ConstructorElement2(:var returnType) =>
       _packageGraph.getTypeFor(returnType, _library),
-    PropertyAccessorElement(:var variable2?) =>
-      (_packageGraph.getModelForElement(variable2) as GetterSetterCombo)
+    PropertyAccessorElement2(:var variable3?) =>
+      (_packageGraph.getModelForElement(variable3) as GetterSetterCombo)
           .modelType,
     _ => throw StateError(
-        'non-callable element used as annotation?: ${_annotation.element}')
+        'non-callable element used as annotation?: ${_annotation.element2}')
   };
 
   bool get isPublic {
diff --git a/lib/src/model/comment_referable.dart b/lib/src/model/comment_referable.dart
index 9404d3b..39c0e48 100644
--- a/lib/src/model/comment_referable.dart
+++ b/lib/src/model/comment_referable.dart
@@ -132,14 +132,14 @@
         // First, cache the synthetic variable, so that the
         // PropertyAccessorElement getter and/or setter are set (see
         // `Field.new` regarding `enclosingCombo`).
-        packageGraph.getModelForElement2(variable);
+        packageGraph.getModelForElement(variable);
         // Then, use the result for the PropertyAccessorElement.
-        result = packageGraph.getModelForElement2(resultElement);
+        result = packageGraph.getModelForElement(resultElement);
       } else {
-        result = packageGraph.getModelForElement2(variable);
+        result = packageGraph.getModelForElement(variable);
       }
     } else {
-      result = packageGraph.getModelForElement2(resultElement);
+      result = packageGraph.getModelForElement(resultElement);
     }
     return _recurseChildrenAndFilter(referenceLookup, result, filter: filter);
   }
diff --git a/lib/src/model/constructor.dart b/lib/src/model/constructor.dart
index 77a7dfd..b369b0b 100644
--- a/lib/src/model/constructor.dart
+++ b/lib/src/model/constructor.dart
@@ -64,7 +64,7 @@
 
   @override
   Container get enclosingElement =>
-      getModelFor2(element2.enclosingElement2, library) as Container;
+      getModelFor(element2.enclosingElement2, library) as Container;
 
   @override
   String get fileName =>
@@ -136,7 +136,7 @@
 
     var parameterElements = parameters.map((parameter) {
       var e = dereferenceParameter(parameter.element2);
-      return e == null ? parameter : getModelForElement2(e);
+      return e == null ? parameter : getModelForElement(e);
     });
     return {
       for (var e in parameterElements) e.referenceName: e,
diff --git a/lib/src/model/container_member.dart b/lib/src/model/container_member.dart
index 08f39fa..7f6580a 100644
--- a/lib/src/model/container_member.dart
+++ b/lib/src/model/container_member.dart
@@ -29,7 +29,7 @@
   @protected
   @visibleForTesting
   late final Container definingEnclosingContainer =
-      getModelForElement2(element2.enclosingElement2!) as Container;
+      getModelForElement(element2.enclosingElement2!) as Container;
 
   @override
   Set<Attribute> get attributes => {
diff --git a/lib/src/model/documentation_comment.dart b/lib/src/model/documentation_comment.dart
index 93e3a60..174ffb6 100644
--- a/lib/src/model/documentation_comment.dart
+++ b/lib/src/model/documentation_comment.dart
@@ -55,7 +55,7 @@
         if (!hasDocumentationComment && self.overriddenElement != null) {
           return self.overriddenElement!.documentationFrom;
         } else if (self.isInherited) {
-          return packageGraph.getModelForElement2(element2).documentationFrom;
+          return packageGraph.getModelForElement(element2).documentationFrom;
         } else {
           return [this];
         }
diff --git a/lib/src/model/extension.dart b/lib/src/model/extension.dart
index eeaec5a..b8bf241 100644
--- a/lib/src/model/extension.dart
+++ b/lib/src/model/extension.dart
@@ -19,7 +19,6 @@
 /// Static extension on a given type, containing methods (including getters,
 /// setters, operators).
 class Extension extends Container {
-
   @override
   final ExtensionElement2 element2;
 
@@ -82,7 +81,7 @@
 
   @override
   late final List<Method> declaredMethods = element2.methods2
-      .map((e) => getModelFor2(e, library, enclosingContainer: this) as Method)
+      .map((e) => getModelFor(e, library, enclosingContainer: this) as Method)
       .toList(growable: false);
 
   @override
@@ -115,15 +114,15 @@
       setter = ModelElement.for_(fieldSetter, library, packageGraph,
           enclosingContainer: this) as ContainerAccessor;
     }
-    return getModelForPropertyInducingElement(field.asElement, library,
+    return getModelForPropertyInducingElement(field, library,
         getter: getter, setter: setter, enclosingContainer: this) as Field;
   }).toList(growable: false);
 
   @override
   late final List<TypeParameter> typeParameters = element2.typeParameters2
-      .map((typeParameter) => getModelFor2(
+      .map((typeParameter) => getModelFor(
           typeParameter,
-          getModelForElement2(typeParameter.enclosingElement2!.library2!)
+          getModelForElement(typeParameter.enclosingElement2!.library2!)
               as Library) as TypeParameter)
       .toList(growable: false);
 
diff --git a/lib/src/model/extension_type.dart b/lib/src/model/extension_type.dart
index bb06912..623f810 100644
--- a/lib/src/model/extension_type.dart
+++ b/lib/src/model/extension_type.dart
@@ -53,7 +53,7 @@
       setter = ContainerAccessor(
           fieldSetter, library, packageGraph, this);
     }
-    return getModelForPropertyInducingElement2(field, library,
+    return getModelForPropertyInducingElement(field, library,
         getter: getter, setter: setter) as Field;
   }).toList(growable: false);
 
diff --git a/lib/src/model/getter_setter_combo.dart b/lib/src/model/getter_setter_combo.dart
index 0475c1d..e5e4fe3 100644
--- a/lib/src/model/getter_setter_combo.dart
+++ b/lib/src/model/getter_setter_combo.dart
@@ -86,7 +86,7 @@
     var element = _constantInitializer.constructorName.element;
     if (element == null) return original;
 
-    var target = getModelForElement2(element) as Constructor;
+    var target = getModelForElement(element) as Constructor;
     var enclosingElement = target.enclosingElement;
     if (enclosingElement is! Class) return original;
 
diff --git a/lib/src/model/inheriting_container.dart b/lib/src/model/inheriting_container.dart
index 0fdbdf3..1b669a7 100644
--- a/lib/src/model/inheriting_container.dart
+++ b/lib/src/model/inheriting_container.dart
@@ -20,7 +20,7 @@
 /// [hasModifiers] override is not necessary for this mixin.
 mixin Constructable implements InheritingContainer {
   late final List<Constructor> constructors = element2.constructors2
-      .map((e) => getModelFor2(e, library) as Constructor)
+      .map((e) => getModelFor(e, library) as Constructor)
       .toList(growable: false);
 
   @override
@@ -111,7 +111,7 @@
 
     return [
       for (var e in inheritedMethodElements)
-        getModelFor2(e, library, enclosingContainer: this) as Method,
+        getModelFor(e, library, enclosingContainer: this) as Method,
     ];
   }
 
@@ -125,7 +125,7 @@
 
     return [
       for (var e in inheritedOperatorElements)
-        getModelFor2(e, library, enclosingContainer: this) as Operator,
+        getModelFor(e, library, enclosingContainer: this) as Operator,
     ];
   }
 
@@ -254,14 +254,14 @@
 
   @override
   late final List<Method> declaredMethods = element2.methods2
-      .map((e) => getModelFor2(e, library) as Method)
+      .map((e) => getModelFor(e, library) as Method)
       .toList(growable: false);
 
   @override
   late final List<TypeParameter> typeParameters = element2.typeParameters2
-      .map((typeParameter) => getModelFor2(
+      .map((typeParameter) => getModelFor(
           typeParameter,
-          getModelForElement2(typeParameter.enclosingElement2!.library2!)
+          getModelForElement(typeParameter.enclosingElement2!.library2!)
               as Library) as TypeParameter)
       .toList(growable: false);
 
@@ -292,7 +292,7 @@
 
   /// The [InheritingContainer] with the library in which [element] is defined.
   InheritingContainer get definingContainer =>
-      getModelFor2(element2, library) as InheritingContainer;
+      getModelFor(element2, library) as InheritingContainer;
 
   @override
 
@@ -347,7 +347,7 @@
   List<Field> get _extensionInstanceFields => [
         for (var extension in potentiallyApplicableExtensionsSorted)
           for (var field in extension.instanceFields)
-            getModelForPropertyInducingElement2(
+            getModelForPropertyInducingElement(
               field.element2,
               library,
               enclosingContainer: extension,
@@ -371,7 +371,7 @@
   List<Method> get _extensionInstanceMethods => [
         for (var extension in potentiallyApplicableExtensionsSorted)
           for (var method in extension.instanceMethods)
-            getModelFor2(method.element2, library,
+            getModelFor(method.element2, library,
                 enclosingContainer: extension) as Method,
       ];
 
@@ -388,7 +388,7 @@
   List<Operator> get _extensionInstanceOperators => [
         for (var extension in potentiallyApplicableExtensionsSorted)
           for (var operator in extension.instanceOperators)
-            getModelFor2(operator.element2, library,
+            getModelFor(operator.element2, library,
                 enclosingContainer: extension) as Operator,
       ];
 
@@ -604,7 +604,7 @@
       if (element == null) return null;
       final enclosingContainer =
           inheritedAccessors.contains(element) ? this : null;
-      return getModelFor2(element, library,
+      return getModelFor(element, library,
           enclosingContainer: enclosingContainer) as ContainerAccessor;
     }
 
@@ -644,14 +644,14 @@
     if ((getter == null || getter.isInherited) &&
         (setter == null || setter.isInherited)) {
       // Field is 100% inherited.
-      return getModelForPropertyInducingElement2(field, library,
+      return getModelForPropertyInducingElement(field, library,
           getter: getter, setter: setter, enclosingContainer: this) as Field;
     } else {
       // Field is <100% inherited (could be half-inherited).
       // TODO(jcollins-g): Navigation is probably still confusing for
       // half-inherited fields when traversing the inheritance tree.  Make
       // this better, somehow.
-      return getModelForPropertyInducingElement2(field, library,
+      return getModelForPropertyInducingElement(field, library,
           getter: getter, setter: setter) as Field;
     }
   }
diff --git a/lib/src/model/library.dart b/lib/src/model/library.dart
index d1029aa..50ae6e2 100644
--- a/lib/src/model/library.dart
+++ b/lib/src/model/library.dart
@@ -70,8 +70,9 @@
       ...libraryElement.firstFragment.topLevelVariables2.map((v) => v.element),
       ...libraryElement.firstFragment.typeAliases2.map((a) => a.element),
     };
-    var exportedElements = {...libraryElement.exportNamespace.definedNames2.values}
-        .difference(localElements);
+    var exportedElements = {
+      ...libraryElement.exportNamespace.definedNames2.values
+    }.difference(localElements);
     var library = Library._(
       libraryElement,
       packageGraph,
@@ -140,7 +141,7 @@
       if (importedLibrary != null) {
         prefixToLibrary
             .putIfAbsent(prefixName, () => {})
-            .add(getModelFor2(importedLibrary, library) as Library);
+            .add(getModelFor(importedLibrary, library) as Library);
       }
     }
     return prefixToLibrary;
@@ -362,7 +363,7 @@
       _localElementsOfType<T extends Element2, U extends ModelElement>() =>
           _localElements
               .whereType<T>()
-              .map((e) => packageGraph.getModelFor2(e, this) as U);
+              .map((e) => packageGraph.getModelFor(e, this) as U);
 
   Iterable<U>
       _exportedElementsOfType<T extends Element2, U extends ModelElement>() =>
@@ -371,9 +372,9 @@
             if (library == null) {
               throw StateError("The library of '$e' is null!");
             }
-            return packageGraph.getModelFor2(
+            return packageGraph.getModelFor(
               e,
-              packageGraph.getModelForElement2(library) as Library,
+              packageGraph.getModelForElement(library) as Library,
             ) as U;
           });
 
@@ -395,18 +396,19 @@
     }.map(_topLevelVariableFor);
   }
 
-  TopLevelVariable _topLevelVariableFor(TopLevelVariableElement2 topLevelVariableElement) {
+  TopLevelVariable _topLevelVariableFor(
+      TopLevelVariableElement2 topLevelVariableElement) {
     Accessor? getter;
     var elementGetter = topLevelVariableElement.getter2;
     if (elementGetter != null) {
-      getter = packageGraph.getModelFor2(elementGetter, this) as Accessor;
+      getter = packageGraph.getModelFor(elementGetter, this) as Accessor;
     }
     Accessor? setter;
     var elementSetter = topLevelVariableElement.setter2;
     if (elementSetter != null) {
-      setter = packageGraph.getModelFor2(elementSetter, this) as Accessor;
+      setter = packageGraph.getModelFor(elementSetter, this) as Accessor;
     }
-    return getModelForPropertyInducingElement2(topLevelVariableElement, this,
+    return getModelForPropertyInducingElement(topLevelVariableElement, this,
         getter: getter, setter: setter) as TopLevelVariable;
   }
 
@@ -436,7 +438,7 @@
   Map<String, CommentReferable> get referenceChildren {
     var referenceChildrenBuilder = <String, CommentReferable>{};
     var definedNamesModelElements =
-        element2.exportNamespace.definedNames2.values.map(getModelForElement2);
+        element2.exportNamespace.definedNames2.values.map(getModelForElement);
     referenceChildrenBuilder
         .addAll(definedNamesModelElements.whereNotType<Accessor>().asMapByName);
     // TODO(jcollins-g): warn and get rid of this case where it shows up.
@@ -500,19 +502,19 @@
     ];
     return libraryMembers.map((member) {
       if (member is! GetterSetterCombo) {
-        return getModelForElement2(member.element2).fullyQualifiedName;
+        return getModelForElement(member.element2).fullyQualifiedName;
       }
       var getter = switch (member.getter) {
-        Accessor accessor => getModelForElement2(accessor.element2) as Accessor,
+        Accessor accessor => getModelForElement(accessor.element2) as Accessor,
         _ => null,
       };
       var setter = switch (member.setter) {
-        Accessor accessor => getModelForElement2(accessor.element2) as Accessor,
+        Accessor accessor => getModelForElement(accessor.element2) as Accessor,
         _ => null,
       };
-      return getModelForPropertyInducingElement2(
+      return getModelForPropertyInducingElement(
         member.element2 as TopLevelVariableElement2,
-        getModelForElement2(member.element2.library2!) as Library,
+        getModelForElement(member.element2.library2!) as Library,
         getter: getter,
         setter: setter,
       ).fullyQualifiedName;
diff --git a/lib/src/model/method.dart b/lib/src/model/method.dart
index 31f68a0..4c20a44 100644
--- a/lib/src/model/method.dart
+++ b/lib/src/model/method.dart
@@ -49,7 +49,7 @@
 
   void _calcTypeParameters() {
     typeParameters = element2.typeParameters2.map((f) {
-      return getModelFor2(f, library) as TypeParameter;
+      return getModelFor(f, library) as TypeParameter;
     }).toList(growable: false);
   }
 
@@ -68,7 +68,7 @@
 
   @override
   Container get enclosingElement => _enclosingContainer ??=
-      getModelFor2(element2.enclosingElement2!, library) as Container;
+      getModelFor(element2.enclosingElement2!, library) as Container;
 
   @override
   String get aboveSidebarPath => enclosingElement.sidebarPath;
@@ -134,7 +134,7 @@
           'Expected "${e.enclosingElement2?.name3}" to be a InterfaceElement, '
           'but was ${e.enclosingElement2.runtimeType}',
         );
-        return getModelForElement2(e) as Method?;
+        return getModelForElement(e) as Method?;
       }
     }
     return null;
diff --git a/lib/src/model/model_element.dart b/lib/src/model/model_element.dart
index 122a967..8d20576 100644
--- a/lib/src/model/model_element.dart
+++ b/lib/src/model/model_element.dart
@@ -803,7 +803,7 @@
   @override
   CommentReferable get definingCommentReferable {
     var element = element2;
-    return getModelForElement2(element);
+    return getModelForElement(element);
   }
 
   String get linkedObjectType => _packageGraph.dartCoreObject;
diff --git a/lib/src/model/model_function.dart b/lib/src/model/model_function.dart
index 3e1958b..ec930e2 100644
--- a/lib/src/model/model_function.dart
+++ b/lib/src/model/model_function.dart
@@ -10,8 +10,8 @@
 
 /// A [ModelElement] for a [TopLevelFunctionElement] that isn't part of a type definition.
 class ModelFunction extends ModelFunctionTyped with Categorization {
-  ModelFunction(
-      TopLevelFunctionElement super.element2, super.library, super.packageGraph);
+  ModelFunction(TopLevelFunctionElement super.element2, super.library,
+      super.packageGraph);
 
   bool get isStatic => element2.isStatic;
 
@@ -19,7 +19,8 @@
   String get name => element2.name3 ?? '';
 
   @override
-  TopLevelFunctionElement get element2 => super.element2 as TopLevelFunctionElement;
+  TopLevelFunctionElement get element2 =>
+      super.element2 as TopLevelFunctionElement;
 
   bool get isAsynchronous => element2.firstFragment.isAsynchronous;
 }
@@ -34,14 +35,13 @@
 }
 
 class ModelFunctionTyped extends ModelElement with TypeParameters {
-
   @override
   final FunctionTypedElement2 element2;
 
   @override
   late final List<TypeParameter> typeParameters = [
     for (var p in element2.typeParameters2)
-      getModelFor2(p, library) as TypeParameter,
+      getModelFor(p, library) as TypeParameter,
   ];
 
   ModelFunctionTyped(this.element2, super.library, super.packageGraph);
@@ -82,7 +82,8 @@
   @override
   Iterable<CommentReferable> get referenceParents => [library];
 
-  late final Callable modelType = getTypeFor(element2.type, library) as Callable;
+  late final Callable modelType =
+      getTypeFor(element2.type, library) as Callable;
 
   // For use in templates.
   bool get isProvidedByExtension => false;
diff --git a/lib/src/model/nameable.dart b/lib/src/model/nameable.dart
index 423948f..b3fa84f 100644
--- a/lib/src/model/nameable.dart
+++ b/lib/src/model/nameable.dart
@@ -2,13 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// ignore_for_file: analyzer_use_new_elements
-
-import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/element2.dart';
 import 'package:analyzer/dart/element/type.dart' show DartType;
-// ignore: implementation_imports
-import 'package:analyzer/src/utilities/extensions/element.dart';
 import 'package:collection/collection.dart';
 import 'package:dartdoc/src/element_type.dart';
 import 'package:dartdoc/src/model/accessor.dart';
@@ -59,21 +54,6 @@
   ///
   /// A convenience method for [ModelElement.for_], see its documentation.
   ModelElement getModelFor(
-    Element element,
-    Library library, {
-    Container? enclosingContainer,
-  }) =>
-      ModelElement.for_(
-        element.asElement2!,
-        library,
-        packageGraph,
-        enclosingContainer: enclosingContainer,
-      );
-
-  /// Returns the [ModelElement] for [element], instantiating it if needed.
-  ///
-  /// A convenience method for [ModelElement.for_], see its documentation.
-  ModelElement getModelFor2(
     Element2 element,
     Library library, {
     Container? enclosingContainer,
@@ -89,14 +69,7 @@
   ///
   /// A convenience method for [ModelElement.forElement], see its
   /// documentation.
-  ModelElement getModelForElement(Element element) =>
-      ModelElement.forElement(element.asElement2!, packageGraph);
-
-  /// Returns the [ModelElement] for [element], instantiating it if needed.
-  ///
-  /// A convenience method for [ModelElement.forElement], see its
-  /// documentation.
-  ModelElement getModelForElement2(Element2 element) =>
+  ModelElement getModelForElement(Element2 element) =>
       ModelElement.forElement(element, packageGraph);
 
   /// Returns the [ModelElement] for [element], instantiating it if needed.
@@ -107,29 +80,6 @@
   // immediately before calling this method, and I imagine could instead just
   // call `getModelFor`.
   ModelElement getModelForPropertyInducingElement(
-    PropertyInducingElement element,
-    Library library, {
-    required Accessor? getter,
-    required Accessor? setter,
-    Container? enclosingContainer,
-  }) =>
-      ModelElement.forPropertyInducingElement(
-        element.asElement2 as PropertyInducingElement2,
-        library,
-        packageGraph,
-        getter: getter,
-        setter: setter,
-        enclosingContainer: enclosingContainer,
-      );
-
-  /// Returns the [ModelElement] for [element], instantiating it if needed.
-  ///
-  /// A convenience method for [ModelElement.forPropertyInducingElement], see
-  /// its documentation.
-  // TODO(srawlins): Most callers seem to determine `getter` and `setter`
-  // immediately before calling this method, and I imagine could instead just
-  // call `getModelFor`.
-  ModelElement getModelForPropertyInducingElement2(
     PropertyInducingElement2 element,
     Library library, {
     required Accessor? getter,
diff --git a/lib/src/model/package.dart b/lib/src/model/package.dart
index 73c96fa..1367667 100644
--- a/lib/src/model/package.dart
+++ b/lib/src/model/package.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// ignore_for_file: analyzer_use_new_elements
-
 import 'package:analyzer/dart/element/element2.dart';
 import 'package:dartdoc/src/dartdoc_options.dart';
 import 'package:dartdoc/src/io_utils.dart';
diff --git a/lib/src/model/package_builder.dart b/lib/src/model/package_builder.dart
index bbcac66..0d4be22 100644
--- a/lib/src/model/package_builder.dart
+++ b/lib/src/model/package_builder.dart
@@ -2,15 +2,12 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// ignore_for_file: analyzer_use_new_elements
-
 import 'dart:async';
 
 import 'package:analyzer/dart/analysis/analysis_context.dart';
 import 'package:analyzer/dart/analysis/context_root.dart';
 import 'package:analyzer/dart/analysis/results.dart';
 import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/element2.dart';
 import 'package:analyzer/file_system/file_system.dart';
 // ignore: implementation_imports
@@ -19,7 +16,6 @@
 import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart'
     show AnalysisContextCollectionImpl;
 // ignore: implementation_imports
-import 'package:analyzer/src/dart/element/element.dart';
 // ignore: implementation_imports
 import 'package:analyzer/src/dart/sdk/sdk.dart'
     show EmbedderSdk, FolderBasedDartSdk;
@@ -225,10 +221,10 @@
   /// Discovers and resolves libraries, invoking [addLibrary] with each result.
   ///
   /// Uses [processedLibraries] to prevent calling [addLibrary] more than once
-  /// with the same [LibraryElement]. Adds each [LibraryElement] found to
+  /// with the same [LibraryElement2]. Adds each [LibraryElement2] found to
   /// [processedLibraries].
   Future<void> _discoverLibraries(PackageGraph uninitializedPackageGraph,
-      Set<LibraryElement> processedLibraries, Set<String> files) async {
+      Set<LibraryElement2> processedLibraries, Set<String> files) async {
     files = {...files};
     // Discover Dart libraries in a loop. In each iteration of the loop, we take
     // a set of files (starting with the ones passed into the function), resolve
@@ -276,15 +272,15 @@
           _knownParts.add(file);
           continue;
         }
-        newFiles.addFilesReferencedBy(resolvedLibrary.element);
+        newFiles.addFilesReferencedBy(resolvedLibrary.element2);
         for (var unit in resolvedLibrary.units) {
-          newFiles.addFilesReferencedBy(unit.declaredElement);
+          newFiles.addFilesReferencedByFragment(unit.declaredFragment);
         }
-        if (processedLibraries.contains(resolvedLibrary.element)) {
+        if (processedLibraries.contains(resolvedLibrary.element2)) {
           continue;
         }
         uninitializedPackageGraph.addLibraryToGraph(resolvedLibrary);
-        processedLibraries.add(resolvedLibrary.element);
+        processedLibraries.add(resolvedLibrary.element2);
       }
       files.addAll(newFiles);
       var externals = _includedExternalsFrom(newFiles);
@@ -472,7 +468,7 @@
     var files = await _getFilesToDocument();
 
     logInfo('Discovering libraries...');
-    var foundLibraries = <LibraryElement>{};
+    var foundLibraries = <LibraryElement2>{};
     await _discoverLibraries(
       uninitializedPackageGraph,
       foundLibraries,
@@ -484,9 +480,9 @@
 
   /// Throws an exception if any configured-to-be-included files were not found
   /// while gathering libraries.
-  void _checkForMissingIncludedFiles(Set<LibraryElement> foundLibraries) {
+  void _checkForMissingIncludedFiles(Set<LibraryElement2> foundLibraries) {
     if (_config.include.isNotEmpty) {
-      var knownLibraryNames = foundLibraries.map((l) => l.name);
+      var knownLibraryNames = foundLibraries.map((l) => l.name3);
       var notFound = _config.include
           .difference(Set.of(knownLibraryNames))
           .difference(_config.exclude);
@@ -519,12 +515,11 @@
 /// Contains the [ResolvedLibraryResult] and any additional information about
 /// the library.
 class DartDocResolvedLibrary {
-  final LibraryElement element;
-  LibraryElement2 get element2 => element as LibraryElementImpl;
+  final LibraryElement2 element2;
   final List<CompilationUnit> units;
 
   DartDocResolvedLibrary(ResolvedLibraryResult result)
-      : element = result.element,
+      : element2 = result.element2,
         units = result.units.map((unit) => unit.unit).toList();
 }
 
@@ -532,35 +527,28 @@
   /// Adds [element]'s path and all of its part files' paths to `this`, and
   /// recursively adds the paths of all imported and exported libraries.
   ///
-  /// [element] must be a [LibraryElement] or [CompilationUnitElement].
-  void addFilesReferencedBy(Element? element) {
+  /// [element] must be a [LibraryElement2].
+  void addFilesReferencedBy(LibraryElement2? element) {
     if (element == null) return;
 
-    var path = element.source?.fullName;
-    if (path == null) return;
+    for (var fragment in element.fragments) {
+      addFilesReferencedByFragment(fragment);
+    }
+  }
+
+  void addFilesReferencedByFragment(LibraryFragment? fragment) {
+    if (fragment == null) return;
+
+    var path = fragment.source.fullName;
 
     if (add(path)) {
-      var libraryImports = switch (element) {
-        LibraryElement() => element.definingCompilationUnit.libraryImports,
-        CompilationUnitElement(:var libraryImports) => libraryImports,
-        _ => const <LibraryImportElement>[],
-      };
+      var libraryImports = fragment.libraryImports2;
       for (var import in libraryImports) {
-        addFilesReferencedBy(import.importedLibrary);
+        addFilesReferencedBy(import.importedLibrary2);
       }
-
-      var libraryExports = switch (element) {
-        LibraryElement() => element.definingCompilationUnit.libraryExports,
-        CompilationUnitElement(:var libraryExports) => libraryExports,
-        _ => const <LibraryExportElement>[],
-      };
+      var libraryExports = fragment.libraryExports2;
       for (var export in libraryExports) {
-        addFilesReferencedBy(export.exportedLibrary);
-      }
-      if (element is LibraryElement) {
-        for (var unit in element.units) {
-          addFilesReferencedBy(unit);
-        }
+        addFilesReferencedBy(export.exportedLibrary2);
       }
     }
   }
diff --git a/lib/src/model/package_graph.dart b/lib/src/model/package_graph.dart
index 84d96cc..71bece3 100644
--- a/lib/src/model/package_graph.dart
+++ b/lib/src/model/package_graph.dart
@@ -748,11 +748,11 @@
     // For elements defined in extensions, they are canonical.
     var enclosingElement = e.enclosingElement2;
     if (enclosingElement is ExtensionElement2) {
-      library ??= getModelForElement2(enclosingElement.library2) as Library?;
+      library ??= getModelForElement(enclosingElement.library2) as Library?;
       // TODO(keertip): Find a better way to exclude members of extensions
       // when libraries are specified using the "--include" flag.
       if (library != null && library.isDocumented) {
-        return getModelFor2(e, library,
+        return getModelFor(e, library,
             enclosingContainer: preferredClass);
       }
     }
@@ -764,7 +764,7 @@
         e is MethodElement2 ||
         e is FieldElement2 ||
         e is PropertyAccessorElement2) {
-      var declarationModelElement = getModelForElement2(declaration);
+      var declarationModelElement = getModelForElement(declaration);
       e = declarationModelElement.element2;
       canonicalModelElement = _findCanonicalModelElementForAmbiguous(
           declarationModelElement, library,
@@ -774,15 +774,15 @@
         if (e case PropertyInducingElement2(:var getter2, :var setter2)) {
           var getterElement = getter2 == null
               ? null
-              : getModelFor2(getter2, library) as Accessor;
+              : getModelFor(getter2, library) as Accessor;
           var setterElement = setter2 == null
               ? null
-              : getModelFor2(setter2, library) as Accessor;
-          canonicalModelElement = getModelForPropertyInducingElement2(
+              : getModelFor(setter2, library) as Accessor;
+          canonicalModelElement = getModelForPropertyInducingElement(
               e, library,
               getter: getterElement, setter: setterElement);
         } else {
-          canonicalModelElement = getModelFor2(e, library);
+          canonicalModelElement = getModelFor(e, library);
         }
       }
       assert(canonicalModelElement is! Inheritable);
diff --git a/lib/src/model/parameter.dart b/lib/src/model/parameter.dart
index 3f1cc1c..846683f 100644
--- a/lib/src/model/parameter.dart
+++ b/lib/src/model/parameter.dart
@@ -26,7 +26,7 @@
     final enclosingElement = element2.enclosingElement2;
     return enclosingElement == null
         ? null
-        : getModelFor2(enclosingElement, library);
+        : getModelFor(enclosingElement, library);
   }
 
   bool get hasDefaultValue {
diff --git a/lib/src/model/prefix.dart b/lib/src/model/prefix.dart
index d3acf04..7c2e9aa 100644
--- a/lib/src/model/prefix.dart
+++ b/lib/src/model/prefix.dart
@@ -27,7 +27,7 @@
   // TODO(jcollins-g): consider connecting PrefixElement to the imported library
   // in analyzer?
   late final Library associatedLibrary =
-      getModelForElement2(_getImportedLibraryElement()!) as Library;
+      getModelForElement(_getImportedLibraryElement()!) as Library;
 
   LibraryElement2? _getImportedLibraryElement() {
     final importLists =
diff --git a/lib/src/model/type_parameter.dart b/lib/src/model/type_parameter.dart
index 00ead52..0d7ee63 100644
--- a/lib/src/model/type_parameter.dart
+++ b/lib/src/model/type_parameter.dart
@@ -17,7 +17,7 @@
 
   @override
   ModelElement get enclosingElement =>
-      getModelFor2(element2.enclosingElement2!, library);
+      getModelFor(element2.enclosingElement2!, library);
 
   /// [TypeParameter]s don't have documentation pages, and don't link to the
   /// element on which they are declared.
diff --git a/lib/src/model/typedef.dart b/lib/src/model/typedef.dart
index d6c465f..27f5222 100644
--- a/lib/src/model/typedef.dart
+++ b/lib/src/model/typedef.dart
@@ -63,7 +63,7 @@
 
   @override
   List<TypeParameter> get typeParameters => element2.typeParameters2
-      .map((f) => getModelFor2(f, library) as TypeParameter)
+      .map((f) => getModelFor(f, library) as TypeParameter)
       .toList(growable: false);
 
   @override
diff --git a/test/end2end/model_test.dart b/test/end2end/model_test.dart
index a1fe60a..9729e5d 100644
--- a/test/end2end/model_test.dart
+++ b/test/end2end/model_test.dart
@@ -926,7 +926,7 @@
               .whereType<DirectiveUriWithLibrary>()
               .map((uri) => uri.library2)
         })
-          packageGraph.getModelForElement2(l) as Library
+          packageGraph.getModelForElement(l) as Library
       };
       expect(fakeLibraryImportedExported.any((l) => l.name == 'import_unusual'),
           isTrue);
diff --git a/test/mustachio/foo.runtime_renderers.dart b/test/mustachio/foo.runtime_renderers.dart
index fa39c48..76db488 100644
--- a/test/mustachio/foo.runtime_renderers.dart
+++ b/test/mustachio/foo.runtime_renderers.dart
@@ -8,8 +8,6 @@
 // ignore_for_file: unused_import
 // ignore_for_file: use_super_parameters
 
-// ignore_for_file: analyzer_use_new_elements
-
 import 'package:dartdoc/src/element_type.dart';
 import 'package:dartdoc/src/generator/template_data.dart';
 import 'package:dartdoc/src/model/annotation.dart';
diff --git a/tool/mustachio/codegen_runtime_renderer.dart b/tool/mustachio/codegen_runtime_renderer.dart
index 33db1b9..c54d375 100644
--- a/tool/mustachio/codegen_runtime_renderer.dart
+++ b/tool/mustachio/codegen_runtime_renderer.dart
@@ -89,8 +89,6 @@
 // ignore_for_file: unused_import
 // ignore_for_file: use_super_parameters
 
-// ignore_for_file: analyzer_use_new_elements
-
 import 'package:dartdoc/src/element_type.dart';
 import 'package:dartdoc/src/generator/template_data.dart';
 import 'package:dartdoc/src/model/annotation.dart';