Use AstNodeImpl for a few NodeList(s).

Change-Id: I2a078c35458ffc509e93108bd189aa29de7a6b7f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/262822
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/clients/dart_style/rewrite_cascade.dart b/pkg/analyzer/lib/src/clients/dart_style/rewrite_cascade.dart
index 471a629..adbaeae 100644
--- a/pkg/analyzer/lib/src/clients/dart_style/rewrite_cascade.dart
+++ b/pkg/analyzer/lib/src/clients/dart_style/rewrite_cascade.dart
@@ -13,6 +13,7 @@
   required ExpressionStatement expressionStatement,
   required CascadeExpression cascadeExpression,
 }) {
+  cascadeExpression as CascadeExpressionImpl;
   assert(cascadeExpression.cascadeSections.length == 1);
 
   var newTarget = astFactory.parenthesizedExpression(
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index 6f97840..f9529e8 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -36,12 +36,12 @@
 ///        [StringLiteral] [StringLiteral]+
 class AdjacentStringsImpl extends StringLiteralImpl implements AdjacentStrings {
   /// The strings that are implicitly concatenated.
-  final NodeListImpl<StringLiteral> _strings = NodeListImpl._();
+  final NodeListImpl<StringLiteralImpl> _strings = NodeListImpl._();
 
   /// Initialize a newly created list of adjacent strings. To be syntactically
   /// valid, the list of [strings] must contain at least two elements.
   AdjacentStringsImpl({
-    required List<StringLiteral> strings,
+    required List<StringLiteralImpl> strings,
   }) {
     _strings._initialize(this, strings);
   }
@@ -53,7 +53,7 @@
   Token get endToken => _strings.endToken!;
 
   @override
-  NodeListImpl<StringLiteral> get strings => _strings;
+  NodeListImpl<StringLiteralImpl> get strings => _strings;
 
   @override
   ChildEntities get _childEntities {
@@ -77,8 +77,7 @@
   void _appendStringValue(StringBuffer buffer) {
     int length = strings.length;
     for (int i = 0; i < length; i++) {
-      var stringLiteral = strings[i] as StringLiteralImpl;
-      stringLiteral._appendStringValue(buffer);
+      strings[i]._appendStringValue(buffer);
     }
   }
 }
@@ -342,7 +341,7 @@
   Token leftParenthesis;
 
   /// The expressions producing the values of the arguments.
-  final NodeListImpl<Expression> _arguments = NodeListImpl._();
+  final NodeListImpl<ExpressionImpl> _arguments = NodeListImpl._();
 
   /// The right parenthesis.
   @override
@@ -360,14 +359,14 @@
   /// be `null` if there are no arguments.
   ArgumentListImpl({
     required this.leftParenthesis,
-    required List<Expression> arguments,
+    required List<ExpressionImpl> arguments,
     required this.rightParenthesis,
   }) {
     _arguments._initialize(this, arguments);
   }
 
   @override
-  NodeListImpl<Expression> get arguments => _arguments;
+  NodeListImpl<ExpressionImpl> get arguments => _arguments;
 
   @override
   Token get beginToken => leftParenthesis;
@@ -1227,7 +1226,7 @@
   Token leftBracket;
 
   /// The statements contained in the block.
-  final NodeListImpl<Statement> _statements = NodeListImpl._();
+  final NodeListImpl<StatementImpl> _statements = NodeListImpl._();
 
   /// The right curly bracket.
   @override
@@ -1236,7 +1235,7 @@
   /// Initialize a newly created block of code.
   BlockImpl({
     required this.leftBracket,
-    required List<Statement> statements,
+    required List<StatementImpl> statements,
     required this.rightBracket,
   }) {
     _statements._initialize(this, statements);
@@ -1249,7 +1248,7 @@
   Token get endToken => rightBracket;
 
   @override
-  NodeListImpl<Statement> get statements => _statements;
+  NodeListImpl<StatementImpl> get statements => _statements;
 
   @override
   ChildEntities get _childEntities => ChildEntities()
@@ -1397,13 +1396,13 @@
   ExpressionImpl _target;
 
   /// The cascade sections sharing the common target.
-  final NodeListImpl<Expression> _cascadeSections = NodeListImpl._();
+  final NodeListImpl<ExpressionImpl> _cascadeSections = NodeListImpl._();
 
   /// Initialize a newly created cascade expression. The list of
   /// [cascadeSections] must contain at least one element.
   CascadeExpressionImpl({
     required ExpressionImpl target,
-    required List<Expression> cascadeSections,
+    required List<ExpressionImpl> cascadeSections,
   }) : _target = target {
     _becomeParentOf(_target);
     _cascadeSections._initialize(this, cascadeSections);
@@ -1413,7 +1412,7 @@
   Token get beginToken => _target.beginToken;
 
   @override
-  NodeListImpl<Expression> get cascadeSections => _cascadeSections;
+  NodeListImpl<ExpressionImpl> get cascadeSections => _cascadeSections;
 
   @override
   Token get endToken => _cascadeSections.endToken!;
@@ -1875,7 +1874,7 @@
   Token leftBracket;
 
   /// The members defined by the class or mixin.
-  final NodeListImpl<ClassMember> _members = NodeListImpl._();
+  final NodeListImpl<ClassMemberImpl> _members = NodeListImpl._();
 
   /// The right curly bracket.
   @override
@@ -1903,7 +1902,7 @@
     required ImplementsClauseImpl? implementsClause,
     required NativeClauseImpl? nativeClause,
     required this.leftBracket,
-    required List<ClassMember> members,
+    required List<ClassMemberImpl> members,
     required this.rightBracket,
   })  : _typeParameters = typeParameters,
         _extendsClause = extendsClause,
@@ -1946,7 +1945,7 @@
   }
 
   @override
-  NodeListImpl<ClassMember> get members => _members;
+  NodeListImpl<ClassMemberImpl> get members => _members;
 
   @override
   NativeClauseImpl? get nativeClause => _nativeClause;
diff --git a/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart b/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
index 9cee45b..548db30 100644
--- a/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
@@ -186,9 +186,9 @@
   @override
   void visitClassDeclaration(covariant ClassDeclarationImpl node) {
     _visitNodeList(node.metadata, separator: ' ', suffix: ' ');
+    _visitToken(node.augmentKeyword, suffix: ' ');
     _visitToken(node.abstractKeyword, suffix: ' ');
     _visitToken(node.macroKeyword, suffix: ' ');
-    _visitToken(node.augmentKeyword, suffix: ' ');
     sink.write('class ');
     _visitToken(node.name);
     _visitNode(node.typeParameters);
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index b7ca741..9a2766a 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -857,7 +857,7 @@
           superclassConstructor.isConst && !hasMixinWithInstanceVariables;
       List<ParameterElement> superParameters = superclassConstructor.parameters;
       int count = superParameters.length;
-      var argumentsForSuperInvocation = <Expression>[];
+      var argumentsForSuperInvocation = <ExpressionImpl>[];
       if (count > 0) {
         var implicitParameters = <ParameterElement>[];
         for (int i = 0; i < count; i++) {
diff --git a/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart b/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart
index 3d943e2..a1dabaa 100644
--- a/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart
@@ -492,7 +492,7 @@
       Expression value;
       ParameterElement? parameter;
       Object parameterKey;
-      if (argument is NamedExpression) {
+      if (argument is NamedExpressionImpl) {
         value = argument.expression;
         parameterKey = argument.name.label.name;
       } else {
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index c71aff1..6f4edef 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -201,7 +201,7 @@
       push(
         CascadeExpressionImpl(
           target: expression,
-          cascadeSections: <Expression>[],
+          cascadeSections: <ExpressionImpl>[],
         ),
       );
     }
@@ -656,7 +656,7 @@
     assert(optional(')', rightParenthesis));
     debugEvent("Arguments");
 
-    var expressions = popTypedList2<Expression>(count);
+    var expressions = popTypedList2<ExpressionImpl>(count);
     final arguments = ArgumentListImpl(
       leftParenthesis: leftParenthesis,
       arguments: expressions,
@@ -707,7 +707,7 @@
       case Assert.Expression:
         // The parser has already reported an error indicating that assert
         // cannot be used in an expression. Insert a placeholder.
-        List<Expression> arguments = <Expression>[condition];
+        final arguments = <ExpressionImpl>[condition];
         if (message != null) {
           arguments.add(message);
         }
@@ -821,7 +821,7 @@
     assert(optional('}', rightBracket));
     debugEvent("Block");
 
-    var statements = popTypedList2<Statement>(count);
+    var statements = popTypedList2<StatementImpl>(count);
     push(
       BlockImpl(
         leftBracket: leftBracket,
@@ -837,7 +837,7 @@
     assert(optional('}', rightBracket));
     debugEvent("BlockFunctionBody");
 
-    var statements = popTypedList2<Statement>(count);
+    var statements = popTypedList2<StatementImpl>(count);
     final block = BlockImpl(
       leftBracket: leftBracket,
       statements: statements,
@@ -870,13 +870,13 @@
   void endCascade() {
     debugEvent("Cascade");
 
-    var expression = pop() as Expression;
+    var expression = pop() as ExpressionImpl;
     var cascade = pop() as CascadeExpressionImpl;
     pop(); // Token.
     push(
       CascadeExpressionImpl(
         target: cascade.target,
-        cascadeSections: <Expression>[
+        cascadeSections: <ExpressionImpl>[
           ...cascade.cascadeSections,
           expression,
         ],
@@ -950,7 +950,7 @@
       handleRecoverableError(
           messageConstConstructorWithBody, bodyToken, bodyToken);
     }
-    ConstructorDeclaration constructor = ConstructorDeclarationImpl(
+    var constructor = ConstructorDeclarationImpl(
       comment: comment,
       metadata: metadata,
       externalKeyword: modifiers?.externalKeyword,
@@ -4764,7 +4764,7 @@
   void handleStringJuxtaposition(Token startToken, int literalCount) {
     debugEvent("StringJuxtaposition");
 
-    var strings = popTypedList2<StringLiteral>(literalCount);
+    var strings = popTypedList2<StringLiteralImpl>(literalCount);
     push(AdjacentStringsImpl(strings: strings));
   }
 
@@ -5210,7 +5210,7 @@
   final TypeParameterListImpl? typeParameters;
 
   Token leftBracket;
-  final List<ClassMember> members = [];
+  final List<ClassMemberImpl> members = [];
   Token rightBracket;
 
   _ClassLikeDeclarationBuilder({
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 4764faf..bb801ef 100644
--- a/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
@@ -24,14 +24,6 @@
 /// rather than 'integerLiteral'.
 @internal
 class AstTestFactory {
-  static ArgumentListImpl argumentList(
-          [List<Expression> arguments = const []]) =>
-      ArgumentListImpl(
-        leftParenthesis: TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
-        arguments: arguments,
-        rightParenthesis: TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
-      );
-
   static AssignmentExpressionImpl assignmentExpression(Expression leftHandSide,
           TokenType operator, Expression rightHandSide) =>
       AssignmentExpressionImpl(
@@ -40,37 +32,6 @@
         rightHandSide: rightHandSide as ExpressionImpl,
       );
 
-  static ClassDeclarationImpl classDeclaration(
-          Keyword? abstractKeyword,
-          String name,
-          TypeParameterList? typeParameters,
-          ExtendsClause? extendsClause,
-          WithClause? withClause,
-          ImplementsClause? implementsClause,
-          {List<ClassMember> members = const [],
-          bool isMacro = false,
-          bool isAugmentation = false}) =>
-      ClassDeclarationImpl(
-          comment: null,
-          metadata: null,
-          abstractKeyword: abstractKeyword == null
-              ? null
-              : TokenFactory.tokenFromKeyword(abstractKeyword),
-          macroKeyword: isMacro ? TokenFactory.tokenFromString('macro') : null,
-          augmentKeyword:
-              isAugmentation ? TokenFactory.tokenFromString('augment') : null,
-          classKeyword: TokenFactory.tokenFromKeyword(Keyword.CLASS),
-          name: TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, name),
-          typeParameters: typeParameters as TypeParameterListImpl?,
-          extendsClause: extendsClause as ExtendsClauseImpl?,
-          withClause: withClause as WithClauseImpl?,
-          implementsClause: implementsClause as ImplementsClauseImpl?,
-          nativeClause: null,
-          leftBracket: TokenFactory.tokenFromType(TokenType.OPEN_CURLY_BRACKET),
-          members: members,
-          rightBracket:
-              TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET));
-
   static ConstructorDeclarationImpl constructorDeclaration(
           Identifier returnType,
           String? name,
@@ -223,14 +184,6 @@
           [List<Combinator> combinators = const []]) =>
       importDirective([], uri, false, prefix, combinators);
 
-  static InstanceCreationExpressionImpl instanceCreationExpression(
-          Keyword? keyword, ConstructorName name,
-          [List<Expression> arguments = const []]) =>
-      astFactory.instanceCreationExpression(
-          keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
-          name,
-          argumentList(arguments));
-
   static InterpolationExpressionImpl interpolationExpression(
           Expression expression) =>
       astFactory.interpolationExpression(
@@ -413,19 +366,6 @@
   static SimpleStringLiteralImpl string2(String content) => astFactory
       .simpleStringLiteral(TokenFactory.tokenFromString("'$content'"), content);
 
-  static SuperConstructorInvocationImpl superConstructorInvocation(
-          [List<Expression> arguments = const []]) =>
-      superConstructorInvocation2(null, arguments);
-
-  static SuperConstructorInvocationImpl superConstructorInvocation2(
-          String? name,
-          [List<Expression> arguments = const []]) =>
-      astFactory.superConstructorInvocation(
-          TokenFactory.tokenFromKeyword(Keyword.SUPER),
-          name == null ? null : TokenFactory.tokenFromType(TokenType.PERIOD),
-          name == null ? null : identifier3(name),
-          argumentList(arguments));
-
   static SuperExpressionImpl superExpression() =>
       astFactory.superExpression(TokenFactory.tokenFromKeyword(Keyword.SUPER));
 
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
index 6403ea2..6a85f6d 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
@@ -191,7 +191,7 @@
   }
 
   AdjacentStrings _readAdjacentStrings() {
-    var components = _readNodeList<StringLiteral>();
+    var components = _readNodeList<StringLiteralImpl>();
     var node = AdjacentStringsImpl(strings: components);
     _readExpressionResolution(node);
     return node;
@@ -215,7 +215,7 @@
   }
 
   ArgumentList _readArgumentList() {
-    var arguments = _readNodeList<Expression>();
+    var arguments = _readNodeList<ExpressionImpl>();
 
     return ArgumentListImpl(
       leftParenthesis: Tokens.openParenthesis(),
@@ -306,7 +306,7 @@
 
   CascadeExpression _readCascadeExpression() {
     var target = readNode() as ExpressionImpl;
-    var sections = _readNodeList<Expression>();
+    var sections = _readNodeList<ExpressionImpl>();
     var node = CascadeExpressionImpl(
       target: target,
       cascadeSections: sections,
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 3d625a7..f919cd5 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
@@ -62,12 +62,11 @@
   }
 
   void test_visitArgumentList() {
-    _assertSource(
-        "(a, b)",
-        AstTestFactory.argumentList([
-          AstTestFactory.identifier3("a"),
-          AstTestFactory.identifier3("b")
-        ]));
+    final code = '(0, 1)';
+    final findNode = _parseStringToFindNode('''
+final x = f$code;
+''');
+    _assertSource(code, findNode.argumentList(code));
   }
 
   void test_visitAsExpression() {
@@ -344,24 +343,21 @@
   }
 
   void test_visitClassDeclaration_abstract() {
-    _assertSource(
-        "abstract class C {}",
-        AstTestFactory.classDeclaration(
-            Keyword.ABSTRACT, "C", null, null, null, null));
+    final code = 'abstract class C {}';
+    final findNode = _parseStringToFindNode(code);
+    _assertSource(code, findNode.classDeclaration(code));
   }
 
   void test_visitClassDeclaration_abstractAugment() {
-    ClassDeclaration declaration = AstTestFactory.classDeclaration(
-        Keyword.ABSTRACT, "C", null, null, null, null,
-        isAugmentation: true);
-    _assertSource("abstract augment class C {}", declaration);
+    final code = 'augment abstract class C {}';
+    final findNode = _parseStringToFindNode(code);
+    _assertSource(code, findNode.classDeclaration('class C'));
   }
 
   void test_visitClassDeclaration_abstractMacro() {
-    ClassDeclaration declaration = AstTestFactory.classDeclaration(
-        Keyword.ABSTRACT, "C", null, null, null, null,
-        isMacro: true);
-    _assertSource("abstract macro class C {}", declaration);
+    final code = 'abstract macro class C {}';
+    final findNode = _parseStringToFindNode(code);
+    _assertSource(code, findNode.classDeclaration(code));
   }
 
   void test_visitClassDeclaration_augment() {
@@ -375,8 +371,9 @@
   }
 
   void test_visitClassDeclaration_empty() {
-    _assertSource("class C {}",
-        AstTestFactory.classDeclaration(null, "C", null, null, null, null));
+    final code = 'class C {}';
+    final findNode = _parseStringToFindNode(code);
+    _assertSource(code, findNode.classDeclaration(code));
   }
 
   void test_visitClassDeclaration_extends() {
@@ -440,10 +437,9 @@
   }
 
   void test_visitClassDeclaration_parameters() {
-    _assertSource(
-        "class C<E> {}",
-        AstTestFactory.classDeclaration(null, "C",
-            AstTestFactory.typeParameterList(["E"]), null, null, null));
+    final code = 'class C<E> {}';
+    final findNode = _parseStringToFindNode(code);
+    _assertSource(code, findNode.classDeclaration(code));
   }
 
   void test_visitClassDeclaration_parameters_extends() {
@@ -487,13 +483,9 @@
   }
 
   void test_visitClassDeclaration_singleMember() {
-    _assertSource(
-        "class C {var a;}",
-        AstTestFactory.classDeclaration(null, "C", null, null, null, null,
-            members: [
-              AstTestFactory.fieldDeclaration2(
-                  false, Keyword.VAR, [AstTestFactory.variableDeclaration("a")])
-            ]));
+    final code = 'class C {var a;}';
+    final findNode = _parseStringToFindNode(code);
+    _assertSource(code, findNode.classDeclaration(code));
   }
 
   void test_visitClassDeclaration_withMetadata() {
@@ -3164,11 +3156,23 @@
   }
 
   void test_visitSuperConstructorInvocation() {
-    _assertSource("super()", AstTestFactory.superConstructorInvocation());
+    final code = 'super(0)';
+    final findNode = _parseStringToFindNode('''
+class A extends B {
+  A() : $code;
+}
+''');
+    _assertSource(code, findNode.superConstructorInvocation(code));
   }
 
   void test_visitSuperConstructorInvocation_named() {
-    _assertSource("super.c()", AstTestFactory.superConstructorInvocation2("c"));
+    final code = 'super.named(0)';
+    final findNode = _parseStringToFindNode('''
+class A extends B {
+  A() : $code;
+}
+''');
+    _assertSource(code, findNode.superConstructorInvocation(code));
   }
 
   void test_visitSuperExpression() {
diff --git a/pkg/analyzer/test/src/dart/constant/test_all.dart b/pkg/analyzer/test/src/dart/constant/test_all.dart
index 977b74c..a46b409 100644
--- a/pkg/analyzer/test/src/dart/constant/test_all.dart
+++ b/pkg/analyzer/test/src/dart/constant/test_all.dart
@@ -7,7 +7,6 @@
 import 'evaluation_test.dart' as evaluation;
 import 'has_type_parameter_reference_test.dart' as has_type_parameter_reference;
 import 'potentially_constant_test.dart' as potentially_constant;
-import 'utilities_test.dart' as utilities;
 import 'value_test.dart' as value;
 
 main() {
@@ -15,7 +14,6 @@
     evaluation.main();
     has_type_parameter_reference.main();
     potentially_constant.main();
-    utilities.main();
     value.main();
   }, name: 'constant');
 }
diff --git a/pkg/analyzer/test/src/dart/constant/utilities_test.dart b/pkg/analyzer/test/src/dart/constant/utilities_test.dart
deleted file mode 100644
index 6d3619b..0000000
--- a/pkg/analyzer/test/src/dart/constant/utilities_test.dart
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/token.dart';
-import 'package:analyzer/dart/element/element.dart';
-import 'package:analyzer/src/dart/ast/token.dart';
-import 'package:analyzer/src/dart/element/element.dart';
-import 'package:analyzer/src/generated/constant.dart';
-import 'package:analyzer/src/generated/testing/ast_test_factory.dart';
-import 'package:analyzer/src/generated/testing/element_factory.dart';
-import 'package:test/test.dart';
-import 'package:test_reflective_loader/test_reflective_loader.dart';
-
-main() {
-  defineReflectiveSuite(() {
-    defineReflectiveTests(ReferenceFinderTest);
-  });
-}
-
-@reflectiveTest
-class ReferenceFinderTest {
-  late final Element _tail;
-  final List<ConstantEvaluationTarget> _dependencies = [];
-
-  void test_visitSimpleIdentifier_const() {
-    _visitNode(_makeTailVariable("v2", true));
-    _assertOneArc(_tail);
-  }
-
-  void test_visitSuperConstructorInvocation_const() {
-    _visitNode(_makeTailSuperConstructorInvocation("A", true));
-    _assertOneArc(_tail);
-  }
-
-  void test_visitSuperConstructorInvocation_nonConst() {
-    _visitNode(_makeTailSuperConstructorInvocation("A", false));
-    _assertOneArc(_tail);
-  }
-
-  void test_visitSuperConstructorInvocation_unresolved() {
-    SuperConstructorInvocation superConstructorInvocation =
-        AstTestFactory.superConstructorInvocation();
-    _visitNode(superConstructorInvocation);
-    _assertNoArcs();
-  }
-
-  void _assertNoArcs() {
-    expect(_dependencies, isEmpty);
-  }
-
-  void _assertOneArc(Element tail) {
-    expect(_dependencies, hasLength(1));
-    expect(_dependencies[0], same(tail));
-  }
-
-  SuperConstructorInvocation _makeTailSuperConstructorInvocation(
-      String name, bool isConst) {
-    List<ConstructorInitializer> initializers = <ConstructorInitializer>[];
-    var constructorDeclaration = AstTestFactory.constructorDeclaration(
-        AstTestFactory.identifier3(name),
-        null,
-        AstTestFactory.formalParameterList(),
-        initializers);
-    if (isConst) {
-      constructorDeclaration.constKeyword = KeywordToken(Keyword.CONST, 0);
-    }
-    ClassElementImpl classElement = ElementFactory.classElement2(name);
-    var superConstructorInvocation =
-        AstTestFactory.superConstructorInvocation();
-    ConstructorElementImpl constructorElement =
-        ElementFactory.constructorElement(classElement, name, isConst);
-    _tail = constructorElement;
-    superConstructorInvocation.staticElement = constructorElement;
-    return superConstructorInvocation;
-  }
-
-  SimpleIdentifier _makeTailVariable(String name, bool isConst) {
-    VariableDeclaration variableDeclaration =
-        AstTestFactory.variableDeclaration(name);
-    ConstLocalVariableElementImpl variableElement =
-        ElementFactory.constLocalVariableElement(name);
-    _tail = variableElement;
-    variableElement.isConst = isConst;
-    AstTestFactory.variableDeclarationList2(
-        isConst ? Keyword.CONST : Keyword.VAR, [variableDeclaration]);
-    var identifier = AstTestFactory.identifier3(name);
-    identifier.staticElement = variableElement;
-    return identifier;
-  }
-
-  void _visitNode(AstNode node) {
-    var referenceFinder = ReferenceFinder((dependency) {
-      _dependencies.add(dependency);
-    });
-    node.accept(referenceFinder);
-  }
-}