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 da8742a..7c8bc9f 100644
--- a/pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart
@@ -40,7 +40,7 @@
 
   ErrorReporter get _errorReporter => _resolver.errorReporter;
 
-  NullabilitySuffix get _nullabilitySuffixForTypeNames =>
+  NullabilitySuffix get _nullabilitySuffix =>
       _isNonNullableByDefault ? NullabilitySuffix.none : NullabilitySuffix.star;
 
   void resolve(FunctionReferenceImpl node) {
@@ -310,7 +310,7 @@
     );
     var type = element.instantiate(
       typeArguments: typeArguments,
-      nullabilitySuffix: _nullabilitySuffixForTypeNames,
+      nullabilitySuffix: _nullabilitySuffix,
     );
     _resolveTypeLiteral(node: node, instantiatedType: type, name: name);
   }
@@ -783,8 +783,9 @@
       CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS,
     );
     var type = element.instantiate(
-        typeArguments: typeArguments,
-        nullabilitySuffix: _nullabilitySuffixForTypeNames);
+      typeArguments: typeArguments,
+      nullabilitySuffix: _nullabilitySuffix,
+    );
     _resolveTypeLiteral(node: node, instantiatedType: type, name: typeAlias);
   }
 
diff --git a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
index 0fb4f74..2e361ad 100644
--- a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
@@ -63,7 +63,7 @@
   final bool _isNonNullableByDefault;
   final ErrorReporter _errorReporter;
   final AstRewriter _astRewriter;
-  final NamedTypeResolver _typeNameResolver;
+  final NamedTypeResolver _namedTypeResolver;
 
   /// This index is incremented every time we visit a [LibraryDirective].
   /// There is just one [LibraryElement], so we can support only one node.
@@ -103,7 +103,7 @@
       isNonNullableByDefault: isNonNullableByDefault,
     );
 
-    var typeNameResolver = NamedTypeResolver(
+    var namedTypeResolver = NamedTypeResolver(
       libraryElement,
       typeProvider,
       isNonNullableByDefault,
@@ -117,7 +117,7 @@
       isNonNullableByDefault,
       errorReporter,
       AstRewriter(errorReporter, typeProvider),
-      typeNameResolver,
+      namedTypeResolver,
       nameScope,
       elementWalker,
       ElementHolder(unitElement),
@@ -131,7 +131,7 @@
     this._isNonNullableByDefault,
     this._errorReporter,
     this._astRewriter,
-    this._typeNameResolver,
+    this._namedTypeResolver,
     this._nameScope,
     this._elementWalker,
     this._elementHolder,
@@ -218,7 +218,7 @@
   void visitClassDeclaration(covariant ClassDeclarationImpl node) {
     ClassElementImpl element = _elementWalker!.getClass();
     node.name.staticElement = element;
-    _typeNameResolver.enclosingClass = element;
+    _namedTypeResolver.enclosingClass = element;
 
     node.metadata.accept(this);
     _setElementAnnotations(node.metadata, element.metadata);
@@ -247,14 +247,14 @@
       });
     });
 
-    _typeNameResolver.enclosingClass = null;
+    _namedTypeResolver.enclosingClass = null;
   }
 
   @override
   void visitClassTypeAlias(covariant ClassTypeAliasImpl node) {
     ClassElementImpl element = _elementWalker!.getClass();
     node.name.staticElement = element;
-    _typeNameResolver.enclosingClass = element;
+    _namedTypeResolver.enclosingClass = element;
 
     node.metadata.accept(this);
     _setElementAnnotations(node.metadata, element.metadata);
@@ -275,7 +275,7 @@
       });
     });
 
-    _typeNameResolver.enclosingClass = null;
+    _namedTypeResolver.enclosingClass = null;
   }
 
   @override
@@ -885,11 +885,11 @@
   void visitNamedType(covariant NamedTypeImpl node) {
     node.typeArguments?.accept(this);
 
-    _typeNameResolver.nameScope = _nameScope;
-    _typeNameResolver.resolve(node);
+    _namedTypeResolver.nameScope = _nameScope;
+    _namedTypeResolver.resolve(node);
 
-    if (_typeNameResolver.rewriteResult != null) {
-      _typeNameResolver.rewriteResult!.accept(this);
+    if (_namedTypeResolver.rewriteResult != null) {
+      _namedTypeResolver.rewriteResult!.accept(this);
     }
   }
 
@@ -1242,11 +1242,11 @@
     if (redirectedConstructor == null) return;
 
     var namedType = redirectedConstructor.type2;
-    _typeNameResolver.redirectedConstructor_namedType = namedType;
+    _namedTypeResolver.redirectedConstructor_namedType = namedType;
 
     redirectedConstructor.accept(this);
 
-    _typeNameResolver.redirectedConstructor_namedType = null;
+    _namedTypeResolver.redirectedConstructor_namedType = null;
   }
 
   /// Return the [InterfaceType] of the given [namedType].
@@ -1258,11 +1258,11 @@
   /// classes).
   void _resolveType(NamedTypeImpl namedType, ErrorCode errorCode,
       {bool asClass = false}) {
-    _typeNameResolver.classHierarchy_namedType = namedType;
+    _namedTypeResolver.classHierarchy_namedType = namedType;
     visitNamedType(namedType);
-    _typeNameResolver.classHierarchy_namedType = null;
+    _namedTypeResolver.classHierarchy_namedType = null;
 
-    if (_typeNameResolver.hasErrorReported) {
+    if (_namedTypeResolver.hasErrorReported) {
       return;
     }
 
@@ -1303,12 +1303,12 @@
     if (clause == null) return;
 
     for (var namedType in clause.mixinTypes2) {
-      _typeNameResolver.withClause_namedType = namedType;
+      _namedTypeResolver.withClause_namedType = namedType;
       _resolveType(
         namedType as NamedTypeImpl,
         CompileTimeErrorCode.MIXIN_OF_NON_CLASS,
       );
-      _typeNameResolver.withClause_namedType = null;
+      _namedTypeResolver.withClause_namedType = null;
     }
   }
 
diff --git a/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart b/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
index d722db43..5b96cb5 100644
--- a/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
@@ -1100,6 +1100,42 @@
               : TokenFactory.tokenFromType(TokenType.COLON),
           expression);
 
+  /// Create a type name whose name has been resolved to the given [element] and
+  /// whose type has been resolved to the type of the given element.
+  ///
+  /// <b>Note:</b> This method does not correctly handle class elements that
+  /// have type parameters.
+  static NamedTypeImpl namedType(ClassElement element,
+      [List<TypeAnnotation>? arguments]) {
+    var name = identifier3(element.name);
+    name.staticElement = element;
+    var typeName = namedType3(name, arguments);
+    typeName.type = element.instantiate(
+      typeArguments: List.filled(
+        element.typeParameters.length,
+        DynamicTypeImpl.instance,
+      ),
+      nullabilitySuffix: NullabilitySuffix.star,
+    );
+    return typeName;
+  }
+
+  static NamedTypeImpl namedType3(Identifier name,
+          [List<TypeAnnotation>? arguments]) =>
+      astFactory.namedType(
+        name: name,
+        typeArguments: typeArgumentList(arguments),
+      );
+
+  static NamedTypeImpl namedType4(String name,
+          [List<TypeAnnotation>? arguments, bool question = false]) =>
+      astFactory.namedType(
+        name: identifier3(name),
+        typeArguments: typeArgumentList(arguments),
+        question:
+            question ? TokenFactory.tokenFromType(TokenType.QUESTION) : null,
+      );
+
   static NativeClauseImpl nativeClause(String nativeCode) =>
       astFactory.nativeClause(
           TokenFactory.tokenFromString("native"), string2(nativeCode));
@@ -1422,42 +1458,6 @@
         types, TokenFactory.tokenFromType(TokenType.GT));
   }
 
-  /// Create a type name whose name has been resolved to the given [element] and
-  /// whose type has been resolved to the type of the given element.
-  ///
-  /// <b>Note:</b> This method does not correctly handle class elements that
-  /// have type parameters.
-  static NamedTypeImpl typeName(ClassElement element,
-      [List<TypeAnnotation>? arguments]) {
-    var name = identifier3(element.name);
-    name.staticElement = element;
-    var typeName = typeName3(name, arguments);
-    typeName.type = element.instantiate(
-      typeArguments: List.filled(
-        element.typeParameters.length,
-        DynamicTypeImpl.instance,
-      ),
-      nullabilitySuffix: NullabilitySuffix.star,
-    );
-    return typeName;
-  }
-
-  static NamedTypeImpl typeName3(Identifier name,
-          [List<TypeAnnotation>? arguments]) =>
-      astFactory.namedType(
-        name: name,
-        typeArguments: typeArgumentList(arguments),
-      );
-
-  static NamedTypeImpl typeName4(String name,
-          [List<TypeAnnotation>? arguments, bool question = false]) =>
-      astFactory.namedType(
-        name: identifier3(name),
-        typeArguments: typeArgumentList(arguments),
-        question:
-            question ? TokenFactory.tokenFromType(TokenType.QUESTION) : null,
-      );
-
   static TypeParameterImpl typeParameter(String name) =>
       astFactory.typeParameter(null, null, identifier3(name), null, null);
 
diff --git a/pkg/analyzer/lib/src/generated/testing/element_factory.dart b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
index a33890a..dec8133 100644
--- a/pkg/analyzer/lib/src/generated/testing/element_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
@@ -358,7 +358,7 @@
           ConstTopLevelVariableElementImpl(name, -1);
       var typeElement = type.element as ClassElement;
       var initializer = AstTestFactory.instanceCreationExpression2(
-          Keyword.CONST, AstTestFactory.typeName(typeElement));
+          Keyword.CONST, AstTestFactory.namedType(typeElement));
       if (type is InterfaceType) {
         var element = typeElement.unnamedConstructor;
         initializer.constructorName.staticElement = element;
diff --git a/pkg/analyzer/test/dart/ast/ast_test.dart b/pkg/analyzer/test/dart/ast/ast_test.dart
index 4718ea0..f696f9e 100644
--- a/pkg/analyzer/test/dart/ast/ast_test.dart
+++ b/pkg/analyzer/test/dart/ast/ast_test.dart
@@ -122,8 +122,8 @@
                 "A",
                 null,
                 null,
-                AstTestFactory.typeName4('B'),
-                AstTestFactory.withClause([AstTestFactory.typeName4('M')]),
+                AstTestFactory.namedType4('B'),
+                AstTestFactory.withClause([AstTestFactory.namedType4('M')]),
                 null)
             .isAbstract,
         isFalse);
@@ -132,8 +132,8 @@
                 "B",
                 null,
                 Keyword.ABSTRACT,
-                AstTestFactory.typeName4('A'),
-                AstTestFactory.withClause([AstTestFactory.typeName4('M')]),
+                AstTestFactory.namedType4('A'),
+                AstTestFactory.withClause([AstTestFactory.namedType4('M')]),
                 null)
             .isAbstract,
         isTrue);
@@ -1142,7 +1142,7 @@
 
   void test_isQualified_inConstructorName() {
     ConstructorName constructor = AstTestFactory.constructorName(
-        AstTestFactory.typeName4('MyClass'), "test");
+        AstTestFactory.namedType4('MyClass'), "test");
     SimpleIdentifier name = constructor.name!;
     expect(name.isQualified, isTrue);
   }
diff --git a/pkg/analyzer/test/generated/element_resolver_test.dart b/pkg/analyzer/test/generated/element_resolver_test.dart
index a82b0a3..a018a3e 100644
--- a/pkg/analyzer/test/generated/element_resolver_test.dart
+++ b/pkg/analyzer/test/generated/element_resolver_test.dart
@@ -444,7 +444,7 @@
         ElementFactory.constructorElement2(classA, constructorName);
     classA.constructors = <ConstructorElement>[constructor];
     ConstructorName name = AstTestFactory.constructorName(
-        AstTestFactory.typeName(classA), constructorName);
+        AstTestFactory.namedType(classA), constructorName);
     _resolveNode(name);
     expect(name.staticElement, same(constructor));
     _listener.assertNoErrors();
@@ -458,7 +458,7 @@
         ElementFactory.constructorElement2(classA, constructorName);
     classA.constructors = <ConstructorElement>[constructor];
     ConstructorName name = AstTestFactory.constructorName(
-        AstTestFactory.typeName(classA), constructorName);
+        AstTestFactory.namedType(classA), constructorName);
     _resolveNode(name);
     expect(name.staticElement, same(constructor));
     _listener.assertNoErrors();
@@ -573,7 +573,7 @@
         ElementFactory.constructorElement2(classA, constructorName);
     classA.constructors = <ConstructorElement>[constructor];
     var name = AstTestFactory.constructorName(
-        AstTestFactory.typeName(classA), constructorName);
+        AstTestFactory.namedType(classA), constructorName);
     name.staticElement = constructor;
     InstanceCreationExpression creation =
         AstTestFactory.instanceCreationExpression(Keyword.NEW, name);
@@ -588,7 +588,7 @@
         ElementFactory.constructorElement2(classA, constructorName);
     classA.constructors = <ConstructorElement>[constructor];
     var name = AstTestFactory.constructorName(
-        AstTestFactory.typeName(classA), constructorName);
+        AstTestFactory.namedType(classA), constructorName);
     name.staticElement = constructor;
     InstanceCreationExpression creation =
         AstTestFactory.instanceCreationExpression(Keyword.NEW, name);
@@ -607,7 +607,7 @@
     constructor.parameters = <ParameterElement>[parameter];
     classA.constructors = <ConstructorElement>[constructor];
     var name = AstTestFactory.constructorName(
-        AstTestFactory.typeName(classA), constructorName);
+        AstTestFactory.namedType(classA), constructorName);
     name.staticElement = constructor;
     InstanceCreationExpression creation =
         AstTestFactory.instanceCreationExpression(Keyword.NEW, name, [
diff --git a/pkg/analyzer/test/generated/static_type_analyzer_test.dart b/pkg/analyzer/test/generated/static_type_analyzer_test.dart
index affcebc..6d3741a 100644
--- a/pkg/analyzer/test/generated/static_type_analyzer_test.dart
+++ b/pkg/analyzer/test/generated/static_type_analyzer_test.dart
@@ -230,7 +230,7 @@
     InterfaceType superclassType = interfaceTypeStar(superclass);
     ClassElement subclass = ElementFactory.classElement("B", superclassType);
     Expression node = AstTestFactory.asExpression(
-        AstTestFactory.thisExpression(), AstTestFactory.typeName(subclass));
+        AstTestFactory.thisExpression(), AstTestFactory.namedType(subclass));
     expect(_analyze(node, superclassType), interfaceTypeStar(subclass));
     _listener.assertNoErrors();
   }
@@ -315,7 +315,7 @@
     InstanceCreationExpression node =
         AstTestFactory.instanceCreationExpression2(
             null,
-            AstTestFactory.typeName(classElement),
+            AstTestFactory.namedType(classElement),
             [AstTestFactory.identifier3(constructorName)]);
     expect(_analyze(node), interfaceTypeStar(classElement));
     _listener.assertNoErrors();
@@ -328,8 +328,8 @@
     ConstructorElementImpl constructor =
         ElementFactory.constructorElement2(elementC, null);
     elementC.constructors = <ConstructorElement>[constructor];
-    var typeName =
-        AstTestFactory.typeName(elementC, [AstTestFactory.typeName(elementI)]);
+    var typeName = AstTestFactory.namedType(
+        elementC, [AstTestFactory.namedType(elementI)]);
     typeName.type = interfaceTypeStar(elementC,
         typeArguments: [interfaceTypeStar(elementI)]);
     InstanceCreationExpression node =
@@ -349,7 +349,7 @@
     classElement.constructors = <ConstructorElement>[constructor];
     InstanceCreationExpression node =
         AstTestFactory.instanceCreationExpression2(
-            null, AstTestFactory.typeName(classElement));
+            null, AstTestFactory.namedType(classElement));
     expect(_analyze(node), interfaceTypeStar(classElement));
     _listener.assertNoErrors();
   }
@@ -365,7 +365,7 @@
   void test_visitIsExpression_negated() {
     // a is! String
     Expression node = AstTestFactory.isExpression(
-        _resolvedString("a"), true, AstTestFactory.typeName4("String"));
+        _resolvedString("a"), true, AstTestFactory.namedType4("String"));
     expect(_analyze(node), same(_typeProvider.boolType));
     _listener.assertNoErrors();
   }
@@ -373,7 +373,7 @@
   void test_visitIsExpression_notNegated() {
     // a is String
     Expression node = AstTestFactory.isExpression(
-        _resolvedString("a"), false, AstTestFactory.typeName4("String"));
+        _resolvedString("a"), false, AstTestFactory.namedType4("String"));
     expect(_analyze(node), same(_typeProvider.boolType));
     _listener.assertNoErrors();
   }
diff --git a/pkg/analyzer/test/generated/utilities_test.dart b/pkg/analyzer/test/generated/utilities_test.dart
index 95aa605..8094962 100644
--- a/pkg/analyzer/test/generated/utilities_test.dart
+++ b/pkg/analyzer/test/generated/utilities_test.dart
@@ -1399,7 +1399,7 @@
         AstTestFactory.identifier3("c"),
         AstTestFactory.argumentList([AstTestFactory.integer(0)]),
         typeArguments:
-            AstTestFactory.typeArgumentList2([AstTestFactory.typeName4('T')]));
+            AstTestFactory.typeArgumentList2([AstTestFactory.namedType4('T')]));
     _assertReplace(node, Getter_NodeReplacerTest_test_annotation());
     _assertReplace(node, Getter_NodeReplacerTest_test_annotation_3());
     _assertReplace(node, Getter_NodeReplacerTest_test_annotation_2());
@@ -1414,8 +1414,8 @@
   void test_asExpression() {
     AsExpression node = AstTestFactory.asExpression(
         AstTestFactory.integer(0),
-        AstTestFactory.typeName3(
-            AstTestFactory.identifier3("a"), [AstTestFactory.typeName4("C")]));
+        AstTestFactory.namedType3(
+            AstTestFactory.identifier3("a"), [AstTestFactory.namedType4("C")]));
     _assertReplace(node, Getter_NodeReplacerTest_test_asExpression_2());
     _assertReplace(node, Getter_NodeReplacerTest_test_asExpression());
   }
@@ -1476,7 +1476,7 @@
 
   void test_catchClause() {
     CatchClause node = AstTestFactory.catchClause5(
-        AstTestFactory.typeName4("E"),
+        AstTestFactory.namedType4("E"),
         "e",
         "s",
         [AstTestFactory.emptyStatement()]);
@@ -1490,9 +1490,9 @@
         null,
         "A",
         AstTestFactory.typeParameterList(["E"]),
-        AstTestFactory.extendsClause(AstTestFactory.typeName4("B")),
-        AstTestFactory.withClause([AstTestFactory.typeName4("C")]),
-        AstTestFactory.implementsClause([AstTestFactory.typeName4("D")]), [
+        AstTestFactory.extendsClause(AstTestFactory.namedType4("B")),
+        AstTestFactory.withClause([AstTestFactory.namedType4("C")]),
+        AstTestFactory.implementsClause([AstTestFactory.namedType4("D")]), [
       AstTestFactory.fieldDeclaration2(
           false, null, [AstTestFactory.variableDeclaration("f")])
     ]);
@@ -1515,9 +1515,9 @@
         "A",
         AstTestFactory.typeParameterList(["E"]),
         null,
-        AstTestFactory.typeName4("B"),
-        AstTestFactory.withClause([AstTestFactory.typeName4("C")]),
-        AstTestFactory.implementsClause([AstTestFactory.typeName4("D")]));
+        AstTestFactory.namedType4("B"),
+        AstTestFactory.withClause([AstTestFactory.namedType4("C")]),
+        AstTestFactory.implementsClause([AstTestFactory.namedType4("D")]));
     node.documentationComment = astFactory.endOfLineComment(EMPTY_TOKEN_LIST);
     node.metadata
         .add(AstTestFactory.annotation(AstTestFactory.identifier3("a")));
@@ -1582,7 +1582,7 @@
     node.metadata
         .add(AstTestFactory.annotation(AstTestFactory.identifier3("a")));
     node.redirectedConstructor =
-        AstTestFactory.constructorName(AstTestFactory.typeName4("B"), "a");
+        AstTestFactory.constructorName(AstTestFactory.namedType4("B"), "a");
     _assertReplace(
         node, Getter_NodeReplacerTest_test_constructorDeclaration_3());
     _assertReplace(
@@ -1609,7 +1609,7 @@
 
   void test_constructorName() {
     ConstructorName node =
-        AstTestFactory.constructorName(AstTestFactory.typeName4("C"), "n");
+        AstTestFactory.constructorName(AstTestFactory.namedType4("C"), "n");
     _assertReplace(node, Getter_NodeReplacerTest_test_constructorName());
     _assertReplace(node, Getter_NodeReplacerTest_test_constructorName_2());
   }
@@ -1621,7 +1621,7 @@
 
   void test_declaredIdentifier() {
     var node =
-        AstTestFactory.declaredIdentifier4(AstTestFactory.typeName4("C"), "i");
+        AstTestFactory.declaredIdentifier4(AstTestFactory.namedType4("C"), "i");
     node.documentationComment = astFactory.endOfLineComment(EMPTY_TOKEN_LIST);
     node.metadata
         .add(AstTestFactory.annotation(AstTestFactory.identifier3("a")));
@@ -1688,7 +1688,7 @@
 
   void test_extendsClause() {
     ExtendsClause node =
-        AstTestFactory.extendsClause(AstTestFactory.typeName4("S"));
+        AstTestFactory.extendsClause(AstTestFactory.namedType4("S"));
     _assertReplace(node, Getter_NodeReplacerTest_test_extendsClause());
   }
 
@@ -1696,7 +1696,7 @@
     var node = AstTestFactory.fieldDeclaration(
         false,
         null,
-        AstTestFactory.typeName4("C"),
+        AstTestFactory.namedType4("C"),
         [AstTestFactory.variableDeclaration("c")]);
     node.documentationComment = astFactory.endOfLineComment(EMPTY_TOKEN_LIST);
     node.metadata
@@ -1708,7 +1708,7 @@
   void test_fieldFormalParameter() {
     var node = AstTestFactory.fieldFormalParameter(
         null,
-        AstTestFactory.typeName4("C"),
+        AstTestFactory.namedType4("C"),
         "f",
         AstTestFactory.formalParameterList());
     node.documentationComment = astFactory.endOfLineComment(EMPTY_TOKEN_LIST);
@@ -1789,7 +1789,7 @@
 
   void test_functionDeclaration() {
     var node = AstTestFactory.functionDeclaration(
-        AstTestFactory.typeName4("R"),
+        AstTestFactory.namedType4("R"),
         null,
         "f",
         AstTestFactory.functionExpression2(AstTestFactory.formalParameterList(),
@@ -1806,7 +1806,7 @@
   void test_functionDeclarationStatement() {
     FunctionDeclarationStatement node =
         AstTestFactory.functionDeclarationStatement(
-            AstTestFactory.typeName4("R"),
+            AstTestFactory.namedType4("R"),
             null,
             "f",
             AstTestFactory.functionExpression2(
@@ -1836,7 +1836,7 @@
 
   void test_functionTypeAlias() {
     var node = AstTestFactory.typeAlias(
-        AstTestFactory.typeName4("R"),
+        AstTestFactory.namedType4("R"),
         "F",
         AstTestFactory.typeParameterList(["E"]),
         AstTestFactory.formalParameterList());
@@ -1852,7 +1852,7 @@
 
   void test_functionTypedFormalParameter() {
     var node = AstTestFactory.functionTypedFormalParameter(
-        AstTestFactory.typeName4("R"),
+        AstTestFactory.namedType4("R"),
         "f",
         [AstTestFactory.simpleFormalParameter3("p")]);
     node.documentationComment = astFactory.endOfLineComment(EMPTY_TOKEN_LIST);
@@ -1883,7 +1883,7 @@
 
   void test_implementsClause() {
     ImplementsClause node = AstTestFactory.implementsClause(
-        [AstTestFactory.typeName4("I"), AstTestFactory.typeName4("J")]);
+        [AstTestFactory.namedType4("I"), AstTestFactory.namedType4("J")]);
     _assertReplace(node, ListGetter_NodeReplacerTest_test_implementsClause(0));
   }
 
@@ -1911,7 +1911,7 @@
   void test_instanceCreationExpression() {
     InstanceCreationExpression node =
         AstTestFactory.instanceCreationExpression3(null,
-            AstTestFactory.typeName4("C"), "c", [AstTestFactory.integer(2)]);
+            AstTestFactory.namedType4("C"), "c", [AstTestFactory.integer(2)]);
     _assertReplace(
         node, Getter_NodeReplacerTest_test_instanceCreationExpression_2());
     _assertReplace(
@@ -1926,7 +1926,7 @@
 
   void test_isExpression() {
     IsExpression node = AstTestFactory.isExpression(
-        AstTestFactory.identifier3("v"), false, AstTestFactory.typeName4("T"));
+        AstTestFactory.identifier3("v"), false, AstTestFactory.namedType4("T"));
     _assertReplace(node, Getter_NodeReplacerTest_test_isExpression());
     _assertReplace(node, Getter_NodeReplacerTest_test_isExpression_2());
   }
@@ -1960,7 +1960,7 @@
   void test_listLiteral() {
     ListLiteral node = AstTestFactory.listLiteral2(
         null,
-        AstTestFactory.typeArgumentList([AstTestFactory.typeName4("E")]),
+        AstTestFactory.typeArgumentList([AstTestFactory.namedType4("E")]),
         [AstTestFactory.identifier3("e")]);
     _assertReplace(node, ListGetter_NodeReplacerTest_test_listLiteral(0));
     _testTypedLiteral(node);
@@ -1969,7 +1969,7 @@
   void test_mapLiteral() {
     SetOrMapLiteral node = AstTestFactory.setOrMapLiteral(
         null,
-        AstTestFactory.typeArgumentList([AstTestFactory.typeName4("E")]),
+        AstTestFactory.typeArgumentList([AstTestFactory.namedType4("E")]),
         [AstTestFactory.mapLiteralEntry("k", AstTestFactory.identifier3("v"))]);
     _assertReplace(node, ListGetter_NodeReplacerTest_test_mapLiteral(0));
     _testTypedLiteral(node);
@@ -1985,7 +1985,7 @@
   void test_methodDeclaration() {
     var node = AstTestFactory.methodDeclaration2(
         null,
-        AstTestFactory.typeName4("A"),
+        AstTestFactory.namedType4("A"),
         null,
         null,
         AstTestFactory.identifier3("m"),
@@ -2099,7 +2099,7 @@
 
   void test_simpleFormalParameter() {
     var node = AstTestFactory.simpleFormalParameter4(
-        AstTestFactory.typeName4("T"), "p");
+        AstTestFactory.namedType4("T"), "p");
     node.documentationComment = astFactory.endOfLineComment(EMPTY_TOKEN_LIST);
     node.metadata = [
       AstTestFactory.annotation(AstTestFactory.identifier3("a"))
@@ -2161,7 +2161,7 @@
   void test_topLevelVariableDeclaration() {
     var node = AstTestFactory.topLevelVariableDeclaration(
         null,
-        AstTestFactory.typeName4("T"),
+        AstTestFactory.namedType4("T"),
         [AstTestFactory.variableDeclaration("t")]);
     node.documentationComment = astFactory.endOfLineComment(EMPTY_TOKEN_LIST);
     node.metadata
@@ -2185,20 +2185,20 @@
 
   void test_typeArgumentList() {
     TypeArgumentList node =
-        AstTestFactory.typeArgumentList2([AstTestFactory.typeName4("A")]);
+        AstTestFactory.typeArgumentList2([AstTestFactory.namedType4("A")]);
     _assertReplace(node, ListGetter_NodeReplacerTest_test_typeArgumentList(0));
   }
 
   void test_typeName() {
-    NamedType node = AstTestFactory.typeName4(
-        "T", [AstTestFactory.typeName4("E"), AstTestFactory.typeName4("F")]);
+    NamedType node = AstTestFactory.namedType4(
+        "T", [AstTestFactory.namedType4("E"), AstTestFactory.namedType4("F")]);
     _assertReplace(node, Getter_NodeReplacerTest_test_typeName_2());
     _assertReplace(node, Getter_NodeReplacerTest_test_typeName());
   }
 
   void test_typeParameter() {
     TypeParameter node =
-        AstTestFactory.typeParameter2("E", AstTestFactory.typeName4("B"));
+        AstTestFactory.typeParameter2("E", AstTestFactory.namedType4("B"));
     _assertReplace(node, Getter_NodeReplacerTest_test_typeParameter_2());
     _assertReplace(node, Getter_NodeReplacerTest_test_typeParameter());
   }
@@ -2222,7 +2222,7 @@
   void test_variableDeclarationList() {
     var node = AstTestFactory.variableDeclarationList(
         null,
-        AstTestFactory.typeName4("T"),
+        AstTestFactory.namedType4("T"),
         [AstTestFactory.variableDeclaration("a")]);
     node.documentationComment = astFactory.endOfLineComment(EMPTY_TOKEN_LIST);
     node.metadata
@@ -2238,7 +2238,7 @@
     VariableDeclarationStatement node =
         AstTestFactory.variableDeclarationStatement(
             null,
-            AstTestFactory.typeName4("T"),
+            AstTestFactory.namedType4("T"),
             [AstTestFactory.variableDeclaration("a")]);
     _assertReplace(
         node, Getter_NodeReplacerTest_test_variableDeclarationStatement());
@@ -2253,7 +2253,7 @@
 
   void test_withClause() {
     WithClause node =
-        AstTestFactory.withClause([AstTestFactory.typeName4("M")]);
+        AstTestFactory.withClause([AstTestFactory.namedType4("M")]);
     _assertReplace(node, ListGetter_NodeReplacerTest_test_withClause(0));
   }
 
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
index 65e9392..d9bdc60 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
@@ -51,7 +51,7 @@
       TypeArgumentList argumentList, List<DartType> expectedTypes) {
     expect(argumentList.arguments, hasLength(expectedTypes.length));
     for (int i = 0; i < expectedTypes.length; i++) {
-      _assertTypeNameSimple(argumentList.arguments[i], expectedTypes[i]);
+      _assertNamedTypeSimple(argumentList.arguments[i], expectedTypes[i]);
     }
   }
 
@@ -1804,11 +1804,11 @@
       expect(type.parameters[0].type, typeProvider.intType);
     }
 
-    _assertTypeNameSimple(p.returnType!, typeProvider.stringType);
+    _assertNamedTypeSimple(p.returnType!, typeProvider.stringType);
 
     {
       var a = p.parameters.parameters[0] as SimpleFormalParameter;
-      _assertTypeNameSimple(a.type!, typeProvider.intType);
+      _assertNamedTypeSimple(a.type!, typeProvider.intType);
       expect(a.identifier!.staticType, isNull);
     }
   }
@@ -1850,11 +1850,11 @@
       expect(type.parameters[0].type, typeProvider.intType);
     }
 
-    _assertTypeNameSimple(p.type!, typeProvider.stringType);
+    _assertNamedTypeSimple(p.type!, typeProvider.stringType);
 
     {
       var a = p.parameters!.parameters[0] as SimpleFormalParameter;
-      _assertTypeNameSimple(a.type!, typeProvider.intType);
+      _assertNamedTypeSimple(a.type!, typeProvider.intType);
       expect(a.identifier!.staticType, isNull);
     }
   }
@@ -1912,7 +1912,7 @@
     expect(parameterElement.field, same(fElement));
 
     var parameterNode = parameters[0] as FieldFormalParameter;
-    _assertTypeNameSimple(parameterNode.type!, typeProvider.intType);
+    _assertNamedTypeSimple(parameterNode.type!, typeProvider.intType);
     expect(parameterNode.declaredElement, same(parameterElement));
 
     expect(parameterNode.identifier.staticElement, same(parameterElement));
@@ -1980,7 +1980,7 @@
 
     List<TypeAnnotation> typeArguments = invocation.typeArguments!.arguments;
     expect(typeArguments, hasLength(1));
-    _assertTypeNameSimple(typeArguments[0], typeProvider.stringType);
+    _assertNamedTypeSimple(typeArguments[0], typeProvider.stringType);
   }
 
   test_functionExpressionInvocation_namedArgument() async {
@@ -2307,7 +2307,7 @@
 
       NamedType namedType = constructorName.type2;
       expect(namedType.typeArguments!.arguments, hasLength(1));
-      _assertTypeNameSimple(
+      _assertNamedTypeSimple(
           namedType.typeArguments!.arguments[0], typeProvider.boolType);
 
       var typeIdentifier = namedType.name as PrefixedIdentifier;
@@ -2384,7 +2384,7 @@
 
       NamedType namedType = constructorName.type2;
       expect(namedType.typeArguments!.arguments, hasLength(1));
-      _assertTypeNameSimple(
+      _assertNamedTypeSimple(
           namedType.typeArguments!.arguments[0], typeProvider.boolType);
 
       var typeIdentifier = namedType.name as SimpleIdentifier;
@@ -2432,7 +2432,7 @@
 
       NamedType namedType = constructorName.type2;
       expect(namedType.typeArguments!.arguments, hasLength(1));
-      _assertTypeNameSimple(
+      _assertNamedTypeSimple(
           namedType.typeArguments!.arguments[0], typeProvider.boolType);
 
       var typeIdentifier = namedType.name as SimpleIdentifier;
@@ -4906,10 +4906,10 @@
     LocalVariableElement vElement = vNode.declaredElement!;
     expect(vElement.type, typeProvider.numType);
 
-    var vTypeName = vNode.type as NamedType;
-    expect(vTypeName.type, typeProvider.numType);
+    var vNamedType = vNode.type as NamedType;
+    expect(vNamedType.type, typeProvider.numType);
 
-    var vTypeIdentifier = vTypeName.name as SimpleIdentifier;
+    var vTypeIdentifier = vNamedType.name as SimpleIdentifier;
     expect(vTypeIdentifier.staticElement, typeProvider.numType.element);
     expect(vTypeIdentifier.staticType, isNull);
 
@@ -7439,7 +7439,7 @@
       expect(bElement.type, typeProvider.doubleType);
 
       var namedType = bDeclaration.variables.type as NamedType;
-      _assertTypeNameSimple(namedType, typeProvider.doubleType);
+      _assertNamedTypeSimple(namedType, typeProvider.doubleType);
 
       expect(bNode.name.staticElement, same(bElement));
       expect(bNode.name.staticType, isNull);
@@ -7579,7 +7579,7 @@
     expect(aliasElement, same(findElement.typeAlias('F')));
     expect(function.returnType, typeProvider.intType);
 
-    _assertTypeNameSimple(alias.returnType as NamedType, typeProvider.intType);
+    _assertNamedTypeSimple(alias.returnType as NamedType, typeProvider.intType);
 
     _assertSimpleParameter(
         alias.parameters.parameters[0] as SimpleFormalParameter,
@@ -7645,10 +7645,10 @@
       expect(listIdentifier.staticElement, same(listElement));
       expect(listIdentifier.staticType, isNull);
 
-      var aTypeName = bound.typeArguments!.arguments[0] as NamedType;
-      expect(aTypeName.type, interfaceTypeNone(aElement));
+      var aNamedType = bound.typeArguments!.arguments[0] as NamedType;
+      expect(aNamedType.type, interfaceTypeNone(aElement));
 
-      var aIdentifier = aTypeName.name as SimpleIdentifier;
+      var aIdentifier = aNamedType.name as SimpleIdentifier;
       expect(aIdentifier.staticElement, same(aElement));
       expect(aIdentifier.staticType, isNull);
     }
@@ -7717,7 +7717,7 @@
     {
       var statement = statements[1] as TryStatement;
       CatchClause catchClause = statement.catchClauses[0];
-      _assertTypeNameSimple(
+      _assertNamedTypeSimple(
           catchClause.exceptionType as NamedType, typeProvider.intType);
 
       var exceptionNode = catchClause.exceptionParameter as SimpleIdentifier;
@@ -7760,7 +7760,7 @@
     {
       var statement = statements[3] as TryStatement;
       CatchClause catchClause = statement.catchClauses[0];
-      _assertTypeNameSimple(catchClause.exceptionType!, typeProvider.intType);
+      _assertNamedTypeSimple(catchClause.exceptionType!, typeProvider.intType);
       expect(catchClause.stackTraceParameter, isNull);
 
       var exceptionNode = catchClause.exceptionParameter as SimpleIdentifier;
@@ -7773,7 +7773,7 @@
     {
       var statement = statements[4] as TryStatement;
       CatchClause catchClause = statement.catchClauses[0];
-      _assertTypeNameSimple(
+      _assertNamedTypeSimple(
           catchClause.exceptionType as NamedType, typeProvider.intType);
       expect(catchClause.exceptionParameter, isNull);
       expect(catchClause.stackTraceParameter, isNull);
@@ -7821,7 +7821,7 @@
 
     List<TypeAnnotation> typeArguments = namedType.typeArguments!.arguments;
     expect(typeArguments, hasLength(1));
-    _assertTypeNameSimple(typeArguments[0], typeProvider.intType);
+    _assertNamedTypeSimple(typeArguments[0], typeProvider.intType);
   }
 
   test_type_void() async {
@@ -8657,6 +8657,15 @@
     }
   }
 
+  void _assertNamedTypeSimple(TypeAnnotation namedType, DartType type) {
+    namedType as NamedType;
+    expect(namedType.type, type);
+
+    var identifier = namedType.name as SimpleIdentifier;
+    expect(identifier.staticElement, same(type.element));
+    expect(identifier.staticType, isNull);
+  }
+
   void _assertParameterElement(ParameterElement element,
       {String? name, int? offset, ParameterKind? kind, DartType? type}) {
     expect(element, isNotNull);
@@ -8688,15 +8697,6 @@
     }
   }
 
-  void _assertTypeNameSimple(TypeAnnotation namedType, DartType type) {
-    namedType as NamedType;
-    expect(namedType.type, type);
-
-    var identifier = namedType.name as SimpleIdentifier;
-    expect(identifier.staticElement, same(type.element));
-    expect(identifier.staticType, isNull);
-  }
-
   List<Statement> _getMainStatements(ResolvedUnitResult result) {
     for (var declaration in result.unit.declarations) {
       if (declaration is FunctionDeclaration &&
diff --git a/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart b/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart
index 70b153a..68d3331 100644
--- a/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart
+++ b/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart
@@ -46,7 +46,7 @@
         AstTestFactory.annotation2(AstTestFactory.identifier3("A"),
             AstTestFactory.identifier3("c"), AstTestFactory.argumentList(),
             typeArguments: AstTestFactory.typeArgumentList2(
-                [AstTestFactory.typeName4('T')])));
+                [AstTestFactory.namedType4('T')])));
   }
 
   void test_visitArgumentList() {
@@ -62,7 +62,7 @@
     _assertSource(
         "e as T",
         AstTestFactory.asExpression(
-            AstTestFactory.identifier3("e"), AstTestFactory.typeName4("T")));
+            AstTestFactory.identifier3("e"), AstTestFactory.namedType4("T")));
   }
 
   void test_visitAssertStatement() {
@@ -193,12 +193,12 @@
 
   void test_visitCatchClause_on() {
     _assertSource(
-        "on E {}", AstTestFactory.catchClause3(AstTestFactory.typeName4("E")));
+        "on E {}", AstTestFactory.catchClause3(AstTestFactory.namedType4("E")));
   }
 
   void test_visitCatchClause_on_catch() {
     _assertSource("on E catch (e) {}",
-        AstTestFactory.catchClause4(AstTestFactory.typeName4("E"), "e"));
+        AstTestFactory.catchClause4(AstTestFactory.namedType4("E"), "e"));
   }
 
   void test_visitClassDeclaration_abstract() {
@@ -220,7 +220,7 @@
             null,
             "C",
             null,
-            AstTestFactory.extendsClause(AstTestFactory.typeName4("A")),
+            AstTestFactory.extendsClause(AstTestFactory.namedType4("A")),
             null,
             null));
   }
@@ -232,9 +232,9 @@
             null,
             "C",
             null,
-            AstTestFactory.extendsClause(AstTestFactory.typeName4("A")),
+            AstTestFactory.extendsClause(AstTestFactory.namedType4("A")),
             null,
-            AstTestFactory.implementsClause([AstTestFactory.typeName4("B")])));
+            AstTestFactory.implementsClause([AstTestFactory.namedType4("B")])));
   }
 
   void test_visitClassDeclaration_extends_with() {
@@ -244,8 +244,8 @@
             null,
             "C",
             null,
-            AstTestFactory.extendsClause(AstTestFactory.typeName4("A")),
-            AstTestFactory.withClause([AstTestFactory.typeName4("M")]),
+            AstTestFactory.extendsClause(AstTestFactory.namedType4("A")),
+            AstTestFactory.withClause([AstTestFactory.namedType4("M")]),
             null));
   }
 
@@ -256,16 +256,16 @@
             null,
             "C",
             null,
-            AstTestFactory.extendsClause(AstTestFactory.typeName4("A")),
-            AstTestFactory.withClause([AstTestFactory.typeName4("M")]),
-            AstTestFactory.implementsClause([AstTestFactory.typeName4("B")])));
+            AstTestFactory.extendsClause(AstTestFactory.namedType4("A")),
+            AstTestFactory.withClause([AstTestFactory.namedType4("M")]),
+            AstTestFactory.implementsClause([AstTestFactory.namedType4("B")])));
   }
 
   void test_visitClassDeclaration_implements() {
     _assertSource(
         "class C implements B {}",
         AstTestFactory.classDeclaration(null, "C", null, null, null,
-            AstTestFactory.implementsClause([AstTestFactory.typeName4("B")])));
+            AstTestFactory.implementsClause([AstTestFactory.namedType4("B")])));
   }
 
   void test_visitClassDeclaration_multipleMember() {
@@ -293,7 +293,7 @@
             null,
             "C",
             AstTestFactory.typeParameterList(["E"]),
-            AstTestFactory.extendsClause(AstTestFactory.typeName4("A")),
+            AstTestFactory.extendsClause(AstTestFactory.namedType4("A")),
             null,
             null));
   }
@@ -305,9 +305,9 @@
             null,
             "C",
             AstTestFactory.typeParameterList(["E"]),
-            AstTestFactory.extendsClause(AstTestFactory.typeName4("A")),
+            AstTestFactory.extendsClause(AstTestFactory.namedType4("A")),
             null,
-            AstTestFactory.implementsClause([AstTestFactory.typeName4("B")])));
+            AstTestFactory.implementsClause([AstTestFactory.namedType4("B")])));
   }
 
   void test_visitClassDeclaration_parameters_extends_with() {
@@ -317,8 +317,8 @@
             null,
             "C",
             AstTestFactory.typeParameterList(["E"]),
-            AstTestFactory.extendsClause(AstTestFactory.typeName4("A")),
-            AstTestFactory.withClause([AstTestFactory.typeName4("M")]),
+            AstTestFactory.extendsClause(AstTestFactory.namedType4("A")),
+            AstTestFactory.withClause([AstTestFactory.namedType4("M")]),
             null));
   }
 
@@ -329,9 +329,9 @@
             null,
             "C",
             AstTestFactory.typeParameterList(["E"]),
-            AstTestFactory.extendsClause(AstTestFactory.typeName4("A")),
-            AstTestFactory.withClause([AstTestFactory.typeName4("M")]),
-            AstTestFactory.implementsClause([AstTestFactory.typeName4("B")])));
+            AstTestFactory.extendsClause(AstTestFactory.namedType4("A")),
+            AstTestFactory.withClause([AstTestFactory.namedType4("M")]),
+            AstTestFactory.implementsClause([AstTestFactory.namedType4("B")])));
   }
 
   void test_visitClassDeclaration_parameters_implements() {
@@ -343,7 +343,7 @@
             AstTestFactory.typeParameterList(["E"]),
             null,
             null,
-            AstTestFactory.implementsClause([AstTestFactory.typeName4("B")])));
+            AstTestFactory.implementsClause([AstTestFactory.namedType4("B")])));
   }
 
   void test_visitClassDeclaration_singleMember() {
@@ -370,8 +370,8 @@
             "C",
             null,
             Keyword.ABSTRACT,
-            AstTestFactory.typeName4("S"),
-            AstTestFactory.withClause([AstTestFactory.typeName4("M1")]),
+            AstTestFactory.namedType4("S"),
+            AstTestFactory.withClause([AstTestFactory.namedType4("M1")]),
             null));
   }
 
@@ -382,9 +382,9 @@
             "C",
             null,
             Keyword.ABSTRACT,
-            AstTestFactory.typeName4("S"),
-            AstTestFactory.withClause([AstTestFactory.typeName4("M1")]),
-            AstTestFactory.implementsClause([AstTestFactory.typeName4("I")])));
+            AstTestFactory.namedType4("S"),
+            AstTestFactory.withClause([AstTestFactory.namedType4("M1")]),
+            AstTestFactory.implementsClause([AstTestFactory.namedType4("I")])));
   }
 
   void test_visitClassTypeAlias_generic() {
@@ -394,9 +394,9 @@
             "C",
             AstTestFactory.typeParameterList(["E"]),
             null,
-            AstTestFactory.typeName4("S", [AstTestFactory.typeName4("E")]),
+            AstTestFactory.namedType4("S", [AstTestFactory.namedType4("E")]),
             AstTestFactory.withClause([
-              AstTestFactory.typeName4("M1", [AstTestFactory.typeName4("E")])
+              AstTestFactory.namedType4("M1", [AstTestFactory.namedType4("E")])
             ]),
             null));
   }
@@ -408,9 +408,9 @@
             "C",
             null,
             null,
-            AstTestFactory.typeName4("S"),
-            AstTestFactory.withClause([AstTestFactory.typeName4("M1")]),
-            AstTestFactory.implementsClause([AstTestFactory.typeName4("I")])));
+            AstTestFactory.namedType4("S"),
+            AstTestFactory.withClause([AstTestFactory.namedType4("M1")]),
+            AstTestFactory.implementsClause([AstTestFactory.namedType4("I")])));
   }
 
   void test_visitClassTypeAlias_minimal() {
@@ -420,8 +420,8 @@
             "C",
             null,
             null,
-            AstTestFactory.typeName4("S"),
-            AstTestFactory.withClause([AstTestFactory.typeName4("M1")]),
+            AstTestFactory.namedType4("S"),
+            AstTestFactory.withClause([AstTestFactory.namedType4("M1")]),
             null));
   }
 
@@ -432,8 +432,8 @@
             "C",
             AstTestFactory.typeParameterList(["E"]),
             Keyword.ABSTRACT,
-            AstTestFactory.typeName4("S"),
-            AstTestFactory.withClause([AstTestFactory.typeName4("M1")]),
+            AstTestFactory.namedType4("S"),
+            AstTestFactory.withClause([AstTestFactory.namedType4("M1")]),
             null));
   }
 
@@ -444,9 +444,9 @@
             "C",
             AstTestFactory.typeParameterList(["E"]),
             Keyword.ABSTRACT,
-            AstTestFactory.typeName4("S"),
-            AstTestFactory.withClause([AstTestFactory.typeName4("M1")]),
-            AstTestFactory.implementsClause([AstTestFactory.typeName4("I")])));
+            AstTestFactory.namedType4("S"),
+            AstTestFactory.withClause([AstTestFactory.namedType4("M1")]),
+            AstTestFactory.implementsClause([AstTestFactory.namedType4("I")])));
   }
 
   void test_visitClassTypeAlias_parameters_implements() {
@@ -456,9 +456,9 @@
             "C",
             AstTestFactory.typeParameterList(["E"]),
             null,
-            AstTestFactory.typeName4("S"),
-            AstTestFactory.withClause([AstTestFactory.typeName4("M1")]),
-            AstTestFactory.implementsClause([AstTestFactory.typeName4("I")])));
+            AstTestFactory.namedType4("S"),
+            AstTestFactory.withClause([AstTestFactory.namedType4("M1")]),
+            AstTestFactory.implementsClause([AstTestFactory.namedType4("I")])));
   }
 
   void test_visitClassTypeAlias_withMetadata() {
@@ -466,8 +466,8 @@
         "C",
         null,
         null,
-        AstTestFactory.typeName4("S"),
-        AstTestFactory.withClause([AstTestFactory.typeName4("M1")]),
+        AstTestFactory.namedType4("S"),
+        AstTestFactory.withClause([AstTestFactory.namedType4("M1")]),
         null);
     declaration.metadata.add(
         AstTestFactory.annotation(AstTestFactory.identifier3("deprecated")));
@@ -684,19 +684,19 @@
     _assertSource(
         "p.C.n",
         AstTestFactory.constructorName(
-            AstTestFactory.typeName4("p.C.n"), null));
+            AstTestFactory.namedType4("p.C.n"), null));
   }
 
   void test_visitConstructorName_unnamed_noPrefix() {
     _assertSource("C",
-        AstTestFactory.constructorName(AstTestFactory.typeName4("C"), null));
+        AstTestFactory.constructorName(AstTestFactory.namedType4("C"), null));
   }
 
   void test_visitConstructorName_unnamed_prefix() {
     _assertSource(
         "p.C",
         AstTestFactory.constructorName(
-            AstTestFactory.typeName3(AstTestFactory.identifier5("p", "C")),
+            AstTestFactory.namedType3(AstTestFactory.identifier5("p", "C")),
             null));
   }
 
@@ -845,7 +845,7 @@
 
   void test_visitExtendsClause() {
     _assertSource("extends C",
-        AstTestFactory.extendsClause(AstTestFactory.typeName4("C")));
+        AstTestFactory.extendsClause(AstTestFactory.namedType4("C")));
   }
 
   void test_visitExtensionDeclaration_empty() {
@@ -853,7 +853,7 @@
         'extension E on C {}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             isExtensionTypeDeclaration: false));
   }
 
@@ -862,7 +862,7 @@
         'extension E on C {var a; var b;}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             members: [
               AstTestFactory.fieldDeclaration2(false, Keyword.VAR,
                   [AstTestFactory.variableDeclaration('a')]),
@@ -878,7 +878,7 @@
         AstTestFactory.extensionDeclaration(
             name: 'E',
             typeParameters: AstTestFactory.typeParameterList(['T']),
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             isExtensionTypeDeclaration: false));
   }
 
@@ -887,7 +887,7 @@
         'extension E on C {var a;}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             members: [
               AstTestFactory.fieldDeclaration2(
                   false, Keyword.VAR, [AstTestFactory.variableDeclaration('a')])
@@ -900,9 +900,9 @@
         'extension type E on C hide B {}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             hideClause:
-                AstTestFactory.hideClause([AstTestFactory.typeName4("B")]),
+                AstTestFactory.hideClause([AstTestFactory.namedType4("B")]),
             isExtensionTypeDeclaration: true));
   }
 
@@ -911,7 +911,7 @@
         'extension type E on C hide B {var a; var b;}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             members: [
               AstTestFactory.fieldDeclaration2(false, Keyword.VAR,
                   [AstTestFactory.variableDeclaration('a')]),
@@ -919,7 +919,7 @@
                   false, Keyword.VAR, [AstTestFactory.variableDeclaration('b')])
             ],
             hideClause:
-                AstTestFactory.hideClause([AstTestFactory.typeName4("B")]),
+                AstTestFactory.hideClause([AstTestFactory.namedType4("B")]),
             isExtensionTypeDeclaration: true));
   }
 
@@ -929,9 +929,9 @@
         AstTestFactory.extensionDeclaration(
             name: 'E',
             typeParameters: AstTestFactory.typeParameterList(['T']),
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             hideClause:
-                AstTestFactory.hideClause([AstTestFactory.typeName4("B")]),
+                AstTestFactory.hideClause([AstTestFactory.namedType4("B")]),
             isExtensionTypeDeclaration: true));
   }
 
@@ -940,13 +940,13 @@
         'extension type E on C hide B {var a;}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             members: [
               AstTestFactory.fieldDeclaration2(
                   false, Keyword.VAR, [AstTestFactory.variableDeclaration('a')])
             ],
             hideClause:
-                AstTestFactory.hideClause([AstTestFactory.typeName4("B")]),
+                AstTestFactory.hideClause([AstTestFactory.namedType4("B")]),
             isExtensionTypeDeclaration: true));
   }
 
@@ -955,7 +955,7 @@
         'extension type E on C show foo {}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             showClause: AstTestFactory.showClause(
                 [AstTestFactory.showHideElement("foo")]),
             isExtensionTypeDeclaration: true));
@@ -966,9 +966,9 @@
         'extension type E on C show B {}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             showClause:
-                AstTestFactory.showClause([AstTestFactory.typeName4("B")]),
+                AstTestFactory.showClause([AstTestFactory.namedType4("B")]),
             isExtensionTypeDeclaration: true));
   }
 
@@ -977,7 +977,7 @@
         'extension type E on C show get foo {}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             showClause: AstTestFactory.showClause(
                 [AstTestFactory.showHideElementGetter("foo")]),
             isExtensionTypeDeclaration: true));
@@ -988,7 +988,7 @@
         'extension type E on C show B {var a; var b;}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             members: [
               AstTestFactory.fieldDeclaration2(false, Keyword.VAR,
                   [AstTestFactory.variableDeclaration('a')]),
@@ -996,7 +996,7 @@
                   false, Keyword.VAR, [AstTestFactory.variableDeclaration('b')])
             ],
             showClause:
-                AstTestFactory.showClause([AstTestFactory.typeName4("B")]),
+                AstTestFactory.showClause([AstTestFactory.namedType4("B")]),
             isExtensionTypeDeclaration: true));
   }
 
@@ -1005,7 +1005,7 @@
         'extension type E on C show operator * {}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             showClause: AstTestFactory.showClause(
                 [AstTestFactory.showHideElementOperator("*")]),
             isExtensionTypeDeclaration: true));
@@ -1017,9 +1017,9 @@
         AstTestFactory.extensionDeclaration(
             name: 'E',
             typeParameters: AstTestFactory.typeParameterList(['T']),
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             showClause:
-                AstTestFactory.showClause([AstTestFactory.typeName4("B")]),
+                AstTestFactory.showClause([AstTestFactory.namedType4("B")]),
             isExtensionTypeDeclaration: true));
   }
 
@@ -1028,9 +1028,9 @@
         'extension type E on C show prefix.B {}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             showClause: AstTestFactory.showClause([
-              AstTestFactory.typeName3(
+              AstTestFactory.namedType3(
                   AstTestFactory.identifier5('prefix', 'B'))
             ]),
             isExtensionTypeDeclaration: true));
@@ -1041,7 +1041,7 @@
         'extension type E on C show set foo {}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             showClause: AstTestFactory.showClause(
                 [AstTestFactory.showHideElementSetter("foo")]),
             isExtensionTypeDeclaration: true));
@@ -1052,13 +1052,13 @@
         'extension type E on C show B {var a;}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             members: [
               AstTestFactory.fieldDeclaration2(
                   false, Keyword.VAR, [AstTestFactory.variableDeclaration('a')])
             ],
             showClause:
-                AstTestFactory.showClause([AstTestFactory.typeName4("B")]),
+                AstTestFactory.showClause([AstTestFactory.namedType4("B")]),
             isExtensionTypeDeclaration: true));
   }
 
@@ -1067,11 +1067,11 @@
         'extension type E on C show B<int, String> {}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             showClause: AstTestFactory.showClause([
-              AstTestFactory.typeName3(AstTestFactory.identifier3('B'), [
-                AstTestFactory.typeName4('int'),
-                AstTestFactory.typeName4('String')
+              AstTestFactory.namedType3(AstTestFactory.identifier3('B'), [
+                AstTestFactory.namedType4('int'),
+                AstTestFactory.namedType4('String')
               ])
             ]),
             isExtensionTypeDeclaration: true));
@@ -1082,9 +1082,9 @@
         'extension type E on C show B hide foo {}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             showClause:
-                AstTestFactory.showClause([AstTestFactory.typeName4("B")]),
+                AstTestFactory.showClause([AstTestFactory.namedType4("B")]),
             hideClause: AstTestFactory.hideClause(
                 [AstTestFactory.showHideElement("foo")]),
             isExtensionTypeDeclaration: true));
@@ -1105,7 +1105,7 @@
         AstTestFactory.extensionOverride(
             extensionName: AstTestFactory.identifier5('p', 'E'),
             typeArguments: AstTestFactory.typeArgumentList(
-                [AstTestFactory.typeName4('A')]),
+                [AstTestFactory.namedType4('A')]),
             argumentList: AstTestFactory.argumentList(
                 [AstTestFactory.identifier3('o')])));
   }
@@ -1125,7 +1125,7 @@
         AstTestFactory.extensionOverride(
             extensionName: AstTestFactory.identifier3('E'),
             typeArguments: AstTestFactory.typeArgumentList(
-                [AstTestFactory.typeName4('A')]),
+                [AstTestFactory.namedType4('A')]),
             argumentList: AstTestFactory.argumentList(
                 [AstTestFactory.identifier3('o')])));
   }
@@ -1135,7 +1135,7 @@
         'extension type E on C {}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             isExtensionTypeDeclaration: true));
   }
 
@@ -1144,7 +1144,7 @@
         'extension type E on C {var a; var b;}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             members: [
               AstTestFactory.fieldDeclaration2(false, Keyword.VAR,
                   [AstTestFactory.variableDeclaration('a')]),
@@ -1160,7 +1160,7 @@
         AstTestFactory.extensionDeclaration(
             name: 'E',
             typeParameters: AstTestFactory.typeParameterList(['T']),
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             isExtensionTypeDeclaration: true));
   }
 
@@ -1169,7 +1169,7 @@
         'extension type E on C {var a;}',
         AstTestFactory.extensionDeclaration(
             name: 'E',
-            extendedType: AstTestFactory.typeName4('C'),
+            extendedType: AstTestFactory.namedType4('C'),
             members: [
               AstTestFactory.fieldDeclaration2(
                   false, Keyword.VAR, [AstTestFactory.variableDeclaration('a')])
@@ -1227,7 +1227,7 @@
         "A this.a(b)",
         AstTestFactory.fieldFormalParameter(
             null,
-            AstTestFactory.typeName4("A"),
+            AstTestFactory.namedType4("A"),
             "a",
             AstTestFactory.formalParameterList(
                 [AstTestFactory.simpleFormalParameter3("b")])));
@@ -1237,7 +1237,7 @@
     _assertSource(
         "A this.a<E, F>(b)",
         astFactory.fieldFormalParameter2(
-            type: AstTestFactory.typeName4('A'),
+            type: AstTestFactory.namedType4('A'),
             thisKeyword: TokenFactory.tokenFromKeyword(Keyword.THIS),
             period: TokenFactory.tokenFromType(TokenType.PERIOD),
             identifier: AstTestFactory.identifier3('a'),
@@ -1255,19 +1255,19 @@
     _assertSource(
         "final A this.a",
         AstTestFactory.fieldFormalParameter(
-            Keyword.FINAL, AstTestFactory.typeName4("A"), "a"));
+            Keyword.FINAL, AstTestFactory.namedType4("A"), "a"));
   }
 
   void test_visitFieldFormalParameter_type() {
     _assertSource(
         "A this.a",
         AstTestFactory.fieldFormalParameter(
-            null, AstTestFactory.typeName4("A"), "a"));
+            null, AstTestFactory.namedType4("A"), "a"));
   }
 
   void test_visitFieldFormalParameter_type_covariant() {
     var expected = AstTestFactory.fieldFormalParameter(
-        null, AstTestFactory.typeName4("A"), "a");
+        null, AstTestFactory.namedType4("A"), "a");
     expected.covariantKeyword =
         TokenFactory.tokenFromKeyword(Keyword.COVARIANT);
     _assertSource("covariant A this.a", expected);
@@ -1370,7 +1370,7 @@
               null),
           AstTestFactory.namedFormalParameter(
               AstTestFactory.simpleFormalParameter2(
-                  null, AstTestFactory.typeName4('A'), "b")
+                  null, AstTestFactory.namedType4('A'), "b")
                 ..requiredKeyword =
                     TokenFactory.tokenFromKeyword(Keyword.REQUIRED),
               null),
@@ -1819,14 +1819,14 @@
         "f<A>()",
         AstTestFactory.functionExpressionInvocation2(
             AstTestFactory.identifier3("f"),
-            AstTestFactory.typeArgumentList([AstTestFactory.typeName4('A')])));
+            AstTestFactory.typeArgumentList([AstTestFactory.namedType4('A')])));
   }
 
   void test_visitFunctionTypeAlias_generic() {
     _assertSource(
         "typedef A F<B>();",
         AstTestFactory.typeAlias(
-            AstTestFactory.typeName4("A"),
+            AstTestFactory.namedType4("A"),
             "F",
             AstTestFactory.typeParameterList(["B"]),
             AstTestFactory.formalParameterList()));
@@ -1835,13 +1835,13 @@
   void test_visitFunctionTypeAlias_nonGeneric() {
     _assertSource(
         "typedef A F();",
-        AstTestFactory.typeAlias(AstTestFactory.typeName4("A"), "F", null,
+        AstTestFactory.typeAlias(AstTestFactory.namedType4("A"), "F", null,
             AstTestFactory.formalParameterList()));
   }
 
   void test_visitFunctionTypeAlias_withMetadata() {
     FunctionTypeAlias declaration = AstTestFactory.typeAlias(
-        AstTestFactory.typeName4("A"),
+        AstTestFactory.namedType4("A"),
         "F",
         null,
         AstTestFactory.formalParameterList());
@@ -1867,7 +1867,7 @@
     _assertSource(
         "T f()?",
         astFactory.functionTypedFormalParameter2(
-            returnType: AstTestFactory.typeName4("T"),
+            returnType: AstTestFactory.namedType4("T"),
             identifier: AstTestFactory.identifier3('f'),
             parameters: AstTestFactory.formalParameterList([]),
             question: TokenFactory.tokenFromType(TokenType.QUESTION)));
@@ -1877,12 +1877,12 @@
     _assertSource(
         "T f()",
         AstTestFactory.functionTypedFormalParameter(
-            AstTestFactory.typeName4("T"), "f"));
+            AstTestFactory.namedType4("T"), "f"));
   }
 
   void test_visitFunctionTypedFormalParameter_type_covariant() {
     var expected = AstTestFactory.functionTypedFormalParameter(
-        AstTestFactory.typeName4("T"), "f");
+        AstTestFactory.namedType4("T"), "f");
     expected.covariantKeyword =
         TokenFactory.tokenFromKeyword(Keyword.COVARIANT);
     _assertSource("covariant T f()", expected);
@@ -1892,7 +1892,7 @@
     _assertSource(
         "T f<E>()",
         astFactory.functionTypedFormalParameter2(
-            returnType: AstTestFactory.typeName4("T"),
+            returnType: AstTestFactory.namedType4("T"),
             identifier: AstTestFactory.identifier3('f'),
             typeParameters: AstTestFactory.typeParameterList(['E']),
             parameters: AstTestFactory.formalParameterList([])));
@@ -1902,11 +1902,11 @@
     _assertSource(
         "int Function<T>(T)",
         AstTestFactory.genericFunctionType(
-            AstTestFactory.typeName4("int"),
+            AstTestFactory.namedType4("int"),
             AstTestFactory.typeParameterList2(['T']),
             AstTestFactory.formalParameterList([
               AstTestFactory.simpleFormalParameter4(
-                  AstTestFactory.typeName4("T"), null)
+                  AstTestFactory.namedType4("T"), null)
             ])));
   }
 
@@ -1914,11 +1914,11 @@
     _assertSource(
         "int Function<T>(T)?",
         AstTestFactory.genericFunctionType(
-            AstTestFactory.typeName4("int"),
+            AstTestFactory.namedType4("int"),
             AstTestFactory.typeParameterList2(['T']),
             AstTestFactory.formalParameterList([
               AstTestFactory.simpleFormalParameter4(
-                  AstTestFactory.typeName4("T"), null)
+                  AstTestFactory.namedType4("T"), null)
             ]),
             question: true));
   }
@@ -1930,11 +1930,11 @@
             'X',
             AstTestFactory.typeParameterList2(['S']),
             AstTestFactory.genericFunctionType(
-                AstTestFactory.typeName4("S"),
+                AstTestFactory.namedType4("S"),
                 AstTestFactory.typeParameterList2(['T']),
                 AstTestFactory.formalParameterList([
                   AstTestFactory.simpleFormalParameter4(
-                      AstTestFactory.typeName4("T"), null)
+                      AstTestFactory.namedType4("T"), null)
                 ]))));
   }
 
@@ -1980,12 +1980,12 @@
     _assertSource(
         "implements A, B",
         AstTestFactory.implementsClause(
-            [AstTestFactory.typeName4("A"), AstTestFactory.typeName4("B")]));
+            [AstTestFactory.namedType4("A"), AstTestFactory.namedType4("B")]));
   }
 
   void test_visitImplementsClause_single() {
     _assertSource("implements A",
-        AstTestFactory.implementsClause([AstTestFactory.typeName4("A")]));
+        AstTestFactory.implementsClause([AstTestFactory.namedType4("A")]));
   }
 
   void test_visitImportDirective_combinator() {
@@ -2101,21 +2101,21 @@
     _assertSource(
         "const C()",
         AstTestFactory.instanceCreationExpression2(
-            Keyword.CONST, AstTestFactory.typeName4("C")));
+            Keyword.CONST, AstTestFactory.namedType4("C")));
   }
 
   void test_visitInstanceCreationExpression_named() {
     _assertSource(
         "new C.c()",
         AstTestFactory.instanceCreationExpression3(
-            Keyword.NEW, AstTestFactory.typeName4("C"), "c"));
+            Keyword.NEW, AstTestFactory.namedType4("C"), "c"));
   }
 
   void test_visitInstanceCreationExpression_unnamed() {
     _assertSource(
         "new C()",
         AstTestFactory.instanceCreationExpression2(
-            Keyword.NEW, AstTestFactory.typeName4("C")));
+            Keyword.NEW, AstTestFactory.namedType4("C")));
   }
 
   void test_visitIntegerLiteral() {
@@ -2141,14 +2141,14 @@
     _assertSource(
         "a is! C",
         AstTestFactory.isExpression(AstTestFactory.identifier3("a"), true,
-            AstTestFactory.typeName4("C")));
+            AstTestFactory.namedType4("C")));
   }
 
   void test_visitIsExpression_normal() {
     _assertSource(
         "a is C",
         AstTestFactory.isExpression(AstTestFactory.identifier3("a"), false,
-            AstTestFactory.typeName4("C")));
+            AstTestFactory.namedType4("C")));
   }
 
   void test_visitLabel() {
@@ -2201,7 +2201,7 @@
         '<int>[0, for (e in l) 0, if (b) 1, ...[0]]',
         astFactory.listLiteral(
             null,
-            AstTestFactory.typeArgumentList([AstTestFactory.typeName4('int')]),
+            AstTestFactory.typeArgumentList([AstTestFactory.namedType4('int')]),
             Tokens.openSquareBracket(),
             [
               AstTestFactory.integer(0),
@@ -2267,7 +2267,7 @@
         'const <int>[0]',
         astFactory.listLiteral(
             TokenFactory.tokenFromKeyword(Keyword.CONST),
-            AstTestFactory.typeArgumentList([AstTestFactory.typeName4('int')]),
+            AstTestFactory.typeArgumentList([AstTestFactory.namedType4('int')]),
             Tokens.openSquareBracket(),
             [AstTestFactory.integer(0)],
             Tokens.closeSquareBracket()));
@@ -2285,7 +2285,7 @@
         '<int>[0]',
         astFactory.listLiteral(
             null,
-            AstTestFactory.typeArgumentList([AstTestFactory.typeName4('int')]),
+            AstTestFactory.typeArgumentList([AstTestFactory.namedType4('int')]),
             Tokens.openSquareBracket(),
             [AstTestFactory.integer(0)],
             Tokens.closeSquareBracket()));
@@ -2332,7 +2332,7 @@
         "external T m();",
         AstTestFactory.methodDeclaration(
             null,
-            AstTestFactory.typeName4("T"),
+            AstTestFactory.namedType4("T"),
             null,
             null,
             AstTestFactory.identifier3("m"),
@@ -2357,7 +2357,7 @@
         "T get m {}",
         AstTestFactory.methodDeclaration2(
             null,
-            AstTestFactory.typeName4("T"),
+            AstTestFactory.namedType4("T"),
             Keyword.GET,
             null,
             AstTestFactory.identifier3("m"),
@@ -2370,7 +2370,7 @@
         "T set m(var v) {}",
         AstTestFactory.methodDeclaration2(
             null,
-            AstTestFactory.typeName4("T"),
+            AstTestFactory.namedType4("T"),
             Keyword.SET,
             null,
             AstTestFactory.identifier3("m"),
@@ -2426,7 +2426,7 @@
         "T operator +() {}",
         AstTestFactory.methodDeclaration2(
             null,
-            AstTestFactory.typeName4("T"),
+            AstTestFactory.namedType4("T"),
             null,
             Keyword.OPERATOR,
             AstTestFactory.identifier3("+"),
@@ -2439,7 +2439,7 @@
         "T m() {}",
         AstTestFactory.methodDeclaration2(
             null,
-            AstTestFactory.typeName4("T"),
+            AstTestFactory.namedType4("T"),
             null,
             null,
             AstTestFactory.identifier3("m"),
@@ -2479,7 +2479,7 @@
         "static T m() {}",
         AstTestFactory.methodDeclaration2(
             Keyword.STATIC,
-            AstTestFactory.typeName4("T"),
+            AstTestFactory.namedType4("T"),
             null,
             null,
             AstTestFactory.identifier3("m"),
@@ -2535,7 +2535,7 @@
     _assertSource(
         "m<A>()",
         AstTestFactory.methodInvocation3(null, "m",
-            AstTestFactory.typeArgumentList([AstTestFactory.typeName4('A')])));
+            AstTestFactory.typeArgumentList([AstTestFactory.namedType4('A')])));
   }
 
   void test_visitNamedExpression() {
@@ -2681,8 +2681,8 @@
       astFactory.setOrMapLiteral(
         leftBracket: Tokens.openCurlyBracket(),
         typeArguments: AstTestFactory.typeArgumentList([
-          AstTestFactory.typeName4('String'),
-          AstTestFactory.typeName4('String')
+          AstTestFactory.namedType4('String'),
+          AstTestFactory.namedType4('String')
         ]),
         elements: [
           AstTestFactory.mapLiteralEntry3('a', 'b'),
@@ -2736,8 +2736,8 @@
       astFactory.setOrMapLiteral(
         constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
         typeArguments: AstTestFactory.typeArgumentList([
-          AstTestFactory.typeName4('String'),
-          AstTestFactory.typeName4('String')
+          AstTestFactory.namedType4('String'),
+          AstTestFactory.namedType4('String')
         ]),
         leftBracket: Tokens.openCurlyBracket(),
         elements: [AstTestFactory.mapLiteralEntry3('a', 'b')],
@@ -2762,8 +2762,8 @@
       "<String, String>{'a' : 'b'}",
       astFactory.setOrMapLiteral(
         typeArguments: AstTestFactory.typeArgumentList([
-          AstTestFactory.typeName4('String'),
-          AstTestFactory.typeName4('String')
+          AstTestFactory.namedType4('String'),
+          AstTestFactory.namedType4('String')
         ]),
         leftBracket: Tokens.openCurlyBracket(),
         elements: [AstTestFactory.mapLiteralEntry3('a', 'b')],
@@ -2777,7 +2777,7 @@
       '<int>{0, for (e in l) 0, if (b) 1, ...[0]}',
       astFactory.setOrMapLiteral(
         typeArguments:
-            AstTestFactory.typeArgumentList([AstTestFactory.typeName4('int')]),
+            AstTestFactory.typeArgumentList([AstTestFactory.namedType4('int')]),
         leftBracket: Tokens.openCurlyBracket(),
         elements: [
           AstTestFactory.integer(0),
@@ -2833,7 +2833,7 @@
       astFactory.setOrMapLiteral(
         constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
         typeArguments:
-            AstTestFactory.typeArgumentList([AstTestFactory.typeName4('int')]),
+            AstTestFactory.typeArgumentList([AstTestFactory.namedType4('int')]),
         leftBracket: Tokens.openCurlyBracket(),
         elements: [AstTestFactory.integer(0)],
         rightBracket: Tokens.closeCurlyBracket(),
@@ -2857,7 +2857,7 @@
       '<int>{0}',
       astFactory.setOrMapLiteral(
         typeArguments:
-            AstTestFactory.typeArgumentList([AstTestFactory.typeName4('int')]),
+            AstTestFactory.typeArgumentList([AstTestFactory.namedType4('int')]),
         leftBracket: Tokens.openCurlyBracket(),
         elements: [AstTestFactory.integer(0)],
         rightBracket: Tokens.closeCurlyBracket(),
@@ -2882,19 +2882,19 @@
     _assertSource(
         "final A a",
         AstTestFactory.simpleFormalParameter2(
-            Keyword.FINAL, AstTestFactory.typeName4("A"), "a"));
+            Keyword.FINAL, AstTestFactory.namedType4("A"), "a"));
   }
 
   void test_visitSimpleFormalParameter_type() {
     _assertSource(
         "A a",
         AstTestFactory.simpleFormalParameter4(
-            AstTestFactory.typeName4("A"), "a"));
+            AstTestFactory.namedType4("A"), "a"));
   }
 
   void test_visitSimpleFormalParameter_type_covariant() {
     var expected = AstTestFactory.simpleFormalParameter4(
-        AstTestFactory.typeName4("A"), "a");
+        AstTestFactory.namedType4("A"), "a");
     expected.covariantKeyword =
         TokenFactory.tokenFromKeyword(Keyword.COVARIANT);
     _assertSource("covariant A a", expected);
@@ -3074,15 +3074,15 @@
     _assertSource(
         "try {} on E {}",
         AstTestFactory.tryStatement2(AstTestFactory.block(),
-            [AstTestFactory.catchClause3(AstTestFactory.typeName4("E"))]));
+            [AstTestFactory.catchClause3(AstTestFactory.namedType4("E"))]));
   }
 
   void test_visitTryStatement_catches() {
     _assertSource(
         "try {} on E {} on F {}",
         AstTestFactory.tryStatement2(AstTestFactory.block(), [
-          AstTestFactory.catchClause3(AstTestFactory.typeName4("E")),
-          AstTestFactory.catchClause3(AstTestFactory.typeName4("F"))
+          AstTestFactory.catchClause3(AstTestFactory.namedType4("E")),
+          AstTestFactory.catchClause3(AstTestFactory.namedType4("F"))
         ]));
   }
 
@@ -3091,7 +3091,7 @@
         "try {} on E {} finally {}",
         AstTestFactory.tryStatement3(
             AstTestFactory.block(),
-            [AstTestFactory.catchClause3(AstTestFactory.typeName4("E"))],
+            [AstTestFactory.catchClause3(AstTestFactory.namedType4("E"))],
             AstTestFactory.block()));
   }
 
@@ -3106,45 +3106,45 @@
     _assertSource(
         "<E, F>",
         AstTestFactory.typeArgumentList2(
-            [AstTestFactory.typeName4("E"), AstTestFactory.typeName4("F")]));
+            [AstTestFactory.namedType4("E"), AstTestFactory.namedType4("F")]));
   }
 
   void test_visitTypeArgumentList_single() {
     _assertSource("<E>",
-        AstTestFactory.typeArgumentList2([AstTestFactory.typeName4("E")]));
+        AstTestFactory.typeArgumentList2([AstTestFactory.namedType4("E")]));
   }
 
   void test_visitTypeName_multipleArgs() {
     _assertSource(
         "C<D, E>",
-        AstTestFactory.typeName4("C",
-            [AstTestFactory.typeName4("D"), AstTestFactory.typeName4("E")]));
+        AstTestFactory.namedType4("C",
+            [AstTestFactory.namedType4("D"), AstTestFactory.namedType4("E")]));
   }
 
   void test_visitTypeName_nestedArg() {
     _assertSource(
         "C<D<E>>",
-        AstTestFactory.typeName4("C", [
-          AstTestFactory.typeName4("D", [AstTestFactory.typeName4("E")])
+        AstTestFactory.namedType4("C", [
+          AstTestFactory.namedType4("D", [AstTestFactory.namedType4("E")])
         ]));
   }
 
   void test_visitTypeName_noArgs() {
-    _assertSource("C", AstTestFactory.typeName4("C"));
+    _assertSource("C", AstTestFactory.namedType4("C"));
   }
 
   void test_visitTypeName_noArgs_withQuestion() {
-    _assertSource("C?", AstTestFactory.typeName4("C", null, true));
+    _assertSource("C?", AstTestFactory.namedType4("C", null, true));
   }
 
   void test_visitTypeName_singleArg() {
-    _assertSource(
-        "C<D>", AstTestFactory.typeName4("C", [AstTestFactory.typeName4("D")]));
+    _assertSource("C<D>",
+        AstTestFactory.namedType4("C", [AstTestFactory.namedType4("D")]));
   }
 
   void test_visitTypeName_singleArg_withQuestion() {
     _assertSource("C<D>?",
-        AstTestFactory.typeName4("C", [AstTestFactory.typeName4("D")], true));
+        AstTestFactory.namedType4("C", [AstTestFactory.namedType4("D")], true));
   }
 
   void test_visitTypeParameter_variance_contravariant() {
@@ -3161,7 +3161,7 @@
 
   void test_visitTypeParameter_withExtends() {
     _assertSource("E extends C",
-        AstTestFactory.typeParameter2("E", AstTestFactory.typeName4("C")));
+        AstTestFactory.typeParameter2("E", AstTestFactory.namedType4("C")));
   }
 
   void test_visitTypeParameter_withMetadata() {
@@ -3205,7 +3205,7 @@
     _assertSource(
         "const C a, b",
         AstTestFactory.variableDeclarationList(
-            Keyword.CONST, AstTestFactory.typeName4("C"), [
+            Keyword.CONST, AstTestFactory.namedType4("C"), [
           AstTestFactory.variableDeclaration("a"),
           AstTestFactory.variableDeclaration("b")
         ]));
@@ -3235,7 +3235,7 @@
     _assertSource(
         "C a, b",
         AstTestFactory.variableDeclarationList(
-            null, AstTestFactory.typeName4("C"), [
+            null, AstTestFactory.namedType4("C"), [
           AstTestFactory.variableDeclaration("a"),
           AstTestFactory.variableDeclaration("b")
         ]));
@@ -3255,7 +3255,7 @@
         "C c;",
         AstTestFactory.variableDeclarationStatement(
             null,
-            AstTestFactory.typeName4("C"),
+            AstTestFactory.namedType4("C"),
             [AstTestFactory.variableDeclaration("c")]));
   }
 
@@ -3270,15 +3270,15 @@
     _assertSource(
         "with A, B, C",
         AstTestFactory.withClause([
-          AstTestFactory.typeName4("A"),
-          AstTestFactory.typeName4("B"),
-          AstTestFactory.typeName4("C")
+          AstTestFactory.namedType4("A"),
+          AstTestFactory.namedType4("B"),
+          AstTestFactory.namedType4("C")
         ]));
   }
 
   void test_visitWithClause_single() {
     _assertSource(
-        "with A", AstTestFactory.withClause([AstTestFactory.typeName4("A")]));
+        "with A", AstTestFactory.withClause([AstTestFactory.namedType4("A")]));
   }
 
   void test_visitYieldStatement() {
diff --git a/pkg/analyzer/test/src/dart/resolution/metadata_test.dart b/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
index 7c96192..b17dc6f 100644
--- a/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
@@ -128,7 +128,7 @@
           rightParenthesis: )
         constructorName: ConstructorName
           staticElement: self::@class::A::@constructor::•
-          type: TypeName
+          type: NamedType
             name: SimpleIdentifier
               staticElement: self::@class::A
               staticType: null
@@ -804,7 +804,7 @@
     token: A
   typeArguments: TypeArgumentList
     arguments
-      TypeName
+      NamedType
         name: SimpleIdentifier
           staticElement: dart:core::@class::int
           staticType: null
@@ -855,7 +855,7 @@
     token: A
   typeArguments: TypeArgumentList
     arguments
-      TypeName
+      NamedType
         name: SimpleIdentifier
           staticElement: dart:core::@class::int
           staticType: null
@@ -1202,7 +1202,7 @@
     token: B
   typeArguments: TypeArgumentList
     arguments
-      TypeName
+      NamedType
         name: SimpleIdentifier
           staticElement: dart:core::@class::int
           staticType: null
@@ -1515,7 +1515,7 @@
     staticType: null
   typeArguments: TypeArgumentList
     arguments
-      TypeName
+      NamedType
         name: SimpleIdentifier
           staticElement: dart:core::@class::int
           staticType: null
@@ -1580,7 +1580,7 @@
     staticType: null
   typeArguments: TypeArgumentList
     arguments
-      TypeName
+      NamedType
         name: SimpleIdentifier
           staticElement: dart:core::@class::int
           staticType: null
@@ -1679,7 +1679,7 @@
     token: B
   typeArguments: TypeArgumentList
     arguments
-      TypeName
+      NamedType
         name: SimpleIdentifier
           staticElement: dart:core::@class::int
           staticType: null
@@ -1744,7 +1744,7 @@
     token: B
   typeArguments: TypeArgumentList
     arguments
-      TypeName
+      NamedType
         name: SimpleIdentifier
           staticElement: dart:core::@class::int
           staticType: null
@@ -1911,7 +1911,7 @@
     token: B
   typeArguments: TypeArgumentList
     arguments
-      TypeName
+      NamedType
         name: SimpleIdentifier
           staticElement: dart:core::@class::int
           staticType: null
@@ -1965,7 +1965,7 @@
     token: B
   typeArguments: TypeArgumentList
     arguments
-      TypeName
+      NamedType
         name: SimpleIdentifier
           staticElement: dart:core::@class::int
           staticType: null
diff --git a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
index 11f3116..3f5806f 100644
--- a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
+++ b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
@@ -1036,8 +1036,7 @@
   @override
   void visitNamedType(NamedType node) {
     _writeNextCodeLine(node);
-    // TODO(scheglov) Change to NamedType.
-    _writeln('TypeName');
+    _writeln('NamedType');
     _withIndent(() {
       _writeNode('name', node.name);
       _writeType('type', node.type);
@@ -1439,8 +1438,7 @@
     _writeln('TypeLiteral');
     _withIndent(() {
       var properties = _Properties();
-      // TODO(scheglov) Change to 'type'.
-      properties.addNode('typeName', node.type);
+      properties.addNode('type', node.type);
       _addExpression(properties, node);
       _writeProperties(properties);
     });
diff --git a/pkg/analyzer/test/src/summary/resynthesize_common.dart b/pkg/analyzer/test/src/summary/resynthesize_common.dart
index 25f182d..bb3c056 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_common.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_common.dart
@@ -6187,7 +6187,7 @@
               staticType: num
               token: a @27
             staticType: int
-            type: TypeName
+            type: NamedType
               name: SimpleIdentifier
                 staticElement: dart:core::@class::int
                 staticType: null
@@ -6399,7 +6399,7 @@
               staticElement: ConstructorMember
                 base: self::@class::C::@constructor::•
                 substitution: {T: int}
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::C
                   staticType: null
@@ -6429,7 +6429,7 @@
               staticElement: ConstructorMember
                 base: self::@class::C::@constructor::named
                 substitution: {T: int}
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::C
                   staticType: null
@@ -6486,7 +6486,7 @@
                 token: named @37
               period: . @36
               staticElement: self::@class::A::@constructor::named
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::A
                   staticType: null
@@ -6583,7 +6583,7 @@
               int
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -6717,7 +6717,7 @@
                   staticElement: ConstructorMember
                     base: self::@class::P1::@constructor::•
                     substitution: {T: dynamic}
-                  type: TypeName
+                  type: NamedType
                     name: SimpleIdentifier
                       staticElement: self::@class::P1
                       staticType: null
@@ -6732,7 +6732,7 @@
                   staticElement: ConstructorMember
                     base: self::@class::P2::@constructor::•
                     substitution: {T: int}
-                  type: TypeName
+                  type: NamedType
                     name: SimpleIdentifier
                       staticElement: self::@class::P2
                       staticType: null
@@ -6740,7 +6740,7 @@
                     type: P2<int>
                     typeArguments: TypeArgumentList
                       arguments
-                        TypeName
+                        NamedType
                           name: SimpleIdentifier
                             staticElement: dart:core::@class::int
                             staticType: null
@@ -7029,7 +7029,7 @@
               staticElement: ConstructorMember
                 base: self::@class::C::@constructor::named
                 substitution: {K: int, V: String}
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::C
                   staticType: null
@@ -7037,13 +7037,13 @@
                 type: C<int, String>
                 typeArguments: TypeArgumentList
                   arguments
-                    TypeName
+                    NamedType
                       name: SimpleIdentifier
                         staticElement: dart:core::@class::int
                         staticType: null
                         token: int @63
                       type: int
-                    TypeName
+                    NamedType
                       name: SimpleIdentifier
                         staticElement: dart:core::@class::String
                         staticType: null
@@ -7099,7 +7099,7 @@
               staticElement: ConstructorMember
                 base: a.dart::@class::C::@constructor::named
                 substitution: {K: int, V: String}
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: a.dart::@class::C
                   staticType: null
@@ -7107,13 +7107,13 @@
                 type: C<int, String>
                 typeArguments: TypeArgumentList
                   arguments
-                    TypeName
+                    NamedType
                       name: SimpleIdentifier
                         staticElement: dart:core::@class::int
                         staticType: null
                         token: int @35
                       type: int
-                    TypeName
+                    NamedType
                       name: SimpleIdentifier
                         staticElement: dart:core::@class::String
                         staticType: null
@@ -7169,7 +7169,7 @@
               staticElement: ConstructorMember
                 base: a.dart::@class::C::@constructor::named
                 substitution: {K: int, V: String}
-              type: TypeName
+              type: NamedType
                 name: PrefixedIdentifier
                   identifier: SimpleIdentifier
                     staticElement: a.dart::@class::C
@@ -7185,13 +7185,13 @@
                 type: C<int, String>
                 typeArguments: TypeArgumentList
                   arguments
-                    TypeName
+                    NamedType
                       name: SimpleIdentifier
                         staticElement: dart:core::@class::int
                         staticType: null
                         token: int @42
                       type: int
-                    TypeName
+                    NamedType
                       name: SimpleIdentifier
                         staticElement: dart:core::@class::String
                         staticType: null
@@ -7238,7 +7238,7 @@
               staticElement: ConstructorMember
                 base: self::@class::C::@constructor::•
                 substitution: {K: dynamic, V: dynamic}
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::C
                   staticType: null
@@ -7283,7 +7283,7 @@
               staticElement: ConstructorMember
                 base: self::@class::C::@constructor::•
                 substitution: {K: int, V: String}
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::C
                   staticType: null
@@ -7291,13 +7291,13 @@
                 type: C<int, String>
                 typeArguments: TypeArgumentList
                   arguments
-                    TypeName
+                    NamedType
                       name: SimpleIdentifier
                         staticElement: dart:core::@class::int
                         staticType: null
                         token: int @49
                       type: int
-                    TypeName
+                    NamedType
                       name: SimpleIdentifier
                         staticElement: dart:core::@class::String
                         staticType: null
@@ -7340,7 +7340,7 @@
               staticElement: ConstructorMember
                 base: a.dart::@class::C::@constructor::•
                 substitution: {K: int, V: String}
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: a.dart::@class::C
                   staticType: null
@@ -7348,13 +7348,13 @@
                 type: C<int, String>
                 typeArguments: TypeArgumentList
                   arguments
-                    TypeName
+                    NamedType
                       name: SimpleIdentifier
                         staticElement: dart:core::@class::int
                         staticType: null
                         token: int @35
                       type: int
-                    TypeName
+                    NamedType
                       name: SimpleIdentifier
                         staticElement: dart:core::@class::String
                         staticType: null
@@ -7397,7 +7397,7 @@
               staticElement: ConstructorMember
                 base: a.dart::@class::C::@constructor::•
                 substitution: {K: int, V: String}
-              type: TypeName
+              type: NamedType
                 name: PrefixedIdentifier
                   identifier: SimpleIdentifier
                     staticElement: a.dart::@class::C
@@ -7413,13 +7413,13 @@
                 type: C<int, String>
                 typeArguments: TypeArgumentList
                   arguments
-                    TypeName
+                    NamedType
                       name: SimpleIdentifier
                         staticElement: dart:core::@class::int
                         staticType: null
                         token: int @42
                       type: int
-                    TypeName
+                    NamedType
                       name: SimpleIdentifier
                         staticElement: dart:core::@class::String
                         staticType: null
@@ -7504,7 +7504,7 @@
                 token: named @91
               period: . @90
               staticElement: self::@class::C::@constructor::named
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::C
                   staticType: null
@@ -7548,7 +7548,7 @@
                 token: named @35
               period: . @34
               staticElement: a.dart::@class::C::@constructor::named
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: a.dart::@class::C
                   staticType: null
@@ -7592,7 +7592,7 @@
                 token: named @42
               period: . @41
               staticElement: a.dart::@class::C::@constructor::named
-              type: TypeName
+              type: NamedType
                 name: PrefixedIdentifier
                   identifier: SimpleIdentifier
                     staticElement: a.dart::@class::C
@@ -7641,7 +7641,7 @@
                 token: named @29
               period: . @28
               staticElement: <null>
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::C
                   staticType: null
@@ -7672,7 +7672,7 @@
               rightParenthesis: ) @24
             constructorName: ConstructorName
               staticElement: <null>
-              type: TypeName
+              type: NamedType
                 name: PrefixedIdentifier
                   identifier: SimpleIdentifier
                     staticElement: <null>
@@ -7723,7 +7723,7 @@
                 token: named @42
               period: . @41
               staticElement: <null>
-              type: TypeName
+              type: NamedType
                 name: PrefixedIdentifier
                   identifier: SimpleIdentifier
                     staticElement: a.dart::@class::C
@@ -7771,7 +7771,7 @@
                 token: named @42
               period: . @41
               staticElement: <null>
-              type: TypeName
+              type: NamedType
                 name: PrefixedIdentifier
                   identifier: SimpleIdentifier
                     staticElement: <null>
@@ -7815,7 +7815,7 @@
                 token: named @20
               period: . @19
               staticElement: <null>
-              type: TypeName
+              type: NamedType
                 name: PrefixedIdentifier
                   identifier: SimpleIdentifier
                     staticElement: <null>
@@ -7867,7 +7867,7 @@
                 token: named @32
               period: . @31
               staticElement: <null>
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::C
                   staticType: null
@@ -7905,7 +7905,7 @@
               rightParenthesis: ) @43
             constructorName: ConstructorName
               staticElement: self::@class::C::@constructor::•
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::C
                   staticType: null
@@ -7944,7 +7944,7 @@
               rightParenthesis: ) @35
             constructorName: ConstructorName
               staticElement: a.dart::@class::C::@constructor::•
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: a.dart::@class::C
                   staticType: null
@@ -7983,7 +7983,7 @@
               rightParenthesis: ) @42
             constructorName: ConstructorName
               staticElement: a.dart::@class::C::@constructor::•
-              type: TypeName
+              type: NamedType
                 name: PrefixedIdentifier
                   identifier: SimpleIdentifier
                     staticElement: a.dart::@class::C
@@ -8022,7 +8022,7 @@
               rightParenthesis: ) @18
             constructorName: ConstructorName
               staticElement: <null>
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: <null>
                   staticType: null
@@ -8057,7 +8057,7 @@
               rightParenthesis: ) @42
             constructorName: ConstructorName
               staticElement: <null>
-              type: TypeName
+              type: NamedType
                 name: PrefixedIdentifier
                   identifier: SimpleIdentifier
                     staticElement: <null>
@@ -8096,7 +8096,7 @@
               rightParenthesis: ) @20
             constructorName: ConstructorName
               staticElement: <null>
-              type: TypeName
+              type: NamedType
                 name: PrefixedIdentifier
                   identifier: SimpleIdentifier
                     staticElement: <null>
@@ -8143,7 +8143,7 @@
               token: a @23
             isOperator: is @25
             staticType: bool
-            type: TypeName
+            type: NamedType
               name: SimpleIdentifier
                 staticElement: dart:core::@class::int
                 staticType: null
@@ -8509,7 +8509,7 @@
             staticType: List<int>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -8552,7 +8552,7 @@
             staticType: List<int>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -8620,7 +8620,7 @@
                   staticType: List<int>
                   typeArguments: TypeArgumentList
                     arguments
-                      TypeName
+                      NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::int
                           staticType: null
@@ -8634,7 +8634,7 @@
             staticType: List<int>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -8673,7 +8673,7 @@
                   staticType: List<int>
                   typeArguments: TypeArgumentList
                     arguments
-                      TypeName
+                      NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::int
                           staticType: null
@@ -8687,7 +8687,7 @@
             staticType: List<int>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -8732,13 +8732,13 @@
             staticType: Map<int, int>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
                     token: int @24
                   type: int
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -8828,13 +8828,13 @@
                   staticType: Map<int, int>
                   typeArguments: TypeArgumentList
                     arguments
-                      TypeName
+                      NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::int
                           staticType: null
                           token: int @38
                         type: int
-                      TypeName
+                      NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::int
                           staticType: null
@@ -8849,13 +8849,13 @@
             staticType: Map<int, int>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
                     token: int @24
                   type: int
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -8899,13 +8899,13 @@
                   staticType: Map<int, int>
                   typeArguments: TypeArgumentList
                     arguments
-                      TypeName
+                      NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::int
                           staticType: null
                           token: int @39
                         type: int
-                      TypeName
+                      NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::int
                           staticType: null
@@ -8920,13 +8920,13 @@
             staticType: Map<int, int>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
                     token: int @24
                   type: int
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -8970,7 +8970,7 @@
               int
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -10345,7 +10345,7 @@
             staticType: Set<int>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -10426,7 +10426,7 @@
                   staticType: Set<int>
                   typeArguments: TypeArgumentList
                     arguments
-                      TypeName
+                      NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::int
                           staticType: null
@@ -10441,7 +10441,7 @@
             staticType: Set<int>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -10481,7 +10481,7 @@
                   staticType: Set<int>
                   typeArguments: TypeArgumentList
                     arguments
-                      TypeName
+                      NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::int
                           staticType: null
@@ -10496,7 +10496,7 @@
             staticType: Set<int>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -11495,7 +11495,7 @@
             staticType: List<Null>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::Null
                     staticType: null
@@ -11523,7 +11523,7 @@
             staticType: List<dynamic>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dynamic@-1
                     staticType: null
@@ -11551,7 +11551,7 @@
             staticType: List<int>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -11569,7 +11569,7 @@
             staticType: List<List<dynamic>>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::List
                     staticType: null
@@ -11587,7 +11587,7 @@
             staticType: List<List<String>>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::List
                     staticType: null
@@ -11595,7 +11595,7 @@
                   type: List<String>
                   typeArguments: TypeArgumentList
                     arguments
-                      TypeName
+                      NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::String
                           staticType: null
@@ -11615,7 +11615,7 @@
             staticType: List<Map<int, List<String>>>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::Map
                     staticType: null
@@ -11623,13 +11623,13 @@
                   type: Map<int, List<String>>
                   typeArguments: TypeArgumentList
                     arguments
-                      TypeName
+                      NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::int
                           staticType: null
                           token: int @288
                         type: int
-                      TypeName
+                      NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::List
                           staticType: null
@@ -11637,7 +11637,7 @@
                         type: List<String>
                         typeArguments: TypeArgumentList
                           arguments
-                            TypeName
+                            NamedType
                               name: SimpleIdentifier
                                 staticElement: dart:core::@class::String
                                 staticType: null
@@ -11687,7 +11687,7 @@
             staticType: List<C>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: a.dart::@class::C
                     staticType: null
@@ -11723,7 +11723,7 @@
             staticType: List<C>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: PrefixedIdentifier
                     identifier: SimpleIdentifier
                       staticElement: a.dart::@class::C
@@ -11772,7 +11772,7 @@
             staticType: List<int Function(String)>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: self::@typeAlias::F
                     staticType: null
@@ -11808,13 +11808,13 @@
             staticType: Map<dynamic, int>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dynamic@-1
                     staticType: null
                     token: dynamic @25
                   type: dynamic
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -11833,13 +11833,13 @@
             staticType: Map<int, dynamic>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
                     token: int @67
                   type: int
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dynamic@-1
                     staticType: null
@@ -11858,13 +11858,13 @@
             staticType: Map<int, String>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
                     token: int @110
                   type: int
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::String
                     staticType: null
@@ -11883,13 +11883,13 @@
             staticType: Map<int, List<String>>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
                     token: int @169
                   type: int
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::List
                     staticType: null
@@ -11897,7 +11897,7 @@
                   type: List<String>
                   typeArguments: TypeArgumentList
                     arguments
-                      TypeName
+                      NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::String
                           staticType: null
@@ -11940,7 +11940,7 @@
             staticType: Set<dynamic>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dynamic@-1
                     staticType: null
@@ -11959,7 +11959,7 @@
             staticType: Set<int>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -11978,7 +11978,7 @@
             staticType: Set<List<String>>
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::List
                     staticType: null
@@ -11986,7 +11986,7 @@
                   type: List<String>
                   typeArguments: TypeArgumentList
                     arguments
-                      TypeName
+                      NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::String
                           staticType: null
@@ -12126,7 +12126,7 @@
         constantInitializer
           TypeLiteral
             staticType: Type
-            typeName: TypeName
+            type: NamedType
               name: SimpleIdentifier
                 staticElement: dart:core::@class::List
                 staticType: List<int>
@@ -12134,7 +12134,7 @@
               type: List<int>
               typeArguments: TypeArgumentList
                 arguments
-                  TypeName
+                  NamedType
                     name: SimpleIdentifier
                       staticElement: dart:core::@class::int
                       staticType: null
@@ -12608,7 +12608,7 @@
                         staticElement: ConstructorMember
                           base: self::@class::A::@constructor::•
                           substitution: {T: dynamic Function()}
-                        type: TypeName
+                        type: NamedType
                           name: SimpleIdentifier
                             staticElement: self::@class::A
                             staticType: null
@@ -13889,7 +13889,7 @@
                     rightParenthesis: ) @47
                   constructorName: ConstructorName
                     staticElement: self::@class::D::@constructor::•
-                    type: TypeName
+                    type: NamedType
                       name: SimpleIdentifier
                         staticElement: self::@class::D
                         staticType: null
@@ -13919,7 +13919,7 @@
                     rightParenthesis: ) @99
                   constructorName: ConstructorName
                     staticElement: self::@class::C::@constructor::•
-                    type: TypeName
+                    type: NamedType
                       name: SimpleIdentifier
                         staticElement: self::@class::C
                         staticType: null
@@ -14139,7 +14139,7 @@
                       staticElement: ConstructorMember
                         base: self::@class::A::@constructor::•
                         substitution: {T: dynamic Function()}
-                      type: TypeName
+                      type: NamedType
                         name: SimpleIdentifier
                           staticElement: self::@class::A
                           staticType: null
@@ -14187,7 +14187,7 @@
                       staticType: int
                     isOperator: is @16
                     staticType: bool
-                    type: TypeName
+                    type: NamedType
                       name: SimpleIdentifier
                         staticElement: dart:core::@class::int
                         staticType: null
@@ -14306,7 +14306,7 @@
                       staticElement: ConstructorMember
                         base: self::@class::B::@constructor::•
                         substitution: {T1: int, T2: double}
-                      type: TypeName
+                      type: NamedType
                         name: SimpleIdentifier
                           staticElement: self::@class::B
                           staticType: null
@@ -14355,7 +14355,7 @@
                       staticElement: ConstructorMember
                         base: self::@class::B::@constructor::•
                         substitution: {T: Never}
-                      type: TypeName
+                      type: NamedType
                         name: SimpleIdentifier
                           staticElement: self::@class::B
                           staticType: null
@@ -14414,7 +14414,7 @@
                       staticElement: ConstructorMember
                         base: self::@class::B::@constructor::•
                         substitution: {T: Never}
-                      type: TypeName
+                      type: NamedType
                         name: SimpleIdentifier
                           staticElement: self::@class::B
                           staticType: null
@@ -14474,7 +14474,7 @@
                       staticElement: ConstructorMember
                         base: self::@class::B::@constructor::•
                         substitution: {T: Null*}
-                      type: TypeName
+                      type: NamedType
                         name: SimpleIdentifier
                           staticElement: self::@class::B
                           staticType: null
@@ -14523,7 +14523,7 @@
                       staticElement: ConstructorMember
                         base: self::@class::B::@constructor::•
                         substitution: {T: Null*}
-                      type: TypeName
+                      type: NamedType
                         name: SimpleIdentifier
                           staticElement: self::@class::B
                           staticType: null
@@ -14567,7 +14567,7 @@
                   staticElement: ConstructorMember
                     base: self::@class::B::@constructor::•
                     substitution: {T: Never}
-                  type: TypeName
+                  type: NamedType
                     name: SimpleIdentifier
                       staticElement: self::@class::B
                       staticType: null
@@ -14617,7 +14617,7 @@
                       staticElement: ConstructorMember
                         base: self::@class::B::@constructor::•
                         substitution: {T: Never}
-                      type: TypeName
+                      type: NamedType
                         name: SimpleIdentifier
                           staticElement: self::@class::B
                           staticType: null
@@ -14672,7 +14672,7 @@
                       staticElement: ConstructorMember
                         base: self::@class::B::@constructor::•
                         substitution: {T1: Never, T2: Never}
-                      type: TypeName
+                      type: NamedType
                         name: SimpleIdentifier
                           staticElement: self::@class::B
                           staticType: null
@@ -14723,7 +14723,7 @@
                       staticElement: ConstructorMember
                         base: self::@class::B::@constructor::•
                         substitution: {T: Never}
-                      type: TypeName
+                      type: NamedType
                         name: SimpleIdentifier
                           staticElement: self::@class::B
                           staticType: null
@@ -16135,7 +16135,7 @@
                   staticElement: ConstructorMember
                     base: self::@class::A::@constructor::•
                     substitution: {T: int Function(double)}
-                  type: TypeName
+                  type: NamedType
                     name: SimpleIdentifier
                       staticElement: self::@class::A
                       staticType: null
@@ -16162,14 +16162,14 @@
                                   staticElement: a@78
                                   staticType: null
                                   token: a @78
-                                type: TypeName
+                                type: NamedType
                                   name: SimpleIdentifier
                                     staticElement: dart:core::@class::double
                                     staticType: null
                                     token: double @71
                                   type: double
                             rightParenthesis: ) @79
-                          returnType: TypeName
+                          returnType: NamedType
                             name: SimpleIdentifier
                               staticElement: dart:core::@class::int
                               staticType: null
@@ -17774,14 +17774,14 @@
                           staticElement: a@52
                           staticType: null
                           token: a @52
-                        type: TypeName
+                        type: NamedType
                           name: SimpleIdentifier
                             staticElement: dart:core::@class::String
                             staticType: null
                             token: String @45
                           type: String
                     rightParenthesis: ) @53
-                  returnType: TypeName
+                  returnType: NamedType
                     name: SimpleIdentifier
                       staticElement: dart:core::@class::int
                       staticType: null
@@ -17850,14 +17850,14 @@
                           staticElement: a@52
                           staticType: null
                           token: a @52
-                        type: TypeName
+                        type: NamedType
                           name: SimpleIdentifier
                             staticElement: dart:core::@class::String
                             staticType: null
                             token: String @45
                           type: String
                     rightParenthesis: ) @53
-                  returnType: TypeName
+                  returnType: NamedType
                     name: SimpleIdentifier
                       staticElement: dart:core::@class::int
                       staticType: null
@@ -17908,7 +17908,7 @@
               staticElement: ConstructorMember
                 base: self::@class::A::@constructor::•
                 substitution: {T: String Function({int? a})}
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::A
                   staticType: null
@@ -17942,14 +17942,14 @@
                                 staticElement: a@63
                                 staticType: null
                                 token: a @63
-                              type: TypeName
+                              type: NamedType
                                 name: SimpleIdentifier
                                   staticElement: dart:core::@class::int
                                   staticType: null
                                   token: int @58
                                 type: int?
                         rightParenthesis: ) @65
-                      returnType: TypeName
+                      returnType: NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::String
                           staticType: null
@@ -17995,7 +17995,7 @@
               staticElement: ConstructorMember
                 base: self::@class::A::@constructor::•
                 substitution: {T: String Function([int?])}
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::A
                   staticType: null
@@ -18029,14 +18029,14 @@
                                 staticElement: a@63
                                 staticType: null
                                 token: a @63
-                              type: TypeName
+                              type: NamedType
                                 name: SimpleIdentifier
                                   staticElement: dart:core::@class::int
                                   staticType: null
                                   token: int @58
                                 type: int?
                         rightParenthesis: ) @65
-                      returnType: TypeName
+                      returnType: NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::String
                           staticType: null
@@ -18082,7 +18082,7 @@
               staticElement: ConstructorMember
                 base: self::@class::A::@constructor::•
                 substitution: {T: String Function({required int a})}
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::A
                   staticType: null
@@ -18117,14 +18117,14 @@
                                 staticType: null
                                 token: a @71
                               requiredKeyword: required @58
-                              type: TypeName
+                              type: NamedType
                                 name: SimpleIdentifier
                                   staticElement: dart:core::@class::int
                                   staticType: null
                                   token: int @67
                                 type: int
                         rightParenthesis: ) @73
-                      returnType: TypeName
+                      returnType: NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::String
                           staticType: null
@@ -18170,7 +18170,7 @@
               staticElement: ConstructorMember
                 base: self::@class::A::@constructor::•
                 substitution: {T: String Function(int)}
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::A
                   staticType: null
@@ -18197,14 +18197,14 @@
                               staticElement: a@61
                               staticType: null
                               token: a @61
-                            type: TypeName
+                            type: NamedType
                               name: SimpleIdentifier
                                 staticElement: dart:core::@class::int
                                 staticType: null
                                 token: int @57
                               type: int
                         rightParenthesis: ) @62
-                      returnType: TypeName
+                      returnType: NamedType
                         name: SimpleIdentifier
                           staticElement: dart:core::@class::String
                           staticType: null
@@ -18533,7 +18533,7 @@
                 token: named @67
               period: . @66
               staticElement: self::@class::C::@constructor::named
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::C
                   staticType: null
@@ -19108,7 +19108,7 @@
               staticElement: ConstructorMember
                 base: self::@class::C::@constructor::•
                 substitution: {V: int}
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::C
                   staticType: null
@@ -19176,7 +19176,7 @@
               rightParenthesis: ) @114
             constructorName: ConstructorName
               staticElement: self::@class::C::@constructor::•
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::C
                   staticType: null
@@ -22218,7 +22218,7 @@
               token: A @36
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -22274,7 +22274,7 @@
               token: A @36
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -22441,7 +22441,7 @@
               staticType: null
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -22654,7 +22654,7 @@
               token: A @30
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -22798,7 +22798,7 @@
               staticType: null
             typeArguments: TypeArgumentList
               arguments
-                TypeName
+                NamedType
                   name: SimpleIdentifier
                     staticElement: dart:core::@class::int
                     staticType: null
@@ -33883,7 +33883,7 @@
               staticElement: ConstructorMember
                 base: self::@class::A::@constructor::•
                 substitution: {T: int}
-              type: TypeName
+              type: NamedType
                 name: SimpleIdentifier
                   staticElement: self::@class::A
                   staticType: null
diff --git a/tools/VERSION b/tools/VERSION
index 6d1032a..9f69da1 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 15
 PATCH 0
-PRERELEASE 269
+PRERELEASE 270
 PRERELEASE_PATCH 0
\ No newline at end of file
