Version 2.19.0-275.0.dev

Merge 15be61ed9a0bdd88f6cf3718d51db1e20444116c into dev
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart b/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
index 4940609..bade581 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
@@ -393,8 +393,8 @@
           }
         }
       } else if (node is CatchClause) {
-        if (node.exceptionParameter2?.declaredElement == variable ||
-            node.stackTraceParameter2?.declaredElement == variable) {
+        if (node.exceptionParameter?.declaredElement == variable ||
+            node.stackTraceParameter?.declaredElement == variable) {
           return distance;
         }
       }
diff --git a/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart b/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart
index 8c0782b..f3531f1 100644
--- a/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart
+++ b/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart
@@ -1013,7 +1013,7 @@
           var struct = _KeywordConditionBlockStructure(
               catchKeyword,
               catchNode.leftParenthesis!,
-              catchNode.exceptionParameter2!,
+              catchNode.exceptionParameter!,
               catchNode.rightParenthesis!,
               catchNode.body);
           if (sb != null) {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_on_type.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_on_type.dart
index b2429f7..94f3b64 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_on_type.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_on_type.dart
@@ -26,12 +26,12 @@
         var rightParenthesis = catchClause.rightParenthesis;
         if (catchKeyword != null &&
             catchClause.exceptionType == null &&
-            catchClause.exceptionParameter2 == exceptionParameter &&
+            catchClause.exceptionParameter == exceptionParameter &&
             rightParenthesis != null) {
           var exceptionTypeName = exceptionParameter.name;
           fixArguments.add(exceptionTypeName);
           await builder.addDartFileEdit(file, (builder) {
-            var stackTraceParameter = catchClause.stackTraceParameter2;
+            var stackTraceParameter = catchClause.stackTraceParameter;
             if (stackTraceParameter != null) {
               builder.addSimpleReplacement(
                 range.startStart(catchKeyword, stackTraceParameter),
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/remove_unused_catch_clause.dart b/pkg/analysis_server/lib/src/services/correction/dart/remove_unused_catch_clause.dart
index a9117b9..f23d474 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/remove_unused_catch_clause.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/remove_unused_catch_clause.dart
@@ -39,7 +39,7 @@
       return;
     }
 
-    if (catchClause.exceptionParameter2 == exceptionParameter) {
+    if (catchClause.exceptionParameter == exceptionParameter) {
       await builder.addDartFileEdit(file, (builder) {
         builder.addDeletion(range.startStart(catchKeyword, catchClause.body));
       });
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/remove_unused_catch_stack.dart b/pkg/analysis_server/lib/src/services/correction/dart/remove_unused_catch_stack.dart
index f1ca983..578ee6d 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/remove_unused_catch_stack.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/remove_unused_catch_stack.dart
@@ -34,12 +34,12 @@
       return;
     }
 
-    final exceptionParameter = catchClause.exceptionParameter2;
+    final exceptionParameter = catchClause.exceptionParameter;
     if (exceptionParameter == null) {
       return;
     }
 
-    if (catchClause.stackTraceParameter2 == stackTraceParameter) {
+    if (catchClause.stackTraceParameter == stackTraceParameter) {
       await builder.addDartFileEdit(file, (builder) {
         builder.addDeletion(
           range.endEnd(exceptionParameter, stackTraceParameter),
diff --git a/pkg/analysis_server/lib/src/services/correction/error_fix_status.yaml b/pkg/analysis_server/lib/src/services/correction/error_fix_status.yaml
index c662700..7f084dc 100644
--- a/pkg/analysis_server/lib/src/services/correction/error_fix_status.yaml
+++ b/pkg/analysis_server/lib/src/services/correction/error_fix_status.yaml
@@ -28,7 +28,7 @@
 #   - 206 for ParserErrorCodes.
 # -  68 "needsFix"
 # - 287 "hasFix"
-# -  57 "noFix"
+# -  55 "noFix"
 
 AnalysisOptionsErrorCode.INCLUDED_FILE_PARSE_ERROR:
   status: noFix
@@ -2599,14 +2599,6 @@
   status: hasFix
 StaticWarningCode.INVALID_NULL_AWARE_OPERATOR_AFTER_SHORT_CIRCUIT:
   status: hasFix
-StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED:
-  status: noFix
-  notes: |-
-    This is a pre-null safety code. No need to add a fix.
-StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL:
-  status: noFix
-  notes: |-
-    This is a pre-null safety code. No need to add a fix.
 StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH:
   status: hasFix
 StaticWarningCode.UNNECESSARY_NON_NULL_ASSERTION:
diff --git a/pkg/analysis_server/lib/src/services/correction/statement_analyzer.dart b/pkg/analysis_server/lib/src/services/correction/statement_analyzer.dart
index 293ec6c..59d04bd 100644
--- a/pkg/analysis_server/lib/src/services/correction/statement_analyzer.dart
+++ b/pkg/analysis_server/lib/src/services/correction/statement_analyzer.dart
@@ -157,7 +157,7 @@
         for (var catchClause in catchClauses) {
           if (firstSelectedNode == catchClause ||
               firstSelectedNode == catchClause.body ||
-              firstSelectedNode == catchClause.exceptionParameter2) {
+              firstSelectedNode == catchClause.exceptionParameter) {
             invalidSelection(
                 'Selection must either cover whole try statement or parts of try, catch, or finally block.');
           }
diff --git a/pkg/analysis_server/lib/src/services/refactoring/legacy/visible_ranges_computer.dart b/pkg/analysis_server/lib/src/services/refactoring/legacy/visible_ranges_computer.dart
index 6e8b38e..05b9fa7 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/legacy/visible_ranges_computer.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/legacy/visible_ranges_computer.dart
@@ -14,8 +14,8 @@
 
   @override
   void visitCatchClause(CatchClause node) {
-    _addLocalVariable(node, node.exceptionParameter2?.declaredElement);
-    _addLocalVariable(node, node.stackTraceParameter2?.declaredElement);
+    _addLocalVariable(node, node.exceptionParameter?.declaredElement);
+    _addLocalVariable(node, node.stackTraceParameter?.declaredElement);
     node.body.accept(this);
   }
 
diff --git a/pkg/analysis_server/tool/code_completion/code_metrics.dart b/pkg/analysis_server/tool/code_completion/code_metrics.dart
index 5aeddc0..6c5b6ad 100644
--- a/pkg/analysis_server/tool/code_completion/code_metrics.dart
+++ b/pkg/analysis_server/tool/code_completion/code_metrics.dart
@@ -294,8 +294,8 @@
   void visitCatchClause(CatchClause node) {
     _visitChildren(node, {
       'exceptionType': node.exceptionType,
-      'exceptionParameter': node.exceptionParameter2,
-      'stackTraceParameter': node.stackTraceParameter2,
+      'exceptionParameter': node.exceptionParameter,
+      'stackTraceParameter': node.stackTraceParameter,
       'body': node.body,
     });
     super.visitCatchClause(node);
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index 2b96844..d025623 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -1,6 +1,8 @@
 ## 5.2.0-dev
 * Deprecated `Element.enclosingElement3`, use `enclosingElement` instead.
 * Deprecated `Directive.element2`, use `element` instead.
+* Deprecated `CatchClause.exceptionParameter2`, use `exceptionParameter` instead.
+* Deprecated `CatchClause.stackTraceParameter2`, use `stackTraceParameter` instead.
 
 ## 5.1.0
 * Deprecated `AstNode.name2`, use `name` instead.
diff --git a/pkg/analyzer/lib/dart/ast/ast.dart b/pkg/analyzer/lib/dart/ast/ast.dart
index 2debd2e..1d6aacc 100644
--- a/pkg/analyzer/lib/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/dart/ast/ast.dart
@@ -924,6 +924,11 @@
 
   /// Return the parameter whose value will be the exception that was thrown, or
   /// `null` if there is no 'catch' keyword.
+  CatchClauseParameter? get exceptionParameter;
+
+  /// Return the parameter whose value will be the exception that was thrown, or
+  /// `null` if there is no 'catch' keyword.
+  @Deprecated('Use exceptionParameter instead')
   CatchClauseParameter? get exceptionParameter2;
 
   /// Return the type of exceptions caught by this catch clause, or `null` if
@@ -942,6 +947,11 @@
 
   /// Return the parameter whose value will be the stack trace associated with
   /// the exception, or `null` if there is no stack trace parameter.
+  CatchClauseParameter? get stackTraceParameter;
+
+  /// Return the parameter whose value will be the stack trace associated with
+  /// the exception, or `null` if there is no stack trace parameter.
+  @Deprecated('Use stackTraceParameter instead')
   CatchClauseParameter? get stackTraceParameter2;
 }
 
diff --git a/pkg/analyzer/lib/error/error.dart b/pkg/analyzer/lib/error/error.dart
index cfaaff0..7eae7fa 100644
--- a/pkg/analyzer/lib/error/error.dart
+++ b/pkg/analyzer/lib/error/error.dart
@@ -953,8 +953,6 @@
   StaticWarningCode.DEAD_NULL_AWARE_EXPRESSION,
   StaticWarningCode.INVALID_NULL_AWARE_OPERATOR,
   StaticWarningCode.INVALID_NULL_AWARE_OPERATOR_AFTER_SHORT_CIRCUIT,
-  StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED,
-  StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL,
   StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH,
   StaticWarningCode.UNNECESSARY_NON_NULL_ASSERTION,
   TodoCode.TODO,
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 718a838..b33788c 100644
--- a/pkg/analyzer/lib/src/clients/dart_style/rewrite_cascade.dart
+++ b/pkg/analyzer/lib/src/clients/dart_style/rewrite_cascade.dart
@@ -36,24 +36,27 @@
 
 /// Recursively insert [cascadeTarget] (the LHS of the cascade) into the
 /// LHS of the assignment expression that used to be the cascade's RHS.
-Expression insertCascadeTargetIntoExpression({
+ExpressionImpl insertCascadeTargetIntoExpression({
   required Expression expression,
   required Expression cascadeTarget,
 }) {
+  expression as ExpressionImpl;
+  cascadeTarget as ExpressionImpl;
+
   // Base case: We've recursed as deep as possible.
   if (expression == cascadeTarget) return cascadeTarget;
 
   // Otherwise, copy `expression` and recurse into its LHS.
-  if (expression is AssignmentExpression) {
+  if (expression is AssignmentExpressionImpl) {
     return AssignmentExpressionImpl(
       leftHandSide: insertCascadeTargetIntoExpression(
         expression: expression.leftHandSide,
         cascadeTarget: cascadeTarget,
-      ) as ExpressionImpl,
+      ),
       operator: expression.operator,
-      rightHandSide: expression.rightHandSide as ExpressionImpl,
+      rightHandSide: expression.rightHandSide,
     );
-  } else if (expression is IndexExpression) {
+  } else if (expression is IndexExpressionImpl) {
     var expressionTarget = expression.realTarget;
     var question = expression.question;
 
@@ -63,7 +66,7 @@
       question = _synthesizeToken(TokenType.QUESTION, expression.period!);
     }
 
-    return astFactory.indexExpressionForTarget2(
+    return IndexExpressionImpl.forTarget(
       target: insertCascadeTargetIntoExpression(
         expression: expressionTarget,
         cascadeTarget: cascadeTarget,
@@ -79,7 +82,7 @@
       target: insertCascadeTargetIntoExpression(
         expression: expressionTarget,
         cascadeTarget: cascadeTarget,
-      ) as ExpressionImpl,
+      ),
       // If we've reached the end, replace the `..` operator with `.`
       operator: expressionTarget == cascadeTarget
           ? _synthesizeToken(TokenType.PERIOD, expression.operator!)
@@ -88,7 +91,7 @@
       typeArguments: expression.typeArguments,
       argumentList: expression.argumentList,
     );
-  } else if (expression is PropertyAccess) {
+  } else if (expression is PropertyAccessImpl) {
     var expressionTarget = expression.realTarget;
     return astFactory.propertyAccess(
       insertCascadeTargetIntoExpression(
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index efb2984..ae640e2 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -1654,15 +1654,21 @@
   Token get endToken => _body.endToken;
 
   @override
-  CatchClauseParameterImpl? get exceptionParameter2 {
+  CatchClauseParameterImpl? get exceptionParameter {
     return _exceptionParameter;
   }
 
-  set exceptionParameter2(CatchClauseParameterImpl? parameter) {
+  set exceptionParameter(CatchClauseParameterImpl? parameter) {
     _exceptionParameter = parameter;
     _becomeParentOf(parameter);
   }
 
+  @Deprecated('Use exceptionParameter instead')
+  @override
+  CatchClauseParameterImpl? get exceptionParameter2 {
+    return exceptionParameter;
+  }
+
   @override
   TypeAnnotationImpl? get exceptionType => _exceptionType;
 
@@ -1671,24 +1677,30 @@
   }
 
   @override
-  CatchClauseParameterImpl? get stackTraceParameter2 {
+  CatchClauseParameterImpl? get stackTraceParameter {
     return _stackTraceParameter;
   }
 
-  set stackTraceParameter2(CatchClauseParameterImpl? parameter) {
+  set stackTraceParameter(CatchClauseParameterImpl? parameter) {
     _stackTraceParameter = parameter;
     _becomeParentOf(parameter);
   }
 
+  @Deprecated('Use stackTraceParameter instead')
+  @override
+  CatchClauseParameterImpl? get stackTraceParameter2 {
+    return stackTraceParameter;
+  }
+
   @override
   ChildEntities get _childEntities => ChildEntities()
     ..addToken('onKeyword', onKeyword)
     ..addNode('exceptionType', exceptionType)
     ..addToken('catchKeyword', catchKeyword)
     ..addToken('leftParenthesis', leftParenthesis)
-    ..addNode('exceptionParameter', exceptionParameter2)
+    ..addNode('exceptionParameter', exceptionParameter)
     ..addToken('comma', comma)
-    ..addNode('stackTraceParameter', stackTraceParameter2)
+    ..addNode('stackTraceParameter', stackTraceParameter)
     ..addToken('rightParenthesis', rightParenthesis)
     ..addNode('body', body);
 
@@ -2771,8 +2783,9 @@
   Token get endToken => expression.endToken;
 
   @override
-  ChildEntities get _childEntities =>
-      super._childEntities..addNode('expression', expression);
+  ChildEntities get _childEntities => super._childEntities
+    ..addToken('const', constKeyword)
+    ..addNode('expression', expression);
 
   @override
   E? accept<E>(AstVisitor<E> visitor) => visitor.visitConstantPattern(this);
@@ -4881,20 +4894,22 @@
   /// [period] can be `null` if the keyword 'this' was not provided.  The
   /// [parameters] can be `null` if this is not a function-typed field formal
   /// parameter.
-  FieldFormalParameterImpl(
-      CommentImpl? comment,
-      List<Annotation>? metadata,
-      Token? covariantKeyword,
-      Token? requiredKeyword,
-      this.keyword,
-      this._type,
-      this.thisKeyword,
-      this.period,
-      Token name,
-      this._typeParameters,
-      this._parameters,
-      this.question)
-      : super(comment, metadata, covariantKeyword, requiredKeyword, name) {
+  FieldFormalParameterImpl({
+    required super.comment,
+    required super.metadata,
+    required super.covariantKeyword,
+    required super.requiredKeyword,
+    required this.keyword,
+    required TypeAnnotationImpl? type,
+    required this.thisKeyword,
+    required this.period,
+    required super.name,
+    required TypeParameterListImpl? typeParameters,
+    required FormalParameterListImpl? parameters,
+    required this.question,
+  })  : _type = type,
+        _typeParameters = typeParameters,
+        _parameters = parameters {
     _becomeParentOf(_type);
     _becomeParentOf(_typeParameters);
     _becomeParentOf(_parameters);
@@ -6203,17 +6218,19 @@
   /// [comment] and [metadata] can be `null` if the parameter does not have the
   /// corresponding attribute. The [returnType] can be `null` if no return type
   /// was specified.
-  FunctionTypedFormalParameterImpl(
-      CommentImpl? comment,
-      List<Annotation>? metadata,
-      Token? covariantKeyword,
-      Token? requiredKeyword,
-      this._returnType,
-      Token name,
-      this._typeParameters,
-      this._parameters,
-      this.question)
-      : super(comment, metadata, covariantKeyword, requiredKeyword, name) {
+  FunctionTypedFormalParameterImpl({
+    required super.comment,
+    required super.metadata,
+    required super.covariantKeyword,
+    required super.requiredKeyword,
+    required TypeAnnotationImpl? returnType,
+    required super.name,
+    required TypeParameterListImpl? typeParameters,
+    required FormalParameterListImpl parameters,
+    required this.question,
+  })  : _returnType = returnType,
+        _typeParameters = typeParameters,
+        _parameters = parameters {
     _becomeParentOf(_returnType);
     _becomeParentOf(_typeParameters);
     _becomeParentOf(_parameters);
@@ -7095,15 +7112,26 @@
 
   /// Initialize a newly created index expression that is a child of a cascade
   /// expression.
-  IndexExpressionImpl.forCascade(this.period, this.question, this.leftBracket,
-      this._index, this.rightBracket) {
+  IndexExpressionImpl.forCascade({
+    required this.period,
+    required this.question,
+    required this.leftBracket,
+    required ExpressionImpl index,
+    required this.rightBracket,
+  }) : _index = index {
     _becomeParentOf(_index);
   }
 
   /// Initialize a newly created index expression that is not a child of a
   /// cascade expression.
-  IndexExpressionImpl.forTarget(this._target, this.question, this.leftBracket,
-      this._index, this.rightBracket) {
+  IndexExpressionImpl.forTarget({
+    required ExpressionImpl? target,
+    required this.question,
+    required this.leftBracket,
+    required ExpressionImpl index,
+    required this.rightBracket,
+  })  : _target = target,
+        _index = index {
     _becomeParentOf(_target);
     _becomeParentOf(_index);
   }
@@ -9258,8 +9286,13 @@
   /// Initialize a newly created formal parameter. Either or both of the
   /// [comment] and [metadata] can be `null` if the parameter does not have the
   /// corresponding attribute.
-  NormalFormalParameterImpl(this._comment, List<Annotation>? metadata,
-      this.covariantKeyword, this.requiredKeyword, this.name) {
+  NormalFormalParameterImpl({
+    required CommentImpl? comment,
+    required List<Annotation>? metadata,
+    required this.covariantKeyword,
+    required this.requiredKeyword,
+    required this.name,
+  }) : _comment = comment {
     _becomeParentOf(_comment);
     _metadata._initialize(this, metadata);
   }
@@ -11155,15 +11188,15 @@
   /// [comment] and [metadata] can be `null` if the parameter does not have the
   /// corresponding attribute. The [keyword] can be `null` if a type was
   /// specified. The [type] must be `null` if the keyword is 'var'.
-  SimpleFormalParameterImpl(
-      CommentImpl? comment,
-      List<Annotation>? metadata,
-      Token? covariantKeyword,
-      Token? requiredKeyword,
-      this.keyword,
-      this._type,
-      Token? name)
-      : super(comment, metadata, covariantKeyword, requiredKeyword, name) {
+  SimpleFormalParameterImpl({
+    required super.comment,
+    required super.metadata,
+    required super.covariantKeyword,
+    required super.requiredKeyword,
+    required this.keyword,
+    required TypeAnnotationImpl? type,
+    required super.name,
+  }) : _type = type {
     _becomeParentOf(_type);
   }
 
@@ -11960,20 +11993,22 @@
   /// [period] can be `null` if the keyword 'this' was not provided.  The
   /// [parameters] can be `null` if this is not a function-typed field formal
   /// parameter.
-  SuperFormalParameterImpl(
-      CommentImpl? comment,
-      List<Annotation>? metadata,
-      Token? covariantKeyword,
-      Token? requiredKeyword,
-      this.keyword,
-      this._type,
-      this.superKeyword,
-      this.period,
-      Token name,
-      this._typeParameters,
-      this._parameters,
-      this.question)
-      : super(comment, metadata, covariantKeyword, requiredKeyword, name) {
+  SuperFormalParameterImpl({
+    required super.comment,
+    required super.metadata,
+    required super.covariantKeyword,
+    required super.requiredKeyword,
+    required this.keyword,
+    required TypeAnnotationImpl? type,
+    required this.superKeyword,
+    required this.period,
+    required super.name,
+    required TypeParameterListImpl? typeParameters,
+    required FormalParameterListImpl? parameters,
+    required this.question,
+  })  : _type = type,
+        _typeParameters = typeParameters,
+        _parameters = parameters {
     _becomeParentOf(_type);
     _becomeParentOf(_typeParameters);
     _becomeParentOf(_parameters);
diff --git a/pkg/analyzer/lib/src/dart/ast/ast_factory.dart b/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
index cff2f3e..675ac91 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
@@ -49,33 +49,6 @@
           typeArguments as TypeArgumentListImpl?,
           argumentList as ArgumentListImpl);
 
-  FieldFormalParameterImpl fieldFormalParameter2(
-          {Comment? comment,
-          List<Annotation>? metadata,
-          Token? covariantKeyword,
-          Token? requiredKeyword,
-          Token? keyword,
-          TypeAnnotation? type,
-          required Token thisKeyword,
-          required Token period,
-          required Token name,
-          TypeParameterList? typeParameters,
-          FormalParameterList? parameters,
-          Token? question}) =>
-      FieldFormalParameterImpl(
-          comment as CommentImpl?,
-          metadata,
-          covariantKeyword,
-          requiredKeyword,
-          keyword,
-          type as TypeAnnotationImpl?,
-          thisKeyword,
-          period,
-          name,
-          typeParameters as TypeParameterListImpl?,
-          parameters as FormalParameterListImpl?,
-          question);
-
   FormalParameterListImpl formalParameterList(
           Token leftParenthesis,
           List<FormalParameter> parameters,
@@ -85,27 +58,6 @@
       FormalParameterListImpl(leftParenthesis, parameters, leftDelimiter,
           rightDelimiter, rightParenthesis);
 
-  FunctionTypedFormalParameterImpl functionTypedFormalParameter2(
-          {Comment? comment,
-          List<Annotation>? metadata,
-          Token? covariantKeyword,
-          Token? requiredKeyword,
-          TypeAnnotation? returnType,
-          required Token name,
-          TypeParameterList? typeParameters,
-          required FormalParameterList parameters,
-          Token? question}) =>
-      FunctionTypedFormalParameterImpl(
-          comment as CommentImpl?,
-          metadata,
-          covariantKeyword,
-          requiredKeyword,
-          returnType as TypeAnnotationImpl?,
-          name,
-          typeParameters as TypeParameterListImpl?,
-          parameters as FormalParameterListImpl,
-          question);
-
   ImplicitCallReferenceImpl implicitCallReference({
     required Expression expression,
     required MethodElement staticElement,
@@ -117,24 +69,6 @@
           typeArguments: typeArguments as TypeArgumentListImpl?,
           typeArgumentTypes: typeArgumentTypes);
 
-  IndexExpressionImpl indexExpressionForCascade2(
-          {required Token period,
-          Token? question,
-          required Token leftBracket,
-          required Expression index,
-          required Token rightBracket}) =>
-      IndexExpressionImpl.forCascade(
-          period, question, leftBracket, index as ExpressionImpl, rightBracket);
-
-  IndexExpressionImpl indexExpressionForTarget2(
-          {required Expression target,
-          Token? question,
-          required Token leftBracket,
-          required Expression index,
-          required Token rightBracket}) =>
-      IndexExpressionImpl.forTarget(target as ExpressionImpl, question,
-          leftBracket, index as ExpressionImpl, rightBracket);
-
   InstanceCreationExpressionImpl instanceCreationExpression(Token? keyword,
           ConstructorName constructorName, ArgumentList argumentList,
           {TypeArgumentList? typeArguments}) =>
@@ -251,23 +185,6 @@
           {required Token? modifier, required SimpleIdentifier name}) =>
       ShowHideElementImpl(modifier, name);
 
-  SimpleFormalParameterImpl simpleFormalParameter2(
-          {Comment? comment,
-          List<Annotation>? metadata,
-          Token? covariantKeyword,
-          Token? requiredKeyword,
-          Token? keyword,
-          TypeAnnotation? type,
-          required Token? name}) =>
-      SimpleFormalParameterImpl(
-          comment as CommentImpl?,
-          metadata,
-          covariantKeyword,
-          requiredKeyword,
-          keyword,
-          type as TypeAnnotationImpl?,
-          name);
-
   SimpleIdentifierImpl simpleIdentifier(Token token,
       {bool isDeclaration = false}) {
     if (isDeclaration) {
@@ -301,33 +218,6 @@
   SuperExpressionImpl superExpression(Token superKeyword) =>
       SuperExpressionImpl(superKeyword);
 
-  SuperFormalParameterImpl superFormalParameter(
-          {Comment? comment,
-          List<Annotation>? metadata,
-          Token? covariantKeyword,
-          Token? requiredKeyword,
-          Token? keyword,
-          TypeAnnotation? type,
-          required Token superKeyword,
-          required Token period,
-          required Token name,
-          TypeParameterList? typeParameters,
-          FormalParameterList? parameters,
-          Token? question}) =>
-      SuperFormalParameterImpl(
-          comment as CommentImpl?,
-          metadata,
-          covariantKeyword,
-          requiredKeyword,
-          keyword,
-          type as TypeAnnotationImpl?,
-          superKeyword,
-          period,
-          name,
-          typeParameters as TypeParameterListImpl?,
-          parameters as FormalParameterListImpl?,
-          question);
-
   SwitchCaseImpl switchCase(List<Label> labels, Token keyword,
           Expression expression, Token colon, List<Statement> statements) =>
       SwitchCaseImpl(
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 0a135e4..9cee45b 100644
--- a/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
@@ -169,8 +169,8 @@
         sink.write(' ');
       }
       sink.write('catch (');
-      _visitNode(node.exceptionParameter2);
-      _visitNode(node.stackTraceParameter2, prefix: ', ');
+      _visitNode(node.exceptionParameter);
+      _visitNode(node.stackTraceParameter, prefix: ', ');
       sink.write(') ');
     } else {
       sink.write(' ');
diff --git a/pkg/analyzer/lib/src/dart/ast/utilities.dart b/pkg/analyzer/lib/src/dart/ast/utilities.dart
index 896ce40..a6acffd 100644
--- a/pkg/analyzer/lib/src/dart/ast/utilities.dart
+++ b/pkg/analyzer/lib/src/dart/ast/utilities.dart
@@ -252,9 +252,9 @@
         isEqualNodes(node.exceptionType, other.exceptionType) &&
         isEqualTokens(node.catchKeyword, other.catchKeyword) &&
         isEqualTokens(node.leftParenthesis, other.leftParenthesis) &&
-        isEqualNodes(node.exceptionParameter2, other.exceptionParameter2) &&
+        isEqualNodes(node.exceptionParameter, other.exceptionParameter) &&
         isEqualTokens(node.comma, other.comma) &&
-        isEqualNodes(node.stackTraceParameter2, other.stackTraceParameter2) &&
+        isEqualNodes(node.stackTraceParameter, other.stackTraceParameter) &&
         isEqualTokens(node.rightParenthesis, other.rightParenthesis) &&
         isEqualNodes(node.body, other.body);
   }
@@ -2127,11 +2127,11 @@
     if (identical(node.exceptionType, _oldNode)) {
       node.exceptionType = _newNode as TypeAnnotation;
       return true;
-    } else if (identical(node.exceptionParameter2, _oldNode)) {
-      node.exceptionParameter2 = _newNode as CatchClauseParameterImpl;
+    } else if (identical(node.exceptionParameter, _oldNode)) {
+      node.exceptionParameter = _newNode as CatchClauseParameterImpl;
       return true;
-    } else if (identical(node.stackTraceParameter2, _oldNode)) {
-      node.stackTraceParameter2 = _newNode as CatchClauseParameterImpl;
+    } else if (identical(node.stackTraceParameter, _oldNode)) {
+      node.stackTraceParameter = _newNode as CatchClauseParameterImpl;
       return true;
     } else if (identical(node.body, _oldNode)) {
       node.body = _newNode as Block;
@@ -3512,8 +3512,8 @@
 
   @override
   void visitCatchClause(CatchClause node) {
-    _addToScope(node.exceptionParameter2?.name);
-    _addToScope(node.stackTraceParameter2?.name);
+    _addToScope(node.exceptionParameter?.name);
+    _addToScope(node.stackTraceParameter?.name);
     super.visitCatchClause(node);
   }
 
diff --git a/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
index cc11d1b..ecbb405 100644
--- a/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
@@ -501,8 +501,8 @@
   @override
   void visitCatchClause(CatchClause node) {
     for (var identifier in [
-      node.exceptionParameter2,
-      node.stackTraceParameter2,
+      node.exceptionParameter,
+      node.stackTraceParameter,
     ]) {
       if (identifier != null) {
         assignedVariables.declare(identifier.declaredElement!);
diff --git a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
index 96c8798..3d8d487 100644
--- a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
@@ -221,7 +221,7 @@
     exceptionTypeNode?.accept(this);
 
     _withNameScope(() {
-      var exceptionNode = node.exceptionParameter2;
+      var exceptionNode = node.exceptionParameter;
       if (exceptionNode != null) {
         var element = LocalVariableElementImpl(
           exceptionNode.name.lexeme,
@@ -248,7 +248,7 @@
         );
       }
 
-      var stackTraceNode = node.stackTraceParameter2;
+      var stackTraceNode = node.stackTraceParameter;
       if (stackTraceNode != null) {
         var element = LocalVariableElementImpl(
           stackTraceNode.name.lexeme,
diff --git a/pkg/analyzer/lib/src/error/codes.g.dart b/pkg/analyzer/lib/src/error/codes.g.dart
index 88b7648..5b9e3bb 100644
--- a/pkg/analyzer/lib/src/error/codes.g.dart
+++ b/pkg/analyzer/lib/src/error/codes.g.dart
@@ -5213,40 +5213,6 @@
     uniqueName: 'INVALID_NULL_AWARE_OPERATOR_AFTER_SHORT_CIRCUIT',
   );
 
-  ///  7.1 Instance Methods: It is a static warning if an instance method
-  ///  <i>m1</i> overrides an instance member <i>m2</i>, the signature of
-  ///  <i>m2</i> explicitly specifies a default value for a formal parameter
-  ///  <i>p</i> and the signature of <i>m1</i> specifies a different default value
-  ///  for <i>p</i>.
-  ///
-  ///  Parameters:
-  ///  0: the name of the super class
-  ///  1: the name of the super method
-  ///  2: the name of the overriding method
-  static const StaticWarningCode
-      INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED = StaticWarningCode(
-    'INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED',
-    "Parameters can't override default values, this method overrides '{0}.{1}' "
-        "where '{2}' has a different value.",
-    correctionMessage: "Try using the same default value in both methods.",
-  );
-
-  ///  7.1 Instance Methods: It is a static warning if an instance method
-  ///  <i>m1</i> overrides an instance member <i>m2</i>, the signature of
-  ///  <i>m2</i> explicitly specifies a default value for a formal parameter
-  ///  <i>p</i> and the signature of <i>m1</i> specifies a different default value
-  ///  for <i>p</i>.
-  ///  Parameters:
-  ///  0: the name of the super class
-  ///  1: the name of the super method
-  static const StaticWarningCode
-      INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL = StaticWarningCode(
-    'INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL',
-    "Parameters can't override default values, this method overrides '{0}.{1}' "
-        "where this positional parameter has a different value.",
-    correctionMessage: "Try using the same default value in both methods.",
-  );
-
   ///  Parameters:
   ///  0: the name of the constant that is missing
   static const StaticWarningCode MISSING_ENUM_CONSTANT_IN_SWITCH =
diff --git a/pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart b/pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart
index dd5b5de..7f2db11 100644
--- a/pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart
+++ b/pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart
@@ -28,8 +28,8 @@
 
   /// Check that the exception and stack trace parameters have different names.
   void checkCatchClause(CatchClause node) {
-    var exceptionParameter = node.exceptionParameter2;
-    var stackTraceParameter = node.stackTraceParameter2;
+    var exceptionParameter = node.exceptionParameter;
+    var stackTraceParameter = node.stackTraceParameter;
     if (exceptionParameter != null && stackTraceParameter != null) {
       String exceptionName = exceptionParameter.name.lexeme;
       if (exceptionName == stackTraceParameter.name.lexeme) {
diff --git a/pkg/analyzer/lib/src/error/inheritance_override.dart b/pkg/analyzer/lib/src/error/inheritance_override.dart
index 6e1b65c..1dba8ec 100644
--- a/pkg/analyzer/lib/src/error/inheritance_override.dart
+++ b/pkg/analyzer/lib/src/error/inheritance_override.dart
@@ -6,7 +6,6 @@
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/syntactic_entity.dart';
 import 'package:analyzer/dart/ast/token.dart';
-import 'package:analyzer/dart/constant/value.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/dart/element/type_provider.dart';
@@ -355,17 +354,6 @@
         errorReporter: reporter,
         errorNode: node,
       );
-
-      if (!_isNonNullableByDefault &&
-          superMember is MethodElement &&
-          member is MethodElement &&
-          methodParameterNodes != null) {
-        _checkForOptionalParametersDifferentDefaultValues(
-          superMember,
-          member,
-          methodParameterNodes,
-        );
-      }
     }
 
     if (mixinIndex == -1) {
@@ -504,98 +492,6 @@
     return true;
   }
 
-  void _checkForOptionalParametersDifferentDefaultValues(
-    MethodElement baseExecutable,
-    MethodElement derivedExecutable,
-    List<FormalParameter> derivedParameterNodes,
-  ) {
-    var derivedIsAbstract = derivedExecutable.isAbstract;
-    var derivedOptionalNodes = <FormalParameter>[];
-    var derivedOptionalElements = <ParameterElementImpl>[];
-    var derivedParameterElements = derivedExecutable.parameters;
-    for (var i = 0; i < derivedParameterElements.length; i++) {
-      var parameterElement =
-          derivedParameterElements[i] as ParameterElementImpl;
-      if (parameterElement.isOptional) {
-        derivedOptionalNodes.add(derivedParameterNodes[i]);
-        derivedOptionalElements.add(parameterElement);
-      }
-    }
-
-    var baseOptionalElements = <ParameterElementImpl>[];
-    var baseParameterElements = baseExecutable.parameters;
-    for (var i = 0; i < baseParameterElements.length; ++i) {
-      var baseParameter = baseParameterElements[i];
-      if (baseParameter.isOptional) {
-        baseOptionalElements
-            .add(baseParameter.declaration as ParameterElementImpl);
-      }
-    }
-
-    // Stop if no optional parameters.
-    if (baseOptionalElements.isEmpty || derivedOptionalElements.isEmpty) {
-      return;
-    }
-
-    if (derivedOptionalElements[0].isNamed) {
-      for (int i = 0; i < derivedOptionalElements.length; i++) {
-        var derivedElement = derivedOptionalElements[i];
-        if (_isNonNullableByDefault &&
-            derivedIsAbstract &&
-            !derivedElement.hasDefaultValue) {
-          continue;
-        }
-        var name = derivedElement.name;
-        for (var j = 0; j < baseOptionalElements.length; j++) {
-          var baseParameter = baseOptionalElements[j];
-          if (name == baseParameter.name && baseParameter.hasDefaultValue) {
-            var baseValue = baseParameter.computeConstantValue();
-            var derivedResult = derivedElement.evaluationResult!;
-            if (!_constantValuesEqual(derivedResult.value, baseValue)) {
-              reporter.reportErrorForNode(
-                StaticWarningCode
-                    .INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED,
-                derivedOptionalNodes[i],
-                [
-                  baseExecutable.enclosingElement.displayName,
-                  baseExecutable.displayName,
-                  name
-                ],
-              );
-            }
-          }
-        }
-      }
-    } else {
-      for (var i = 0;
-          i < derivedOptionalElements.length && i < baseOptionalElements.length;
-          i++) {
-        var derivedElement = derivedOptionalElements[i];
-        if (_isNonNullableByDefault &&
-            derivedIsAbstract &&
-            !derivedElement.hasDefaultValue) {
-          continue;
-        }
-        var baseElement = baseOptionalElements[i];
-        if (baseElement.hasDefaultValue) {
-          var baseValue = baseElement.computeConstantValue();
-          var derivedResult = derivedElement.evaluationResult!;
-          if (!_constantValuesEqual(derivedResult.value, baseValue)) {
-            reporter.reportErrorForNode(
-              StaticWarningCode
-                  .INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL,
-              derivedOptionalNodes[i],
-              [
-                baseExecutable.enclosingElement.displayName,
-                baseExecutable.displayName
-              ],
-            );
-          }
-        }
-      }
-    }
-  }
-
   /// Check that [classElement] is not a superinterface to itself.
   /// The [path] is a list containing the potentially cyclic implements path.
   ///
@@ -1030,12 +926,4 @@
       );
     }
   }
-
-  static bool _constantValuesEqual(DartObject? x, DartObject? y) {
-    // If either constant value couldn't be computed due to an error, the
-    // corresponding DartObject will be `null`.  Since an error has already been
-    // reported, there's no need to report another.
-    if (x == null || y == null) return true;
-    return x == y;
-  }
 }
diff --git a/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart b/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart
index fcbbb32..c665b30 100644
--- a/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart
+++ b/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart
@@ -52,8 +52,8 @@
 
   @override
   void visitCatchClause(CatchClause node) {
-    var exceptionParameter = node.exceptionParameter2;
-    var stackTraceParameter = node.stackTraceParameter2;
+    var exceptionParameter = node.exceptionParameter;
+    var stackTraceParameter = node.stackTraceParameter;
     if (exceptionParameter != null) {
       var element = exceptionParameter.declaredElement;
       usedElements.addCatchException(element);
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index d62971d..d31654b 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -1680,47 +1680,52 @@
       if (superKeyword != null) {
         assert(thisKeyword == null,
             "Can't have both 'this' and 'super' in a parameter.");
-        node = ast.superFormalParameter(
-            name: name!.token,
-            comment: comment,
-            metadata: metadata,
-            covariantKeyword: covariantKeyword,
-            requiredKeyword: requiredKeyword,
-            type: typeOrFunctionTypedParameter.returnType,
-            superKeyword: superKeyword,
-            period: periodAfterThisOrSuper!,
-            typeParameters: typeOrFunctionTypedParameter.typeParameters,
-            parameters: typeOrFunctionTypedParameter.parameters,
-            question: typeOrFunctionTypedParameter.question);
+        node = SuperFormalParameterImpl(
+          name: name!.token,
+          comment: comment,
+          metadata: metadata,
+          covariantKeyword: covariantKeyword,
+          keyword: keyword,
+          requiredKeyword: requiredKeyword,
+          type: typeOrFunctionTypedParameter.returnType,
+          superKeyword: superKeyword,
+          period: periodAfterThisOrSuper!,
+          typeParameters: typeOrFunctionTypedParameter.typeParameters,
+          parameters: typeOrFunctionTypedParameter.parameters,
+          question: typeOrFunctionTypedParameter.question,
+        );
       } else if (thisKeyword != null) {
         assert(superKeyword == null,
             "Can't have both 'this' and 'super' in a parameter.");
-        node = ast.fieldFormalParameter2(
-            name: name!.token,
-            comment: comment,
-            metadata: metadata,
-            covariantKeyword: covariantKeyword,
-            requiredKeyword: requiredKeyword,
-            type: typeOrFunctionTypedParameter.returnType,
-            thisKeyword: thisKeyword,
-            period: periodAfterThisOrSuper!,
-            typeParameters: typeOrFunctionTypedParameter.typeParameters,
-            parameters: typeOrFunctionTypedParameter.parameters,
-            question: typeOrFunctionTypedParameter.question);
+        node = FieldFormalParameterImpl(
+          name: name!.token,
+          comment: comment,
+          metadata: metadata,
+          covariantKeyword: covariantKeyword,
+          keyword: keyword,
+          requiredKeyword: requiredKeyword,
+          type: typeOrFunctionTypedParameter.returnType,
+          thisKeyword: thisKeyword,
+          period: periodAfterThisOrSuper!,
+          typeParameters: typeOrFunctionTypedParameter.typeParameters,
+          parameters: typeOrFunctionTypedParameter.parameters,
+          question: typeOrFunctionTypedParameter.question,
+        );
       } else {
-        node = ast.functionTypedFormalParameter2(
-            name: name!.token,
-            comment: comment,
-            metadata: metadata,
-            covariantKeyword: covariantKeyword,
-            requiredKeyword: requiredKeyword,
-            returnType: typeOrFunctionTypedParameter.returnType,
-            typeParameters: typeOrFunctionTypedParameter.typeParameters,
-            parameters: typeOrFunctionTypedParameter.parameters,
-            question: typeOrFunctionTypedParameter.question);
+        node = FunctionTypedFormalParameterImpl(
+          name: name!.token,
+          comment: comment,
+          metadata: metadata,
+          covariantKeyword: covariantKeyword,
+          requiredKeyword: requiredKeyword,
+          returnType: typeOrFunctionTypedParameter.returnType,
+          typeParameters: typeOrFunctionTypedParameter.typeParameters,
+          parameters: typeOrFunctionTypedParameter.parameters,
+          question: typeOrFunctionTypedParameter.question,
+        );
       }
     } else {
-      var type = typeOrFunctionTypedParameter as TypeAnnotation?;
+      var type = typeOrFunctionTypedParameter as TypeAnnotationImpl?;
       if (superKeyword != null) {
         assert(thisKeyword == null,
             "Can't have both 'this' and 'super' in a parameter.");
@@ -1731,38 +1736,47 @@
             keyword,
           );
         }
-        node = ast.superFormalParameter(
-            comment: comment,
-            metadata: metadata,
-            covariantKeyword: covariantKeyword,
-            requiredKeyword: requiredKeyword,
-            keyword: keyword,
-            type: type,
-            superKeyword: superKeyword,
-            period: periodAfterThisOrSuper!,
-            name: name!.token);
+        node = SuperFormalParameterImpl(
+          comment: comment,
+          metadata: metadata,
+          covariantKeyword: covariantKeyword,
+          requiredKeyword: requiredKeyword,
+          keyword: keyword,
+          type: type,
+          superKeyword: superKeyword,
+          period: periodAfterThisOrSuper!,
+          name: name!.token,
+          typeParameters: null,
+          parameters: null,
+          question: null,
+        );
       } else if (thisKeyword != null) {
         assert(superKeyword == null,
             "Can't have both 'this' and 'super' in a parameter.");
-        node = ast.fieldFormalParameter2(
-            comment: comment,
-            metadata: metadata,
-            covariantKeyword: covariantKeyword,
-            requiredKeyword: requiredKeyword,
-            keyword: keyword,
-            type: type,
-            thisKeyword: thisKeyword,
-            period: thisKeyword.next!,
-            name: name!.token);
+        node = FieldFormalParameterImpl(
+          comment: comment,
+          metadata: metadata,
+          covariantKeyword: covariantKeyword,
+          requiredKeyword: requiredKeyword,
+          keyword: keyword,
+          type: type,
+          thisKeyword: thisKeyword,
+          period: thisKeyword.next!,
+          name: name!.token,
+          typeParameters: null,
+          parameters: null,
+          question: null,
+        );
       } else {
-        node = ast.simpleFormalParameter2(
-            comment: comment,
-            metadata: metadata,
-            covariantKeyword: covariantKeyword,
-            requiredKeyword: requiredKeyword,
-            keyword: keyword,
-            type: type,
-            name: name?.token);
+        node = SimpleFormalParameterImpl(
+          comment: comment,
+          metadata: metadata,
+          covariantKeyword: covariantKeyword,
+          requiredKeyword: requiredKeyword,
+          keyword: keyword,
+          type: type,
+          name: name?.token,
+        );
       }
     }
 
@@ -1896,18 +1910,25 @@
       reportErrorIfNullableType(question);
     }
 
-    var formalParameters = pop() as FormalParameterList;
-    var returnType = pop() as TypeAnnotation?;
-    var typeParameters = pop() as TypeParameterList?;
+    var formalParameters = pop() as FormalParameterListImpl;
+    var returnType = pop() as TypeAnnotationImpl?;
+    var typeParameters = pop() as TypeParameterListImpl?;
 
     // Create a temporary formal parameter that will be dissected later in
     // [endFormalParameter].
-    push(ast.functionTypedFormalParameter2(
+    push(
+      FunctionTypedFormalParameterImpl(
+        comment: null,
+        metadata: null,
+        covariantKeyword: null,
+        requiredKeyword: null,
         name: StringToken(TokenType.IDENTIFIER, '', 0),
         returnType: returnType,
         typeParameters: typeParameters,
         parameters: formalParameters,
-        question: question));
+        question: question,
+      ),
+    );
   }
 
   @override
@@ -3935,27 +3956,31 @@
       reportErrorIfNullableType(question);
     }
 
-    var index = pop() as Expression;
-    var target = pop() as Expression?;
+    var index = pop() as ExpressionImpl;
+    var target = pop() as ExpressionImpl?;
     if (target == null) {
       var receiver = pop() as CascadeExpression;
       var token = peek() as Token;
       push(receiver);
-      IndexExpression expression = ast.indexExpressionForCascade2(
-          period: token,
-          question: question,
-          leftBracket: leftBracket,
-          index: index,
-          rightBracket: rightBracket);
+      IndexExpression expression = IndexExpressionImpl.forCascade(
+        period: token,
+        question: question,
+        leftBracket: leftBracket,
+        index: index,
+        rightBracket: rightBracket,
+      );
       assert(expression.isCascaded);
       push(expression);
     } else {
-      push(ast.indexExpressionForTarget2(
+      push(
+        IndexExpressionImpl.forTarget(
           target: target,
           question: question,
           leftBracket: leftBracket,
           index: index,
-          rightBracket: rightBracket));
+          rightBracket: rightBracket,
+        ),
+      );
     }
   }
 
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 5e7a527..a7ab20f 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -2766,8 +2766,8 @@
         var catchClause = catchClauses[i];
         nullSafetyDeadCodeVerifier.verifyCatchClause(catchClause);
         flow.tryCatchStatement_catchBegin(
-          catchClause.exceptionParameter2?.declaredElement,
-          catchClause.stackTraceParameter2?.declaredElement,
+          catchClause.exceptionParameter?.declaredElement,
+          catchClause.stackTraceParameter?.declaredElement,
         );
         catchClause.accept(this);
         flow.tryCatchStatement_catchEnd();
@@ -3326,13 +3326,13 @@
 
   @override
   void visitCatchClause(CatchClause node) {
-    var exception = node.exceptionParameter2;
+    var exception = node.exceptionParameter;
     if (exception != null) {
       Scope outerScope = nameScope;
       try {
         nameScope = LocalScope(nameScope);
         _define(exception.declaredElement!);
-        var stackTrace = node.stackTraceParameter2;
+        var stackTrace = node.stackTraceParameter;
         if (stackTrace != null) {
           _define(stackTrace.declaredElement!);
         }
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 54a9b3f..7a7596f 100644
--- a/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
@@ -42,15 +42,6 @@
         rightHandSide: rightHandSide as ExpressionImpl,
       );
 
-  static IndexExpressionImpl cascadedIndexExpression(Expression index) =>
-      astFactory.indexExpressionForCascade2(
-          period: TokenFactory.tokenFromType(TokenType.PERIOD_PERIOD),
-          leftBracket:
-              TokenFactory.tokenFromType(TokenType.OPEN_SQUARE_BRACKET),
-          index: index,
-          rightBracket:
-              TokenFactory.tokenFromType(TokenType.CLOSE_SQUARE_BRACKET));
-
   static PropertyAccessImpl cascadedPropertyAccess(String propertyName) =>
       astFactory.propertyAccess(
           null,
@@ -247,21 +238,6 @@
           List<VariableDeclaration> variables) =>
       fieldDeclaration(isStatic, keyword, null, variables);
 
-  static FieldFormalParameterImpl fieldFormalParameter(
-          Keyword? keyword, TypeAnnotation? type, String identifier,
-          [FormalParameterList? parameterList]) =>
-      astFactory.fieldFormalParameter2(
-          keyword:
-              keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
-          type: type,
-          thisKeyword: TokenFactory.tokenFromKeyword(Keyword.THIS),
-          period: TokenFactory.tokenFromType(TokenType.PERIOD),
-          name: identifier3(identifier).token,
-          parameters: parameterList);
-
-  static FieldFormalParameterImpl fieldFormalParameter2(String identifier) =>
-      fieldFormalParameter(null, null, identifier);
-
   static FormalParameterListImpl formalParameterList(
           [List<FormalParameter> parameters = const []]) =>
       astFactory.formalParameterList(
@@ -271,14 +247,6 @@
           null,
           TokenFactory.tokenFromType(TokenType.CLOSE_PAREN));
 
-  static FunctionTypedFormalParameterImpl functionTypedFormalParameter(
-          TypeAnnotation? returnType, String identifier,
-          [List<FormalParameter> parameters = const []]) =>
-      astFactory.functionTypedFormalParameter2(
-          returnType: returnType,
-          name: identifier3(identifier).token,
-          parameters: formalParameterList(parameters));
-
   static PrefixedIdentifierImpl identifier(
           SimpleIdentifier prefix, SimpleIdentifier identifier) =>
       astFactory.prefixedIdentifier(
@@ -333,37 +301,6 @@
           [List<Combinator> combinators = const []]) =>
       importDirective([], uri, false, prefix, combinators);
 
-  static IndexExpressionImpl indexExpression({
-    required Expression target,
-    bool hasQuestion = false,
-    required Expression index,
-  }) {
-    return astFactory.indexExpressionForTarget2(
-      target: target,
-      question: hasQuestion
-          ? TokenFactory.tokenFromType(
-              TokenType.QUESTION,
-            )
-          : null,
-      leftBracket: TokenFactory.tokenFromType(
-        TokenType.OPEN_SQUARE_BRACKET,
-      ),
-      index: index,
-      rightBracket: TokenFactory.tokenFromType(
-        TokenType.CLOSE_SQUARE_BRACKET,
-      ),
-    );
-  }
-
-  static IndexExpressionImpl indexExpressionForCascade(Expression array,
-          Expression index, TokenType period, TokenType leftBracket) =>
-      astFactory.indexExpressionForCascade2(
-          period: TokenFactory.tokenFromType(period),
-          leftBracket: TokenFactory.tokenFromType(leftBracket),
-          index: index,
-          rightBracket:
-              TokenFactory.tokenFromType(TokenType.CLOSE_SQUARE_BRACKET));
-
   static InstanceCreationExpressionImpl instanceCreationExpression(
           Keyword? keyword, ConstructorName name,
           [List<Expression> arguments = const []]) =>
@@ -589,27 +526,6 @@
           modifier: TokenFactory.tokenFromString("set"),
           name: identifier3(name));
 
-  static SimpleFormalParameterImpl simpleFormalParameter(
-          Keyword keyword, String parameterName) =>
-      simpleFormalParameter2(keyword, null, parameterName);
-
-  static SimpleFormalParameterImpl simpleFormalParameter2(
-          Keyword? keyword, TypeAnnotation? type, String? parameterName) =>
-      astFactory.simpleFormalParameter2(
-          keyword:
-              keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
-          type: type,
-          name:
-              parameterName == null ? null : identifier3(parameterName).token);
-
-  static SimpleFormalParameterImpl simpleFormalParameter3(
-          String parameterName) =>
-      simpleFormalParameter2(null, null, parameterName);
-
-  static SimpleFormalParameterImpl simpleFormalParameter4(
-          TypeAnnotation type, String? parameterName) =>
-      simpleFormalParameter2(null, type, parameterName);
-
   static SpreadElementImpl spreadElement(
           TokenType operator, Expression expression) =>
       astFactory.spreadElement(
@@ -639,21 +555,6 @@
   static SuperExpressionImpl superExpression() =>
       astFactory.superExpression(TokenFactory.tokenFromKeyword(Keyword.SUPER));
 
-  static SuperFormalParameterImpl superFormalParameter(
-          Keyword? keyword, TypeAnnotation? type, String identifier,
-          [FormalParameterList? parameterList]) =>
-      astFactory.superFormalParameter(
-          keyword:
-              keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
-          type: type,
-          superKeyword: TokenFactory.tokenFromKeyword(Keyword.SUPER),
-          period: TokenFactory.tokenFromType(TokenType.PERIOD),
-          name: identifier3(identifier).token,
-          parameters: parameterList);
-
-  static SuperFormalParameterImpl superFormalParameter2(String identifier) =>
-      superFormalParameter(null, null, identifier);
-
   static SwitchCaseImpl switchCase(
           Expression expression, List<Statement> statements) =>
       switchCase2(<Label>[], expression, statements);
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
index 65b8ce1..3103fcf 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
@@ -465,13 +465,13 @@
   }
 
   FieldFormalParameter _readFieldFormalParameter() {
-    var typeParameters = _readOptionalNode() as TypeParameterList?;
-    var type = _readOptionalNode() as TypeAnnotation?;
-    var formalParameters = _readOptionalNode() as FormalParameterList?;
+    var typeParameters = _readOptionalNode() as TypeParameterListImpl?;
+    var type = _readOptionalNode() as TypeAnnotationImpl?;
+    var formalParameters = _readOptionalNode() as FormalParameterListImpl?;
     var flags = _readByte();
     var metadata = _readNodeList<Annotation>();
     var name = _readDeclarationName();
-    var node = astFactory.fieldFormalParameter2(
+    var node = FieldFormalParameterImpl(
       name: name,
       period: Tokens.period(),
       thisKeyword: Tokens.this_(),
@@ -601,13 +601,13 @@
   }
 
   FunctionTypedFormalParameter _readFunctionTypedFormalParameter() {
-    var typeParameters = _readOptionalNode() as TypeParameterList?;
-    var returnType = _readOptionalNode() as TypeAnnotation?;
-    var formalParameters = readNode() as FormalParameterList;
+    var typeParameters = _readOptionalNode() as TypeParameterListImpl?;
+    var returnType = _readOptionalNode() as TypeAnnotationImpl?;
+    var formalParameters = readNode() as FormalParameterListImpl;
     var flags = _readByte();
     var metadata = _readNodeList<Annotation>();
     var name = _readDeclarationName();
-    var node = astFactory.functionTypedFormalParameter2(
+    var node = FunctionTypedFormalParameterImpl(
       comment: null,
       covariantKeyword:
           AstBinaryFlags.isCovariant(flags) ? Tokens.covariant_() : null,
@@ -618,6 +618,7 @@
           AstBinaryFlags.isRequired(flags) ? Tokens.required_() : null,
       returnType: returnType,
       typeParameters: typeParameters,
+      question: null,
     );
     return node;
   }
@@ -683,12 +684,12 @@
 
   IndexExpression _readIndexExpression() {
     var flags = _readByte();
-    var target = _readOptionalNode() as Expression?;
-    var index = readNode() as Expression;
+    var target = _readOptionalNode() as ExpressionImpl?;
+    var index = readNode() as ExpressionImpl;
     // TODO(scheglov) Is this clumsy?
     IndexExpressionImpl node;
     if (target != null) {
-      node = (astFactory.indexExpressionForTarget2(
+      node = (IndexExpressionImpl.forTarget(
         target: target,
         question: AstBinaryFlags.hasQuestion(flags) ? Tokens.question() : null,
         leftBracket: Tokens.openSquareBracket(),
@@ -698,7 +699,7 @@
         ..period =
             AstBinaryFlags.hasPeriod(flags) ? Tokens.periodPeriod() : null;
     } else {
-      node = astFactory.indexExpressionForCascade2(
+      node = IndexExpressionImpl.forCascade(
         period: Tokens.periodPeriod(),
         question: AstBinaryFlags.hasQuestion(flags) ? Tokens.question() : null,
         leftBracket: Tokens.openSquareBracket(),
@@ -1061,12 +1062,12 @@
   }
 
   SimpleFormalParameter _readSimpleFormalParameter() {
-    var type = _readOptionalNode() as TypeAnnotation?;
+    var type = _readOptionalNode() as TypeAnnotationImpl?;
     var flags = _readByte();
     var metadata = _readNodeList<Annotation>();
     var name = AstBinaryFlags.hasName(flags) ? _readDeclarationName() : null;
 
-    var node = astFactory.simpleFormalParameter2(
+    var node = SimpleFormalParameterImpl(
       name: name,
       type: type,
       covariantKeyword:
diff --git a/pkg/analyzer/lib/src/summary2/ast_text_printer.dart b/pkg/analyzer/lib/src/summary2/ast_text_printer.dart
index a1b0394..a8c5cae 100644
--- a/pkg/analyzer/lib/src/summary2/ast_text_printer.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_text_printer.dart
@@ -134,9 +134,9 @@
     node.exceptionType?.accept(this);
     _token(node.catchKeyword);
     _token(node.leftParenthesis);
-    node.exceptionParameter2?.accept(this);
+    node.exceptionParameter?.accept(this);
     _token(node.comma);
-    node.stackTraceParameter2?.accept(this);
+    node.stackTraceParameter?.accept(this);
     _token(node.rightParenthesis);
     node.body.accept(this);
   }
diff --git a/pkg/analyzer/messages.yaml b/pkg/analyzer/messages.yaml
index 4168ce7..6d8a8e4 100644
--- a/pkg/analyzer/messages.yaml
+++ b/pkg/analyzer/messages.yaml
@@ -22816,32 +22816,6 @@
       Parameters:
       0: the null-aware operator that is invalid
       1: the non-null-aware operator that can replace the invalid operator
-  INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED:
-    problemMessage: "Parameters can't override default values, this method overrides '{0}.{1}' where '{2}' has a different value."
-    correctionMessage: Try using the same default value in both methods.
-    comment: |-
-      7.1 Instance Methods: It is a static warning if an instance method
-      <i>m1</i> overrides an instance member <i>m2</i>, the signature of
-      <i>m2</i> explicitly specifies a default value for a formal parameter
-      <i>p</i> and the signature of <i>m1</i> specifies a different default value
-      for <i>p</i>.
-
-      Parameters:
-      0: the name of the super class
-      1: the name of the super method
-      2: the name of the overriding method
-  INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL:
-    problemMessage: "Parameters can't override default values, this method overrides '{0}.{1}' where this positional parameter has a different value."
-    correctionMessage: Try using the same default value in both methods.
-    comment: |-
-      7.1 Instance Methods: It is a static warning if an instance method
-      <i>m1</i> overrides an instance member <i>m2</i>, the signature of
-      <i>m2</i> explicitly specifies a default value for a formal parameter
-      <i>p</i> and the signature of <i>m1</i> specifies a different default value
-      for <i>p</i>.
-      Parameters:
-      0: the name of the super class
-      1: the name of the super method
   MISSING_ENUM_CONSTANT_IN_SWITCH:
     problemMessage: "Missing case clause for '{0}'."
     correctionMessage: Try adding a case clause for the missing constant, or adding a default clause.
diff --git a/pkg/analyzer/test/dart/ast/ast_test.dart b/pkg/analyzer/test/dart/ast/ast_test.dart
index d22109c..0e0e0e8 100644
--- a/pkg/analyzer/test/dart/ast/ast_test.dart
+++ b/pkg/analyzer/test/dart/ast/ast_test.dart
@@ -41,6 +41,7 @@
     defineReflectiveTests(SimpleStringLiteralTest);
     defineReflectiveTests(SpreadElementTest);
     defineReflectiveTests(StringInterpolationTest);
+    defineReflectiveTests(SuperFormalParameterTest);
     defineReflectiveTests(VariableDeclarationTest);
     defineReflectiveTests(WithClauseImplTest);
   });
@@ -113,17 +114,25 @@
 }
 
 @reflectiveTest
-class FieldFormalParameterTest {
+class FieldFormalParameterTest extends _AstTest {
   void test_endToken_noParameters() {
-    FieldFormalParameter parameter =
-        AstTestFactory.fieldFormalParameter2('field');
-    expect(parameter.endToken, parameter.name);
+    var node = _parseStringToNode<FieldFormalParameter>(r'''
+class A {
+  final int foo;
+  A(this.^foo);
+}
+''');
+    expect(node.endToken, node.name);
   }
 
   void test_endToken_parameters() {
-    FieldFormalParameter parameter = AstTestFactory.fieldFormalParameter(
-        null, null, 'field', AstTestFactory.formalParameterList([]));
-    expect(parameter.endToken, parameter.parameters!.endToken);
+    var node = _parseStringToNode<FieldFormalParameter>(r'''
+class A {
+  final Object foo;
+  A(this.^foo(a, b));
+}
+''');
+    expect(node.endToken, node.parameters!.endToken);
   }
 }
 
@@ -564,25 +573,21 @@
 @reflectiveTest
 class IndexExpressionTest extends _AstTest {
   void test_inGetterContext_assignment_compound_left() {
-    IndexExpression expression = AstTestFactory.indexExpression(
-      target: AstTestFactory.identifier3("a"),
-      index: AstTestFactory.identifier3("b"),
-    );
-    // a[b] += c
-    AstTestFactory.assignmentExpression(
-        expression, TokenType.PLUS_EQ, AstTestFactory.identifier3("c"));
-    expect(expression.inGetterContext(), isTrue);
+    var node = _parseStringToNode<IndexExpression>(r'''
+void f() {
+  ^a[0] += 0;
+}
+''');
+    expect(node.inGetterContext(), isTrue);
   }
 
   void test_inGetterContext_assignment_simple_left() {
-    IndexExpression expression = AstTestFactory.indexExpression(
-      target: AstTestFactory.identifier3("a"),
-      index: AstTestFactory.identifier3("b"),
-    );
-    // a[b] = c
-    AstTestFactory.assignmentExpression(
-        expression, TokenType.EQ, AstTestFactory.identifier3("c"));
-    expect(expression.inGetterContext(), isFalse);
+    var node = _parseStringToNode<IndexExpression>(r'''
+void f() {
+  ^a[0] = 0;
+}
+''');
+    expect(node.inGetterContext(), isFalse);
   }
 
   void test_inGetterContext_nonAssignment() {
@@ -593,47 +598,39 @@
   }
 
   void test_inSetterContext_assignment_compound_left() {
-    IndexExpression expression = AstTestFactory.indexExpression(
-      target: AstTestFactory.identifier3("a"),
-      index: AstTestFactory.identifier3("b"),
-    );
-    // a[b] += c
-    AstTestFactory.assignmentExpression(
-        expression, TokenType.PLUS_EQ, AstTestFactory.identifier3("c"));
-    expect(expression.inSetterContext(), isTrue);
+    var node = _parseStringToNode<IndexExpression>(r'''
+void f() {
+  ^a[0] += 0;
+}
+''');
+    expect(node.inSetterContext(), isTrue);
   }
 
   void test_inSetterContext_assignment_compound_right() {
-    IndexExpression expression = AstTestFactory.indexExpression(
-      target: AstTestFactory.identifier3("a"),
-      index: AstTestFactory.identifier3("b"),
-    );
-    // c += a[b]
-    AstTestFactory.assignmentExpression(
-        AstTestFactory.identifier3("c"), TokenType.PLUS_EQ, expression);
-    expect(expression.inSetterContext(), isFalse);
+    var node = _parseStringToNode<IndexExpression>(r'''
+void f() {
+  b += ^a[0];
+}
+''');
+    expect(node.inSetterContext(), isFalse);
   }
 
   void test_inSetterContext_assignment_simple_left() {
-    IndexExpression expression = AstTestFactory.indexExpression(
-      target: AstTestFactory.identifier3("a"),
-      index: AstTestFactory.identifier3("b"),
-    );
-    // a[b] = c
-    AstTestFactory.assignmentExpression(
-        expression, TokenType.EQ, AstTestFactory.identifier3("c"));
-    expect(expression.inSetterContext(), isTrue);
+    var node = _parseStringToNode<IndexExpression>(r'''
+void f() {
+  ^a[0] = 0;
+}
+''');
+    expect(node.inSetterContext(), isTrue);
   }
 
   void test_inSetterContext_assignment_simple_right() {
-    IndexExpression expression = AstTestFactory.indexExpression(
-      target: AstTestFactory.identifier3("a"),
-      index: AstTestFactory.identifier3("b"),
-    );
-    // c = a[b]
-    AstTestFactory.assignmentExpression(
-        AstTestFactory.identifier3("c"), TokenType.EQ, expression);
-    expect(expression.inSetterContext(), isFalse);
+    var node = _parseStringToNode<IndexExpression>(r'''
+void f() {
+  b = ^a[0];
+}
+''');
+    expect(node.inSetterContext(), isFalse);
   }
 
   void test_inSetterContext_nonAssignment() {
@@ -644,53 +641,48 @@
   }
 
   void test_inSetterContext_postfix_bang() {
-    IndexExpression expression = AstTestFactory.indexExpression(
-      target: AstTestFactory.identifier3("a"),
-      index: AstTestFactory.identifier3("b"),
-    );
-    // a[b]!
-    AstTestFactory.postfixExpression(expression, TokenType.BANG);
-    expect(expression.inSetterContext(), isFalse);
+    var node = _parseStringToNode<IndexExpression>(r'''
+void f() {
+  ^a[0]!;
+}
+''');
+    expect(node.inSetterContext(), isFalse);
   }
 
   void test_inSetterContext_postfix_plusPlus() {
-    IndexExpression expression = AstTestFactory.indexExpression(
-      target: AstTestFactory.identifier3("a"),
-      index: AstTestFactory.identifier3("b"),
-    );
-    AstTestFactory.postfixExpression(expression, TokenType.PLUS_PLUS);
-    // a[b]++
-    expect(expression.inSetterContext(), isTrue);
+    var node = _parseStringToNode<IndexExpression>(r'''
+void f() {
+  ^a[0]++;
+}
+''');
+    expect(node.inSetterContext(), isTrue);
   }
 
   void test_inSetterContext_prefix_bang() {
-    IndexExpression expression = AstTestFactory.indexExpression(
-      target: AstTestFactory.identifier3("a"),
-      index: AstTestFactory.identifier3("b"),
-    );
-    // !a[b]
-    AstTestFactory.prefixExpression(TokenType.BANG, expression);
-    expect(expression.inSetterContext(), isFalse);
+    var node = _parseStringToNode<IndexExpression>(r'''
+void f() {
+  !^a[0];
+}
+''');
+    expect(node.inSetterContext(), isFalse);
   }
 
   void test_inSetterContext_prefix_minusMinus() {
-    IndexExpression expression = AstTestFactory.indexExpression(
-      target: AstTestFactory.identifier3("a"),
-      index: AstTestFactory.identifier3("b"),
-    );
-    // --a[b]
-    AstTestFactory.prefixExpression(TokenType.MINUS_MINUS, expression);
-    expect(expression.inSetterContext(), isTrue);
+    var node = _parseStringToNode<IndexExpression>(r'''
+void f() {
+  --^a[0];
+}
+''');
+    expect(node.inSetterContext(), isTrue);
   }
 
   void test_inSetterContext_prefix_plusPlus() {
-    IndexExpression expression = AstTestFactory.indexExpression(
-      target: AstTestFactory.identifier3("a"),
-      index: AstTestFactory.identifier3("b"),
-    );
-    // ++a[b]
-    AstTestFactory.prefixExpression(TokenType.PLUS_PLUS, expression);
-    expect(expression.inSetterContext(), isTrue);
+    var node = _parseStringToNode<IndexExpression>(r'''
+void f() {
+  ++^a[0];
+}
+''');
+    expect(node.inSetterContext(), isTrue);
   }
 
   void test_isNullAware_cascade_false() {
@@ -1934,19 +1926,23 @@
 }
 
 @reflectiveTest
-// TODO(srawlins): Re-enable?
-// ignore: unreachable_from_main
-class SuperFormalParameterTest {
+class SuperFormalParameterTest extends _AstTest {
   void test_endToken_noParameters() {
-    SuperFormalParameter parameter =
-        AstTestFactory.superFormalParameter2('field');
-    expect(parameter.endToken, parameter.name);
+    var node = _parseStringToNode<SuperFormalParameter>(r'''
+class A {
+  A(super.^foo);
+}
+''');
+    expect(node.endToken, node.name);
   }
 
   void test_endToken_parameters() {
-    SuperFormalParameter parameter = AstTestFactory.superFormalParameter(
-        null, null, 'field', AstTestFactory.formalParameterList([]));
-    expect(parameter.endToken, parameter.parameters!.endToken);
+    var node = _parseStringToNode<SuperFormalParameter>(r'''
+class A {
+  A(super.^foo(a, b));
+}
+''');
+    expect(node.endToken, node.parameters!.endToken);
   }
 }
 
diff --git a/pkg/analyzer/test/generated/patterns_parser_test.dart b/pkg/analyzer/test/generated/patterns_parser_test.dart
index 57ddb5c..d6d0530 100644
--- a/pkg/analyzer/test/generated/patterns_parser_test.dart
+++ b/pkg/analyzer/test/generated/patterns_parser_test.dart
@@ -807,6 +807,7 @@
     var node = findNode.switchPatternCase('case').pattern;
     assertParsedNodeText(node, r'''
 ConstantPattern
+  const: const
   expression: ListLiteral
     typeArguments: TypeArgumentList
       leftBracket: <
@@ -833,6 +834,7 @@
     assertParsedNodeText(node, r'''
 CastPattern
   pattern: ConstantPattern
+    const: const
     expression: ListLiteral
       typeArguments: TypeArgumentList
         leftBracket: <
@@ -861,6 +863,7 @@
 CaseClause
   caseKeyword: case
   pattern: ConstantPattern
+    const: const
     expression: ListLiteral
       typeArguments: TypeArgumentList
         leftBracket: <
@@ -887,6 +890,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: ListLiteral
       typeArguments: TypeArgumentList
         leftBracket: <
@@ -914,6 +918,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: ListLiteral
       typeArguments: TypeArgumentList
         leftBracket: <
@@ -940,6 +945,7 @@
     var node = findNode.switchPatternCase('case').pattern;
     assertParsedNodeText(node, r'''
 ConstantPattern
+  const: const
   expression: ListLiteral
     typeArguments: TypeArgumentList
       leftBracket: <
@@ -969,6 +975,7 @@
     assertParsedNodeText(node, r'''
 CastPattern
   pattern: ConstantPattern
+    const: const
     expression: ListLiteral
       typeArguments: TypeArgumentList
         leftBracket: <
@@ -1000,6 +1007,7 @@
 CaseClause
   caseKeyword: case
   pattern: ConstantPattern
+    const: const
     expression: ListLiteral
       typeArguments: TypeArgumentList
         leftBracket: <
@@ -1029,6 +1037,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: ListLiteral
       typeArguments: TypeArgumentList
         leftBracket: <
@@ -1059,6 +1068,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: ListLiteral
       typeArguments: TypeArgumentList
         leftBracket: <
@@ -1088,6 +1098,7 @@
     var node = findNode.switchPatternCase('case').pattern;
     assertParsedNodeText(node, r'''
 ConstantPattern
+  const: const
   expression: ListLiteral
     leftBracket: [
     rightBracket: ]
@@ -1107,6 +1118,7 @@
     assertParsedNodeText(node, r'''
 CastPattern
   pattern: ConstantPattern
+    const: const
     expression: ListLiteral
       leftBracket: [
       rightBracket: ]
@@ -1128,6 +1140,7 @@
 CaseClause
   caseKeyword: case
   pattern: ConstantPattern
+    const: const
     expression: ListLiteral
       leftBracket: [
       rightBracket: ]
@@ -1147,6 +1160,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: ListLiteral
       leftBracket: [
       rightBracket: ]
@@ -1167,6 +1181,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: ListLiteral
       leftBracket: [
       rightBracket: ]
@@ -1186,6 +1201,7 @@
     var node = findNode.switchPatternCase('case').pattern;
     assertParsedNodeText(node, r'''
 ConstantPattern
+  const: const
   expression: ListLiteral
     leftBracket: [
     elements
@@ -1208,6 +1224,7 @@
     assertParsedNodeText(node, r'''
 CastPattern
   pattern: ConstantPattern
+    const: const
     expression: ListLiteral
       leftBracket: [
       elements
@@ -1232,6 +1249,7 @@
 CaseClause
   caseKeyword: case
   pattern: ConstantPattern
+    const: const
     expression: ListLiteral
       leftBracket: [
       elements
@@ -1254,6 +1272,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: ListLiteral
       leftBracket: [
       elements
@@ -1277,6 +1296,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: ListLiteral
       leftBracket: [
       elements
@@ -1299,6 +1319,7 @@
     var node = findNode.switchPatternCase('case').pattern;
     assertParsedNodeText(node, r'''
 ConstantPattern
+  const: const
   expression: SetOrMapLiteral
     typeArguments: TypeArgumentList
       leftBracket: <
@@ -1336,6 +1357,7 @@
     assertParsedNodeText(node, r'''
 CastPattern
   pattern: ConstantPattern
+    const: const
     expression: SetOrMapLiteral
       typeArguments: TypeArgumentList
         leftBracket: <
@@ -1375,6 +1397,7 @@
 CaseClause
   caseKeyword: case
   pattern: ConstantPattern
+    const: const
     expression: SetOrMapLiteral
       typeArguments: TypeArgumentList
         leftBracket: <
@@ -1412,6 +1435,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: SetOrMapLiteral
       typeArguments: TypeArgumentList
         leftBracket: <
@@ -1450,6 +1474,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: SetOrMapLiteral
       typeArguments: TypeArgumentList
         leftBracket: <
@@ -1487,6 +1512,7 @@
     var node = findNode.switchPatternCase('case').pattern;
     assertParsedNodeText(node, r'''
 ConstantPattern
+  const: const
   expression: SetOrMapLiteral
     leftBracket: {
     elements
@@ -1514,6 +1540,7 @@
     assertParsedNodeText(node, r'''
 CastPattern
   pattern: ConstantPattern
+    const: const
     expression: SetOrMapLiteral
       leftBracket: {
       elements
@@ -1543,6 +1570,7 @@
 CaseClause
   caseKeyword: case
   pattern: ConstantPattern
+    const: const
     expression: SetOrMapLiteral
       leftBracket: {
       elements
@@ -1570,6 +1598,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: SetOrMapLiteral
       leftBracket: {
       elements
@@ -1598,6 +1627,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: SetOrMapLiteral
       leftBracket: {
       elements
@@ -1625,6 +1655,7 @@
     var node = findNode.switchPatternCase('case').pattern;
     assertParsedNodeText(node, r'''
 ConstantPattern
+  const: const
   expression: MethodInvocation
     methodName: SimpleIdentifier
       token: Foo
@@ -1650,6 +1681,7 @@
     assertParsedNodeText(node, r'''
 CastPattern
   pattern: ConstantPattern
+    const: const
     expression: MethodInvocation
       methodName: SimpleIdentifier
         token: Foo
@@ -1677,6 +1709,7 @@
 CaseClause
   caseKeyword: case
   pattern: ConstantPattern
+    const: const
     expression: MethodInvocation
       methodName: SimpleIdentifier
         token: Foo
@@ -1702,6 +1735,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: MethodInvocation
       methodName: SimpleIdentifier
         token: Foo
@@ -1728,6 +1762,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: MethodInvocation
       methodName: SimpleIdentifier
         token: Foo
@@ -1753,6 +1788,7 @@
     var node = findNode.switchPatternCase('case').pattern;
     assertParsedNodeText(node, r'''
 ConstantPattern
+  const: const
   expression: ParenthesizedExpression
     leftParenthesis: (
     expression: IntegerLiteral
@@ -1774,6 +1810,7 @@
     assertParsedNodeText(node, r'''
 CastPattern
   pattern: ConstantPattern
+    const: const
     expression: ParenthesizedExpression
       leftParenthesis: (
       expression: IntegerLiteral
@@ -1797,6 +1834,7 @@
 CaseClause
   caseKeyword: case
   pattern: ConstantPattern
+    const: const
     expression: ParenthesizedExpression
       leftParenthesis: (
       expression: IntegerLiteral
@@ -1818,6 +1856,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: ParenthesizedExpression
       leftParenthesis: (
       expression: IntegerLiteral
@@ -1840,6 +1879,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: ParenthesizedExpression
       leftParenthesis: (
       expression: IntegerLiteral
@@ -1861,6 +1901,7 @@
     var node = findNode.switchPatternCase('case').pattern;
     assertParsedNodeText(node, r'''
 ConstantPattern
+  const: const
   expression: SetOrMapLiteral
     typeArguments: TypeArgumentList
       leftBracket: <
@@ -1891,6 +1932,7 @@
     assertParsedNodeText(node, r'''
 CastPattern
   pattern: ConstantPattern
+    const: const
     expression: SetOrMapLiteral
       typeArguments: TypeArgumentList
         leftBracket: <
@@ -1923,6 +1965,7 @@
 CaseClause
   caseKeyword: case
   pattern: ConstantPattern
+    const: const
     expression: SetOrMapLiteral
       typeArguments: TypeArgumentList
         leftBracket: <
@@ -1953,6 +1996,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: SetOrMapLiteral
       typeArguments: TypeArgumentList
         leftBracket: <
@@ -1984,6 +2028,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: SetOrMapLiteral
       typeArguments: TypeArgumentList
         leftBracket: <
@@ -2014,6 +2059,7 @@
     var node = findNode.switchPatternCase('case').pattern;
     assertParsedNodeText(node, r'''
 ConstantPattern
+  const: const
   expression: SetOrMapLiteral
     leftBracket: {
     elements
@@ -2037,6 +2083,7 @@
     assertParsedNodeText(node, r'''
 CastPattern
   pattern: ConstantPattern
+    const: const
     expression: SetOrMapLiteral
       leftBracket: {
       elements
@@ -2062,6 +2109,7 @@
 CaseClause
   caseKeyword: case
   pattern: ConstantPattern
+    const: const
     expression: SetOrMapLiteral
       leftBracket: {
       elements
@@ -2085,6 +2133,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: SetOrMapLiteral
       leftBracket: {
       elements
@@ -2109,6 +2158,7 @@
     assertParsedNodeText(node, r'''
 PostfixPattern
   operand: ConstantPattern
+    const: const
     expression: SetOrMapLiteral
       leftBracket: {
       elements
diff --git a/pkg/analyzer/test/generated/statement_parser_test.dart b/pkg/analyzer/test/generated/statement_parser_test.dart
index 2843c1c..8bc6770 100644
--- a/pkg/analyzer/test/generated/statement_parser_test.dart
+++ b/pkg/analyzer/test/generated/statement_parser_test.dart
@@ -1407,9 +1407,9 @@
     expect(clause.onKeyword, isNull);
     expect(clause.exceptionType, isNull);
     expect(clause.catchKeyword, isNotNull);
-    expect(clause.exceptionParameter2, isNotNull);
+    expect(clause.exceptionParameter, isNotNull);
     expect(clause.comma, isNull);
-    expect(clause.stackTraceParameter2, isNull);
+    expect(clause.stackTraceParameter, isNull);
     expect(clause.body, isNotNull);
     expect(statement.finallyKeyword, isNull);
     expect(statement.finallyBlock, isNull);
@@ -1430,9 +1430,9 @@
     expect(clause.onKeyword, isNull);
     expect(clause.exceptionType, isNull);
     expect(clause.catchKeyword, isNotNull);
-    expect(clause.exceptionParameter2!.name.lexeme, 'int');
+    expect(clause.exceptionParameter!.name.lexeme, 'int');
     expect(clause.comma, isNotNull);
-    expect(clause.stackTraceParameter2!.name.lexeme, 'e');
+    expect(clause.stackTraceParameter!.name.lexeme, 'e');
     expect(clause.body, isNotNull);
     expect(statement.finallyKeyword, isNull);
     expect(statement.finallyBlock, isNull);
@@ -1449,9 +1449,9 @@
     expect(clause.onKeyword, isNull);
     expect(clause.exceptionType, isNull);
     expect(clause.catchKeyword, isNotNull);
-    expect(clause.exceptionParameter2, isNotNull);
+    expect(clause.exceptionParameter, isNotNull);
     expect(clause.comma, isNull);
-    expect(clause.stackTraceParameter2, isNull);
+    expect(clause.stackTraceParameter, isNull);
     expect(clause.body, isNotNull);
     expect(statement.finallyKeyword, isNull);
     expect(statement.finallyBlock, isNull);
@@ -1468,9 +1468,9 @@
     expect(clause.onKeyword, isNull);
     expect(clause.exceptionType, isNull);
     expect(clause.catchKeyword, isNotNull);
-    expect(clause.exceptionParameter2, isNotNull);
+    expect(clause.exceptionParameter, isNotNull);
     expect(clause.comma, isNull);
-    expect(clause.stackTraceParameter2, isNull);
+    expect(clause.stackTraceParameter, isNull);
     expect(clause.body, isNotNull);
     expect(statement.finallyKeyword, isNull);
     expect(statement.finallyBlock, isNull);
@@ -1487,9 +1487,9 @@
     expect(clause.onKeyword, isNull);
     expect(clause.exceptionType, isNull);
     expect(clause.catchKeyword, isNotNull);
-    expect(clause.exceptionParameter2, isNotNull);
+    expect(clause.exceptionParameter, isNotNull);
     expect(clause.comma, isNotNull);
-    expect(clause.stackTraceParameter2, isNotNull);
+    expect(clause.stackTraceParameter, isNotNull);
     expect(clause.body, isNotNull);
     expect(statement.finallyKeyword, isNull);
     expect(statement.finallyBlock, isNull);
@@ -1507,9 +1507,9 @@
     expect(clause.onKeyword, isNull);
     expect(clause.exceptionType, isNull);
     expect(clause.catchKeyword, isNotNull);
-    expect(clause.exceptionParameter2, isNotNull);
+    expect(clause.exceptionParameter, isNotNull);
     expect(clause.comma, isNotNull);
-    expect(clause.stackTraceParameter2, isNotNull);
+    expect(clause.stackTraceParameter, isNotNull);
     expect(clause.body, isNotNull);
     expect(statement.finallyKeyword, isNotNull);
     expect(statement.finallyBlock, isNotNull);
@@ -1548,9 +1548,9 @@
     expect(clause.onKeyword, isNotNull);
     expect(clause.exceptionType, isNotNull);
     expect(clause.catchKeyword, isNull);
-    expect(clause.exceptionParameter2, isNull);
+    expect(clause.exceptionParameter, isNull);
     expect(clause.comma, isNull);
-    expect(clause.stackTraceParameter2, isNull);
+    expect(clause.stackTraceParameter, isNull);
     expect(clause.body, isNotNull);
     expect(statement.finallyKeyword, isNull);
     expect(statement.finallyBlock, isNull);
@@ -1568,9 +1568,9 @@
     expect(clause.onKeyword, isNotNull);
     expect(clause.exceptionType, isNotNull);
     expect(clause.catchKeyword, isNotNull);
-    expect(clause.exceptionParameter2, isNotNull);
+    expect(clause.exceptionParameter, isNotNull);
     expect(clause.comma, isNotNull);
-    expect(clause.stackTraceParameter2, isNotNull);
+    expect(clause.stackTraceParameter, isNotNull);
     expect(clause.body, isNotNull);
     expect(statement.finallyKeyword, isNull);
     expect(statement.finallyBlock, isNull);
@@ -1588,9 +1588,9 @@
     expect(clause.onKeyword, isNotNull);
     expect(clause.exceptionType, isNotNull);
     expect(clause.catchKeyword, isNotNull);
-    expect(clause.exceptionParameter2, isNotNull);
+    expect(clause.exceptionParameter, isNotNull);
     expect(clause.comma, isNotNull);
-    expect(clause.stackTraceParameter2, isNotNull);
+    expect(clause.stackTraceParameter, isNotNull);
     expect(clause.body, isNotNull);
     expect(statement.finallyKeyword, isNotNull);
     expect(statement.finallyBlock, isNotNull);
diff --git a/pkg/analyzer/test/generated/utilities_test.dart b/pkg/analyzer/test/generated/utilities_test.dart
index 1e69349..1049f1f 100644
--- a/pkg/analyzer/test/generated/utilities_test.dart
+++ b/pkg/analyzer/test/generated/utilities_test.dart
@@ -386,8 +386,8 @@
       source: findNode.catchClause('(e2,'),
       childAccessors: [
         (node) => node.exceptionType!,
-        (node) => node.exceptionParameter2!,
-        (node) => node.stackTraceParameter2!,
+        (node) => node.exceptionParameter!,
+        (node) => node.stackTraceParameter!,
         (node) => node.body,
       ],
     );
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 e23b1fb..27c658b 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
@@ -7533,11 +7533,11 @@
       CatchClause catchClause = statement.catchClauses[0];
       expect(catchClause.exceptionType, isNull);
 
-      var exceptionNode = catchClause.exceptionParameter2!;
+      var exceptionNode = catchClause.exceptionParameter!;
       var exceptionElement = exceptionNode.declaredElement!;
       expect(exceptionElement.type, typeProvider.objectType);
 
-      var stackNode = catchClause.stackTraceParameter2!;
+      var stackNode = catchClause.stackTraceParameter!;
       var stackElement = stackNode.declaredElement!;
       expect(stackElement.type, typeProvider.stackTraceType);
 
@@ -7562,11 +7562,11 @@
       _assertNamedTypeSimple(
           catchClause.exceptionType as NamedType, typeProvider.intType);
 
-      var exceptionNode = catchClause.exceptionParameter2!;
+      var exceptionNode = catchClause.exceptionParameter!;
       var exceptionElement = exceptionNode.declaredElement!;
       expect(exceptionElement.type, typeProvider.intType);
 
-      var stackNode = catchClause.stackTraceParameter2!;
+      var stackNode = catchClause.stackTraceParameter!;
       var stackElement = stackNode.declaredElement!;
       expect(stackElement.type, typeProvider.stackTraceType);
 
@@ -7589,9 +7589,9 @@
       var statement = statements[2] as TryStatement;
       CatchClause catchClause = statement.catchClauses[0];
       expect(catchClause.exceptionType, isNull);
-      expect(catchClause.stackTraceParameter2, isNull);
+      expect(catchClause.stackTraceParameter, isNull);
 
-      var exceptionNode = catchClause.exceptionParameter2!;
+      var exceptionNode = catchClause.exceptionParameter!;
       var exceptionElement = exceptionNode.declaredElement!;
       expect(exceptionElement.type, typeProvider.objectType);
     }
@@ -7601,9 +7601,9 @@
       var statement = statements[3] as TryStatement;
       CatchClause catchClause = statement.catchClauses[0];
       _assertNamedTypeSimple(catchClause.exceptionType!, typeProvider.intType);
-      expect(catchClause.stackTraceParameter2, isNull);
+      expect(catchClause.stackTraceParameter, isNull);
 
-      var exceptionNode = catchClause.exceptionParameter2!;
+      var exceptionNode = catchClause.exceptionParameter!;
       var exceptionElement = exceptionNode.declaredElement!;
       expect(exceptionElement.type, typeProvider.intType);
     }
@@ -7614,8 +7614,8 @@
       CatchClause catchClause = statement.catchClauses[0];
       _assertNamedTypeSimple(
           catchClause.exceptionType as NamedType, typeProvider.intType);
-      expect(catchClause.exceptionParameter2, isNull);
-      expect(catchClause.stackTraceParameter2, isNull);
+      expect(catchClause.exceptionParameter, isNull);
+      expect(catchClause.stackTraceParameter, isNull);
     }
   }
 
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 be378db..ff1b2d8 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
@@ -1519,10 +1519,11 @@
   }
 
   void test_visitFormalParameterList_r() {
-    _assertSource(
-        "(a)",
-        AstTestFactory.formalParameterList(
-            [AstTestFactory.simpleFormalParameter3("a")]));
+    final code = '(int a)';
+    final findNode = _parseStringToFindNode('''
+void f$code {}
+''');
+    _assertSource(code, findNode.formalParameterList(code));
   }
 
   void test_visitFormalParameterList_rn() {
@@ -1558,12 +1559,11 @@
   }
 
   void test_visitFormalParameterList_rr() {
-    _assertSource(
-        "(a, b)",
-        AstTestFactory.formalParameterList([
-          AstTestFactory.simpleFormalParameter3("a"),
-          AstTestFactory.simpleFormalParameter3("b")
-        ]));
+    final code = '(int a, int b)';
+    final findNode = _parseStringToFindNode('''
+void f$code {}
+''');
+    _assertSource(code, findNode.formalParameterList(code));
   }
 
   void test_visitFormalParameterList_rrn() {
@@ -1877,8 +1877,11 @@
   }
 
   void test_visitFunctionTypedFormalParameter_noType() {
-    _assertSource(
-        "f()", AstTestFactory.functionTypedFormalParameter(null, "f"));
+    final code = 'int f()';
+    final findNode = _parseStringToFindNode('''
+void f($code) {}
+''');
+    _assertSource(code, findNode.functionTypedFormalParameter(code));
   }
 
   void test_visitFunctionTypedFormalParameter_nullable() {
@@ -2092,13 +2095,11 @@
   }
 
   void test_visitIndexExpression() {
-    _assertSource(
-      "a[i]",
-      AstTestFactory.indexExpression(
-        target: AstTestFactory.identifier3("a"),
-        index: AstTestFactory.identifier3("i"),
-      ),
-    );
+    final code = 'a[0]';
+    final findNode = _parseStringToFindNode('''
+final x = $code;
+''');
+    _assertSource(code, findNode.index(code));
   }
 
   void test_visitInstanceCreationExpression_const() {
@@ -3057,8 +3058,11 @@
   }
 
   void test_visitSimpleFormalParameter_keyword() {
-    _assertSource(
-        "var a", AstTestFactory.simpleFormalParameter(Keyword.VAR, "a"));
+    final code = 'var a';
+    final findNode = _parseStringToFindNode('''
+void f($code) {}
+''');
+    _assertSource(code, findNode.simpleFormalParameter(code));
   }
 
   void test_visitSimpleFormalParameter_keyword_type() {
@@ -3162,8 +3166,13 @@
   }
 
   void test_visitSuperFormalParameter_keyword() {
-    _assertSource("var super.a",
-        AstTestFactory.superFormalParameter(Keyword.VAR, null, "a"));
+    final code = 'final super.foo';
+    final findNode = _parseStringToFindNode('''
+class A {
+  A($code);
+}
+''');
+    _assertSource(code, findNode.superFormalParameter(code));
   }
 
   void test_visitSuperFormalParameter_keywordAndType() {
diff --git a/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart b/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart
index b8f160a..2aeb718 100644
--- a/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart
@@ -36,8 +36,8 @@
     assertType(st.type, 'StackTrace');
 
     var node = findNode.catchClause('catch');
-    expect(node.exceptionParameter2!.declaredElement, e);
-    expect(node.stackTraceParameter2!.declaredElement, st);
+    expect(node.exceptionParameter!.declaredElement, e);
+    expect(node.stackTraceParameter!.declaredElement, st);
   }
 
   test_catch_withType() async {
@@ -58,7 +58,7 @@
     assertType(st.type, 'StackTrace');
 
     var node = findNode.catchClause('catch');
-    expect(node.exceptionParameter2!.declaredElement, e);
-    expect(node.stackTraceParameter2!.declaredElement, st);
+    expect(node.exceptionParameter!.declaredElement, e);
+    expect(node.stackTraceParameter!.declaredElement, st);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/function_typed_parameter_var_test.dart b/pkg/analyzer/test/src/diagnostics/function_typed_parameter_var_test.dart
index 483d186..8f970fc 100644
--- a/pkg/analyzer/test/src/diagnostics/function_typed_parameter_var_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/function_typed_parameter_var_test.dart
@@ -28,6 +28,7 @@
     var node = parseResult.findNode.superFormalParameter('super.a');
     assertParsedNodeText(node, r'''
 SuperFormalParameter
+  keyword: var
   superKeyword: super
   period: .
   name: a
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_named_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_named_test.dart
deleted file mode 100644
index f0ab80b0..0000000
--- a/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_named_test.dart
+++ /dev/null
@@ -1,346 +0,0 @@
-// Copyright (c) 2019, 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/src/error/codes.dart';
-import 'package:test_reflective_loader/test_reflective_loader.dart';
-
-import '../dart/resolution/context_collection_resolution.dart';
-
-main() {
-  defineReflectiveSuite(() {
-    defineReflectiveTests(InvalidOverrideDifferentDefaultValuesNamedTest);
-    defineReflectiveTests(
-      InvalidOverrideDifferentDefaultValuesNamedWithoutNullSafetyTest,
-    );
-  });
-}
-
-@reflectiveTest
-class InvalidOverrideDifferentDefaultValuesNamedTest
-    extends InvalidOverrideDifferentDefaultValuesNamedWithoutNullSafetyTest {
-  test_concrete_equal_optIn_extends_optOut() async {
-    newFile('$testPackageLibPath/a.dart', r'''
-// @dart = 2.7
-class A {
-  void foo({int a = 0}) {}
-}
-''');
-
-    await assertErrorsInCode(r'''
-import 'a.dart';
-
-class B extends A {
-  void foo({int a = 0}) {}
-}
-''', [
-      error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
-    ]);
-  }
-
-  test_concrete_equal_optOut_extends_optIn() async {
-    newFile('$testPackageLibPath/a.dart', r'''
-class A {
-  void foo({int a = 0}) {}
-}
-''');
-
-    await assertNoErrorsInCode(r'''
-// @dart = 2.7
-import 'a.dart';
-
-class B extends A {
-  void foo({int a = 0}) {}
-}
-''');
-  }
-}
-
-@reflectiveTest
-class InvalidOverrideDifferentDefaultValuesNamedWithoutNullSafetyTest
-    extends PubPackageResolutionTest {
-  test_abstract_different_base_value() async {
-    await assertErrorsInCode(
-      r'''
-abstract class A {
-  void foo({x = 0}) {}
-}
-
-abstract class B extends A {
-  void foo({x = 1});
-}
-''',
-      expectedErrorsByNullability(nullable: [], legacy: [
-        error(StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED,
-            86, 5),
-      ]),
-    );
-  }
-
-  test_abstract_noDefault_base_noDefault() async {
-    await assertNoErrorsInCode(r'''
-abstract class A {
-  void foo({x});
-}
-
-abstract class B extends A {
-  void foo({x});
-}
-''');
-  }
-
-  test_abstract_noDefault_base_value() async {
-    await assertErrorsInCode(
-        r'''
-abstract class A {
-  void foo({x = 0}) {}
-}
-
-abstract class B extends A {
-  void foo({x});
-}
-''',
-        expectedErrorsByNullability(nullable: [], legacy: [
-          error(
-              StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED,
-              86,
-              1),
-        ]));
-  }
-
-  test_abstract_noDefault_multipleBase_differentValue() async {
-    await assertErrorsInCode(
-        r'''
-abstract class A {
-  void foo({x = 0}) {}
-}
-
-abstract class B {
-  void foo({x = 1});
-}
-
-abstract class C extends A implements B {
-  void foo({x});
-}
-''',
-        expectedErrorsByNullability(nullable: [], legacy: [
-          error(
-              StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED,
-              142,
-              1),
-          error(
-              StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED,
-              142,
-              1),
-        ]));
-  }
-
-  test_abstract_noDefault_multipleBase_sameValue() async {
-    await assertErrorsInCode(
-        r'''
-abstract class A {
-  void foo({x = 0});
-}
-
-abstract class B {
-  void foo({x = 0});
-}
-
-abstract class C extends A implements B {
-  void foo({x});
-}
-''',
-        expectedErrorsByNullability(nullable: [], legacy: [
-          error(
-              StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED,
-              140,
-              1),
-          error(
-              StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED,
-              140,
-              1),
-        ]));
-  }
-
-  test_abstract_value_base_noDefault() async {
-    await assertNoErrorsInCode(r'''
-abstract class A {
-  void foo({x});
-}
-
-abstract class B extends A {
-  void foo({x = 0});
-}
-''');
-  }
-
-  test_concrete_different() async {
-    await assertErrorsInCode(
-      r'''
-class A {
-  void foo({x = 0}) {}
-}
-class B extends A {
-  void foo({x = 1}) {}
-}''',
-      expectedErrorsByNullability(nullable: [], legacy: [
-        error(StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED,
-            67, 5),
-      ]),
-    );
-  }
-
-  test_concrete_equal() async {
-    await assertNoErrorsInCode(r'''
-abstract class A {
-  void foo({x = 1});
-}
-
-class C extends A {
-  void foo({x = 3 - 2}) {}
-}
-''');
-  }
-
-  test_concrete_equal_function() async {
-    await assertNoErrorsInCode(r'''
-nothing() => 'nothing';
-
-class A {
-  void foo(String a, {orElse = nothing}) {}
-}
-
-class B extends A {
-  void foo(String a, {orElse = nothing}) {}
-}
-''');
-  }
-
-  test_concrete_equal_otherLibrary() async {
-    newFile('$testPackageLibPath/a.dart', r'''
-class A {
-  void foo([a = 0]) {}
-}
-''');
-    await assertNoErrorsInCode(r'''
-import 'a.dart';
-
-class C extends A {
-  void foo([a = 0]) {}
-}
-''');
-  }
-
-  test_concrete_equal_otherLibrary_listLiteral() async {
-    newFile('$testPackageLibPath/other.dart', '''
-class C {
-  void foo({x: const ['x']}) {}
-}
-''');
-    await assertNoErrorsInCode('''
-import 'other.dart';
-class D extends C {
-  void foo({x: const ['x']}) {}
-}
-''');
-  }
-
-  test_concrete_explicitNull_overriddenWith_implicitNull() async {
-    // If the base class provided an explicit null value for a default
-    // parameter, then it is ok for the derived class to let the default value
-    // be implicit, because the implicit default value of null matches the
-    // explicit default value of null.
-    await assertNoErrorsInCode(r'''
-class A {
-  void foo({x: null}) {}
-}
-class B extends A {
-  void foo({x}) {}
-}
-''');
-  }
-
-  test_concrete_implicitNull_overriddenWith_value() async {
-    // If the base class lets the default parameter be implicit, then it is ok
-    // for the derived class to provide an explicit default value, even if it's
-    // not null.
-    await assertNoErrorsInCode(r'''
-class A {
-  void foo({x}) {}
-}
-class B extends A {
-  void foo({x = 1}) {}
-}
-''');
-  }
-
-  test_concrete_undefined_base() async {
-    // Note: we expect some errors due to the constant referring to undefined
-    // values, but there should not be any INVALID_OVERRIDE... error.
-    await assertErrorsInCode('''
-class A {
-  void foo({x = Undefined.value}) {}
-}
-class B extends A {
-  void foo({x = 1}) {}
-}
-''', [
-      error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 26, 9),
-      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 26, 9),
-    ]);
-  }
-
-  test_concrete_undefined_both() async {
-    // Note: we expect some errors due to the constant referring to undefined
-    // values, but there should not be any INVALID_OVERRIDE... error.
-    await assertErrorsInCode('''
-class A {
-  void foo({x = Undefined.value}) {}
-}
-class B extends A {
-  void foo({x = Undefined2.value2}) {}
-}
-''', [
-      error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 26, 9),
-      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 26, 9),
-      error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 85, 10),
-      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 85, 10),
-    ]);
-  }
-
-  test_concrete_undefined_derived() async {
-    // Note: we expect some errors due to the constant referring to undefined
-    // values, but there should not be any INVALID_OVERRIDE... error.
-    await assertErrorsInCode('''
-class A {
-  void foo({x = 1}) {}
-}
-class B extends A {
-  void foo({x = Undefined.value}) {}
-}
-''', [
-      error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 71, 9),
-      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 71, 9),
-    ]);
-  }
-
-  test_concrete_value_overriddenWith_implicitNull() async {
-    // If the base class provided an explicit value for a default parameter,
-    // then it is a static warning for the derived class to provide a different
-    // value, even if implicitly.
-    await assertErrorsInCode(
-      r'''
-class A {
-  void foo({x: 1}) {}
-}
-class B extends A {
-  void foo({x}) {}
-}
-''',
-      expectedErrorsByNullability(nullable: [], legacy: [
-        error(StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED,
-            66, 1),
-      ]),
-    );
-  }
-}
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_positional_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_positional_test.dart
deleted file mode 100644
index ddd6517..0000000
--- a/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_positional_test.dart
+++ /dev/null
@@ -1,363 +0,0 @@
-// Copyright (c) 2019, 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/src/error/codes.dart';
-import 'package:test_reflective_loader/test_reflective_loader.dart';
-
-import '../dart/resolution/context_collection_resolution.dart';
-
-main() {
-  defineReflectiveSuite(() {
-    defineReflectiveTests(
-      InvalidOverrideDifferentDefaultValuesPositionalTest,
-    );
-    defineReflectiveTests(
-      InvalidOverrideDifferentDefaultValuesPositionalWithoutNullSafetyTest,
-    );
-  });
-}
-
-@reflectiveTest
-class InvalidOverrideDifferentDefaultValuesPositionalTest
-    extends InvalidOverrideDifferentDefaultValuesPositionalWithoutNullSafetyTest {
-  test_concrete_equal_optIn_extends_optOut() async {
-    newFile('$testPackageLibPath/a.dart', r'''
-// @dart = 2.7
-class A {
-  void foo([int a = 0]) {}
-}
-''');
-
-    await assertErrorsInCode(r'''
-import 'a.dart';
-
-class B extends A {
-  void foo([int a = 0]) {}
-}
-''', [
-      error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
-    ]);
-  }
-
-  test_concrete_equal_optOut_extends_optIn() async {
-    newFile('$testPackageLibPath/a.dart', r'''
-class A {
-  void foo([int a = 0]) {}
-}
-''');
-
-    await assertNoErrorsInCode(r'''
-// @dart = 2.7
-import 'a.dart';
-
-class B extends A {
-  void foo([int a = 0]) {}
-}
-''');
-  }
-}
-
-@reflectiveTest
-class InvalidOverrideDifferentDefaultValuesPositionalWithoutNullSafetyTest
-    extends PubPackageResolutionTest {
-  test_abstract_different_base_value() async {
-    await assertErrorsInCode(
-      r'''
-abstract class A {
-  void foo([x = 0]) {}
-}
-
-abstract class B extends A {
-  void foo([x = 1]);
-}
-''',
-      expectedErrorsByNullability(nullable: [], legacy: [
-        error(
-            StaticWarningCode
-                .INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL,
-            86,
-            5),
-      ]),
-    );
-  }
-
-  test_abstract_noDefault_base_noDefault() async {
-    await assertNoErrorsInCode(r'''
-abstract class A {
-  void foo([x]);
-}
-
-abstract class B extends A {
-  void foo([x]);
-}
-''');
-  }
-
-  test_abstract_noDefault_base_value() async {
-    await assertErrorsInCode(
-        r'''
-abstract class A {
-  void foo([x = 0]) {}
-}
-
-abstract class B extends A {
-  void foo([x]);
-}
-''',
-        expectedErrorsByNullability(nullable: [], legacy: [
-          error(
-              StaticWarningCode
-                  .INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL,
-              86,
-              1),
-        ]));
-  }
-
-  test_abstract_noDefault_multipleBase_differentValue() async {
-    await assertErrorsInCode(
-        r'''
-abstract class A {
-  void foo([x = 0]) {}
-}
-
-abstract class B {
-  void foo([x = 1]);
-}
-
-abstract class C extends A implements B {
-  void foo([x]);
-}
-''',
-        expectedErrorsByNullability(nullable: [], legacy: [
-          error(
-              StaticWarningCode
-                  .INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL,
-              142,
-              1),
-          error(
-              StaticWarningCode
-                  .INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL,
-              142,
-              1),
-        ]));
-  }
-
-  test_abstract_noDefault_multipleBase_sameValue() async {
-    await assertErrorsInCode(
-        r'''
-abstract class A {
-  void foo([x = 0]);
-}
-
-abstract class B {
-  void foo([x = 0]);
-}
-
-abstract class C extends A implements B {
-  void foo([x]);
-}
-''',
-        expectedErrorsByNullability(nullable: [], legacy: [
-          error(
-              StaticWarningCode
-                  .INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL,
-              140,
-              1),
-          error(
-              StaticWarningCode
-                  .INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL,
-              140,
-              1),
-        ]));
-  }
-
-  test_abstract_value_base_noDefault() async {
-    await assertNoErrorsInCode(r'''
-abstract class A {
-  void foo([x]);
-}
-
-abstract class B extends A {
-  void foo([x = 0]);
-}
-''');
-  }
-
-  test_concrete_different() async {
-    await assertErrorsInCode(
-      r'''
-class A {
-  void foo([x = 0]) {}
-}
-class B extends A {
-  void foo([x = 1]) {}
-}
-''',
-      expectedErrorsByNullability(nullable: [], legacy: [
-        error(
-            StaticWarningCode
-                .INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL,
-            67,
-            5),
-      ]),
-    );
-  }
-
-  test_concrete_equal() async {
-    await assertNoErrorsInCode(r'''
-abstract class A {
-  void foo([x = 1]);
-}
-
-class C extends A {
-  void foo([x = 3 - 2]) {}
-}
-''');
-  }
-
-  test_concrete_equal_function() async {
-    await assertNoErrorsInCode(r'''
-nothing() => 'nothing';
-
-class A {
-  void foo(String a, [orElse = nothing]) {}
-}
-
-class B extends A {
-  void foo(String a, [orElse = nothing]) {}
-}
-''');
-  }
-
-  test_concrete_equal_otherLibrary() async {
-    newFile('$testPackageLibPath/a.dart', r'''
-class A {
-  void foo([x = 0]) {}
-}
-''');
-    await assertNoErrorsInCode(r'''
-import 'a.dart';
-
-class C extends A {
-  void foo([a = 0]) {}
-}
-''');
-  }
-
-  test_concrete_equal_otherLibrary_listLiteral() async {
-    newFile('$testPackageLibPath/other.dart', '''
-class C {
-  void foo([x = const ['x']]) {}
-}
-''');
-    await assertNoErrorsInCode('''
-import 'other.dart';
-class D extends C {
-  void foo([x = const ['x']]) {}
-}
-''');
-  }
-
-  test_concrete_explicitNull_overriddenWith_implicitNull() async {
-    // If the base class provided an explicit null value for a default
-    // parameter, then it is ok for the derived class to let the default value
-    // be implicit, because the implicit default value of null matches the
-    // explicit default value of null.
-    await assertNoErrorsInCode(r'''
-class A {
-  void foo([x = null]) {}
-}
-class B extends A {
-  void foo([x]) {}
-}
-''');
-  }
-
-  test_concrete_implicitNull_overriddenWith_value() async {
-    // If the base class lets the default parameter be implicit, then it is ok
-    // for the derived class to provide an explicit default value, even if it's
-    // not null.
-    await assertNoErrorsInCode(r'''
-class A {
-  void foo([x]) {}
-}
-class B extends A {
-  void foo([x = 1]) {}
-}
-''');
-  }
-
-  test_concrete_undefined_base() async {
-    // Note: we expect some errors due to the constant referring to undefined
-    // values, but there should not be any INVALID_OVERRIDE... error.
-    await assertErrorsInCode('''
-class A {
-  void foo([x = Undefined.value]) {}
-}
-class B extends A {
-  void foo([x = 1]) {}
-}
-''', [
-      error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 26, 9),
-      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 26, 9),
-    ]);
-  }
-
-  test_concrete_undefined_both() async {
-    // Note: we expect some errors due to the constant referring to undefined
-    // values, but there should not be any INVALID_OVERRIDE... error.
-    await assertErrorsInCode('''
-class A {
-  void foo([x = Undefined.value]) {}
-}
-class B extends A {
-  void foo([x = Undefined2.value2]) {}
-}
-''', [
-      error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 26, 9),
-      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 26, 9),
-      error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 85, 10),
-      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 85, 10),
-    ]);
-  }
-
-  test_concrete_undefined_derived() async {
-    // Note: we expect some errors due to the constant referring to undefined
-    // values, but there should not be any INVALID_OVERRIDE... error.
-    await assertErrorsInCode('''
-class A {
-  void foo([x = 1]) {}
-}
-class B extends A {
-  void foo([x = Undefined.value]) {}
-}
-''', [
-      error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 71, 9),
-      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 71, 9),
-    ]);
-  }
-
-  test_concrete_value_overriddenWith_implicitNull() async {
-    // If the base class provided an explicit value for a default parameter,
-    // then it is a static warning for the derived class to provide a different
-    // value, even if implicitly.
-    await assertErrorsInCode(
-      r'''
-class A {
-  void foo([x = 1]) {}
-}
-class B extends A {
-  void foo([x]) {}
-}
-''',
-      expectedErrorsByNullability(nullable: [], legacy: [
-        error(
-            StaticWarningCode
-                .INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL,
-            67,
-            1),
-      ]),
-    );
-  }
-}
diff --git a/pkg/analyzer/test/src/diagnostics/test_all.dart b/pkg/analyzer/test/src/diagnostics/test_all.dart
index 60cccac..45df764 100644
--- a/pkg/analyzer/test/src/diagnostics/test_all.dart
+++ b/pkg/analyzer/test/src/diagnostics/test_all.dart
@@ -369,10 +369,6 @@
 import 'invalid_non_virtual_annotation_test.dart'
     as invalid_non_virtual_annotation;
 import 'invalid_null_aware_operator_test.dart' as invalid_null_aware_operator;
-import 'invalid_override_different_default_values_named_test.dart'
-    as invalid_override_different_default_values_named;
-import 'invalid_override_different_default_values_positional_test.dart'
-    as invalid_override_different_default_values_positional;
 import 'invalid_override_of_non_virtual_member_test.dart'
     as invalid_override_of_non_virtual_member;
 import 'invalid_override_test.dart' as invalid_override;
@@ -1050,8 +1046,6 @@
     invalid_modifier_on_setter.main();
     invalid_non_virtual_annotation.main();
     invalid_null_aware_operator.main();
-    invalid_override_different_default_values_named.main();
-    invalid_override_different_default_values_positional.main();
     invalid_override_of_non_virtual_member.main();
     invalid_override.main();
     invalid_reference_to_generative_enum_constructor.main();
diff --git a/pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart b/pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart
index b207854..70772d4 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart
@@ -78,7 +78,7 @@
 
   @override
   void visitCatchClause(CatchClause node) {
-    var exceptionParameter = node.exceptionParameter2;
+    var exceptionParameter = node.exceptionParameter;
     if (exceptionParameter != null) {
       declaredParam(
         exceptionParameter.name,
@@ -87,7 +87,7 @@
       );
     }
 
-    var stackTraceParameter = node.stackTraceParameter2;
+    var stackTraceParameter = node.stackTraceParameter;
     if (stackTraceParameter != null) {
       declaredParam(
         stackTraceParameter.name,
diff --git a/pkg/compiler/lib/src/io/kernel_source_information.dart b/pkg/compiler/lib/src/io/kernel_source_information.dart
index e8982b1..16dda87 100644
--- a/pkg/compiler/lib/src/io/kernel_source_information.dart
+++ b/pkg/compiler/lib/src/io/kernel_source_information.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.10
-
 /// Source information system mapping that attempts a semantic mapping between
 /// offsets of JavaScript code points to offsets of Dart code points.
 
@@ -12,24 +10,22 @@
 import 'package:kernel/ast.dart' as ir;
 import '../elements/entities.dart';
 import '../js_model/element_map.dart';
-import '../js_model/js_strategy.dart';
 import '../universe/call_structure.dart';
 import 'source_information.dart';
 import 'position_information.dart';
 
 class KernelSourceInformationStrategy
     extends AbstractPositionSourceInformationStrategy {
-  final JsBackendStrategy _backendStrategy;
+  late final JsToElementMap _elementMap;
 
-  const KernelSourceInformationStrategy(this._backendStrategy);
+  @override
+  void onElementMapAvailable(JsToElementMap elementMap) {
+    _elementMap = elementMap;
+  }
 
   @override
   SourceInformationBuilder createBuilderForContext(MemberEntity member) {
-    return KernelSourceInformationBuilder(
-        _backendStrategy
-            // ignore:deprecated_member_use_from_same_package
-            .elementMap,
-        member);
+    return KernelSourceInformationBuilder(_elementMap, member);
   }
 }
 
@@ -39,19 +35,19 @@
 /// [elementMap] is used to compute names for closure call methods.
 // TODO(johnniwinther): Make the closure call names available to
 // `sourcemap_helper.dart`.
-String computeKernelElementNameForSourceMaps(
+String? computeKernelElementNameForSourceMaps(
     JsToElementMap elementMap, MemberEntity member,
-    [CallStructure callStructure]) {
+    [CallStructure? callStructure]) {
   MemberDefinition definition = elementMap.getMemberDefinition(member);
   switch (definition.kind) {
     case MemberKind.regular:
-      ir.Member node = definition.node;
+      final node = definition.node as ir.Member;
       if (node.isExtensionMember) return _findExtensionMemberName(node);
       return computeElementNameForSourceMaps(member, callStructure);
 
     case MemberKind.closureCall:
-      ir.TreeNode node = definition.node;
-      String name;
+      var node = definition.node as ir.TreeNode;
+      String? name;
       while (node is! ir.Member) {
         if (node is ir.FunctionDeclaration) {
           if (name != null) {
@@ -66,11 +62,11 @@
             name = '<anonymous function>';
           }
         }
-        node = node.parent;
+        node = node.parent!;
       }
       MemberEntity enclosingMember = elementMap.getMember(node);
       String enclosingMemberName =
-          computeElementNameForSourceMaps(enclosingMember, callStructure);
+          computeElementNameForSourceMaps(enclosingMember, callStructure)!;
       return '$enclosingMemberName.$name';
     default:
       return computeElementNameForSourceMaps(member, callStructure);
@@ -108,14 +104,14 @@
 class KernelSourceInformationBuilder implements SourceInformationBuilder {
   final JsToElementMap _elementMap;
   final MemberEntity _member;
-  final String _name;
+  final String? _name;
 
   /// Inlining context or null when no inlining has taken place.
   ///
   /// A new builder is created every time the backend inlines a method. This
   /// field contains the location of every call site that has been inlined. The
   /// last entry on the list is always a call to [_member].
-  final List<FrameContext> inliningContext;
+  final List<FrameContext>? inliningContext;
 
   KernelSourceInformationBuilder(this._elementMap, this._member)
       : _name = computeKernelElementNameForSourceMaps(_elementMap, _member),
@@ -129,21 +125,19 @@
   ///
   /// If [offset] is `null`, the first `fileOffset` of [node] or its parents is
   /// used.
-  SourceLocation _getSourceLocation(String name, ir.TreeNode node,
-      [int offset]) {
+  SourceLocation _getSourceLocation(String? name, ir.TreeNode node,
+      [int? offset]) {
     ir.Location location;
     if (offset != null) {
-      location = node.location;
-      location = node.enclosingComponent.getLocation(location.file, offset);
+      location = node.location!;
+      location = node.enclosingComponent!.getLocation(location.file, offset)!;
     } else {
-      while (node != null && node.fileOffset == ir.TreeNode.noOffset) {
-        node = node.parent;
+      while (node.fileOffset == ir.TreeNode.noOffset) {
+        node = node.parent!;
       }
-      location = node.location;
+      location = node.location!;
       offset = node.fileOffset;
     }
-    assert(
-        location != null, "No location found for $node (${node.runtimeType})");
     return KernelSourceLocation(location, offset, name);
   }
 
@@ -152,7 +146,7 @@
   ///
   /// This method handles both methods, constructors, and local functions.
   SourceInformation _buildFunction(
-      String name, ir.TreeNode node, ir.FunctionNode functionNode) {
+      String? name, ir.TreeNode node, ir.FunctionNode functionNode) {
     if (functionNode.fileEndOffset != ir.TreeNode.noOffset) {
       return PositionSourceInformation(
           _getSourceLocation(name, node),
@@ -167,27 +161,28 @@
   ///
   /// This is used function declarations and return expressions which both point
   /// to the end of the member as the closing position.
-  SourceInformation _buildFunctionEnd(MemberEntity member, [ir.TreeNode base]) {
+  SourceInformation _buildFunctionEnd(MemberEntity member,
+      [ir.TreeNode? base]) {
     MemberDefinition definition = _elementMap.getMemberDefinition(member);
-    String name = computeKernelElementNameForSourceMaps(_elementMap, member);
+    String? name = computeKernelElementNameForSourceMaps(_elementMap, member);
     switch (definition.kind) {
       case MemberKind.regular:
-        ir.Member node = definition.node;
+        final node = definition.node as ir.Member;
         if (node is ir.Procedure) {
           return _buildFunction(name, base ?? node, node.function);
         }
         break;
       case MemberKind.constructor:
       case MemberKind.constructorBody:
-        ir.Member node = definition.node;
-        return _buildFunction(name, base ?? node, node.function);
+        final node = definition.node as ir.Member;
+        return _buildFunction(name, base ?? node, node.function!);
       case MemberKind.closureCall:
-        ir.LocalFunction node = definition.node;
+        final node = definition.node as ir.LocalFunction;
         return _buildFunction(name, base ?? node, node.function);
       // TODO(sra): generatorBody
       default:
     }
-    return _buildTreeNode(base ?? definition.node, name: name);
+    return _buildTreeNode(base ?? definition.node as ir.TreeNode, name: name);
   }
 
   /// Creates the source information for exiting a function definition defined
@@ -209,7 +204,7 @@
   ///
   /// This method is used to for code in the beginning of a method, like
   /// variable declarations in the start of a function.
-  SourceInformation _buildBody(ir.TreeNode node, ir.TreeNode body) {
+  SourceInformation _buildBody(ir.TreeNode node, ir.TreeNode? body) {
     SourceLocation location;
     if (body != null) {
       if (body is ir.Block && body.statements.isNotEmpty) {
@@ -245,19 +240,19 @@
         }
         break;
       case MemberKind.closureCall:
-        ir.LocalFunction node = definition.node;
+        final node = definition.node as ir.LocalFunction;
         return _buildBody(node, node.function.body);
       case MemberKind.generatorBody:
         ir.Node node = definition.node;
         if (node is ir.LocalFunction) {
           return _buildBody(node, node.function.body);
         } else if (node is ir.Member && node.function != null) {
-          return _buildBody(node, node.function /*!*/ .body);
+          return _buildBody(node, node.function!.body);
         }
         break;
       default:
     }
-    return _buildTreeNode(definition.node);
+    return _buildTreeNode(definition.node as ir.TreeNode);
   }
 
   /// Creates source information for the exit of the current member.
@@ -272,109 +267,109 @@
         break;
       case MemberKind.constructor:
       case MemberKind.constructorBody:
-        ir.Member node = definition.node;
-        return _buildFunctionExit(node, node.function);
+        final node = definition.node as ir.Member;
+        return _buildFunctionExit(node, node.function!);
       case MemberKind.closureCall:
-        ir.LocalFunction node = definition.node;
+        final node = definition.node as ir.LocalFunction;
         return _buildFunctionExit(node, node.function);
       default:
     }
-    return _buildTreeNode(definition.node);
+    return _buildTreeNode(definition.node as ir.TreeNode);
   }
 
   /// Creates source information based on the location of [node].
   SourceInformation _buildTreeNode(ir.TreeNode node,
-      {SourceLocation closingPosition, String name}) {
+      {SourceLocation? closingPosition, String? name}) {
     return PositionSourceInformation(_getSourceLocation(name ?? _name, node),
         closingPosition, inliningContext);
   }
 
   @override
   SourceInformationBuilder forContext(
-      MemberEntity member, SourceInformation context) {
-    List<FrameContext> newContext = inliningContext?.toList() ?? [];
+      MemberEntity member, SourceInformation? context) {
+    List<FrameContext>? newContext = inliningContext?.toList() ?? [];
     if (context != null) {
-      newContext.add(FrameContext(context, member.name));
+      newContext.add(FrameContext(context, member.name!));
     } else {
       // TODO(sigmund): investigate whether we have any more cases where context
       // is null.
       newContext = inliningContext;
     }
 
-    String name = computeKernelElementNameForSourceMaps(_elementMap, _member);
+    String? name = computeKernelElementNameForSourceMaps(_elementMap, _member);
     return KernelSourceInformationBuilder.withContext(
         _elementMap, member, newContext, name);
   }
 
   @override
-  SourceInformation buildSwitchCase(ir.Node node) => null;
+  SourceInformation? buildSwitchCase(ir.Node node) => null;
 
   @override
-  SourceInformation buildSwitch(ir.Node node) {
+  SourceInformation buildSwitch(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildAs(ir.Node node) {
+  SourceInformation buildAs(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildIs(ir.Node node) {
+  SourceInformation buildIs(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildTry(ir.Node node) {
+  SourceInformation buildTry(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildCatch(ir.Node node) {
+  SourceInformation buildCatch(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildBinary(ir.Node node) {
+  SourceInformation buildBinary(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildUnary(ir.Node node) {
+  SourceInformation buildUnary(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildIndexSet(ir.Node node) => null;
+  SourceInformation? buildIndexSet(ir.Node node) => null;
 
   @override
-  SourceInformation buildIndex(ir.Node node) => null;
+  SourceInformation? buildIndex(ir.Node node) => null;
 
   @override
-  SourceInformation buildForInSet(ir.Node node) {
+  SourceInformation buildForInSet(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildForInCurrent(ir.Node node) {
+  SourceInformation buildForInCurrent(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildForInMoveNext(ir.Node node) {
+  SourceInformation buildForInMoveNext(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildForInIterator(ir.Node node) {
+  SourceInformation buildForInIterator(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildStringInterpolation(ir.Node node) => null;
+  SourceInformation? buildStringInterpolation(ir.Node node) => null;
 
   @override
-  SourceInformation buildForeignCode(ir.Node node) => null;
+  SourceInformation? buildForeignCode(ir.Node node) => null;
 
   @override
   SourceInformation buildVariableDeclaration() {
@@ -382,12 +377,12 @@
   }
 
   @override
-  SourceInformation buildAwait(ir.Node node) {
+  SourceInformation buildAwait(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildYield(ir.Node node) {
+  SourceInformation buildYield(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
@@ -402,27 +397,27 @@
   }
 
   @override
-  SourceInformation buildAssignment(ir.Node node) {
+  SourceInformation buildAssignment(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildThrow(ir.Node node) {
+  SourceInformation buildThrow(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildAssert(ir.Node node) {
+  SourceInformation buildAssert(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildNew(ir.Node node) {
+  SourceInformation buildNew(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildIf(ir.Node node) {
+  SourceInformation buildIf(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
@@ -434,40 +429,40 @@
   }
 
   @override
-  SourceInformation buildGet(ir.Node node) {
+  SourceInformation buildGet(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildSet(ir.Node node) {
+  SourceInformation buildSet(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildLoop(ir.Node node) {
+  SourceInformation buildLoop(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildImplicitReturn(MemberEntity element) => null;
+  SourceInformation? buildImplicitReturn(MemberEntity element) => null;
 
   @override
-  SourceInformation buildReturn(ir.Node node) {
+  SourceInformation buildReturn(ir.TreeNode node) {
     return _buildFunctionEnd(_member, node);
   }
 
   @override
-  SourceInformation buildCreate(ir.Node node) {
+  SourceInformation buildCreate(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildListLiteral(ir.Node node) {
+  SourceInformation buildListLiteral(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 
   @override
-  SourceInformation buildGeneric(ir.Node node) => null;
+  SourceInformation? buildGeneric(ir.Node node) => null;
 
   @override
   SourceInformation buildDeclaration(MemberEntity member) {
@@ -478,14 +473,14 @@
   SourceInformation buildStub(
       FunctionEntity function, CallStructure callStructure) {
     MemberDefinition definition = _elementMap.getMemberDefinition(function);
-    String name = computeKernelElementNameForSourceMaps(
+    String? name = computeKernelElementNameForSourceMaps(
         _elementMap, function, callStructure);
     ir.Node node = definition.node;
-    return _buildTreeNode(node, name: name);
+    return _buildTreeNode(node as ir.TreeNode, name: name);
   }
 
   @override
-  SourceInformation buildGoto(ir.Node node) {
+  SourceInformation buildGoto(ir.TreeNode node) {
     return _buildTreeNode(node);
   }
 }
@@ -494,11 +489,11 @@
   @override
   final int offset;
   @override
-  final String sourceName;
+  final String? sourceName;
   @override
   final Uri sourceUri;
 
-  KernelSourceLocation(ir.Location location, this.offset, this.sourceName)
+  KernelSourceLocation(super.location, this.offset, this.sourceName)
       : sourceUri = location.file,
-        super.fromLocation(location);
+        super.fromLocation();
 }
diff --git a/pkg/compiler/lib/src/io/source_information.dart b/pkg/compiler/lib/src/io/source_information.dart
index 62bae4e..a1b77ec 100644
--- a/pkg/compiler/lib/src/io/source_information.dart
+++ b/pkg/compiler/lib/src/io/source_information.dart
@@ -10,6 +10,7 @@
 import '../js/js.dart' show JavaScriptNodeSourceInformation;
 import '../serialization/serialization.dart';
 import '../universe/call_structure.dart';
+import '../js_model/element_map.dart';
 import 'source_file.dart';
 import 'position_information.dart';
 
@@ -106,6 +107,12 @@
 class SourceInformationStrategy {
   const SourceInformationStrategy();
 
+  /// Called when the [JsToElementMap] is available.
+  ///
+  /// The [JsToElementMap] is used by some source information strategies to
+  /// extract member details relevant in the source-map generation process.
+  void onElementMapAvailable(JsToElementMap elementMap) {}
+
   /// Create a [SourceInformationBuilder] for [member].
   SourceInformationBuilder createBuilderForContext(
       covariant MemberEntity member) {
@@ -126,7 +133,7 @@
   /// Create a [SourceInformationBuilder] for [member] with additional inlining
   /// [context].
   SourceInformationBuilder forContext(
-          covariant MemberEntity member, SourceInformation context) =>
+          covariant MemberEntity member, SourceInformation? context) =>
       this;
 
   /// Generate [SourceInformation] for the declaration of the [member].
@@ -143,51 +150,51 @@
 
   /// Generate [SourceInformation] for an instantiation of a class using [node]
   /// for the source position.
-  SourceInformation? buildCreate(ir.Node node) => null;
+  SourceInformation? buildCreate(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the return [node].
-  SourceInformation? buildReturn(ir.Node node) => null;
+  SourceInformation? buildReturn(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for an implicit return in [element].
   SourceInformation? buildImplicitReturn(covariant MemberEntity element) =>
       null;
 
   /// Generate [SourceInformation] for the loop [node].
-  SourceInformation? buildLoop(ir.Node node) => null;
+  SourceInformation? buildLoop(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for a read access like `a.b`.
-  SourceInformation? buildGet(ir.Node node) => null;
+  SourceInformation? buildGet(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for a write access like `a.b = 3`.
-  SourceInformation? buildSet(ir.Node node) => null;
+  SourceInformation? buildSet(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for a call in [node].
   SourceInformation? buildCall(ir.Node receiver, ir.Node call) => null;
 
   /// Generate [SourceInformation] for the if statement in [node].
-  SourceInformation? buildIf(ir.Node node) => null;
+  SourceInformation? buildIf(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the constructor invocation in [node].
-  SourceInformation? buildNew(ir.Node node) => null;
+  SourceInformation? buildNew(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the throw in [node].
-  SourceInformation? buildThrow(ir.Node node) => null;
+  SourceInformation? buildThrow(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the assert in [node].
-  SourceInformation? buildAssert(ir.Node node) => null;
+  SourceInformation? buildAssert(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the assignment in [node].
-  SourceInformation? buildAssignment(ir.Node node) => null;
+  SourceInformation? buildAssignment(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the variable declaration inserted as
   /// first statement of a function.
   SourceInformation? buildVariableDeclaration() => null;
 
   /// Generate [SourceInformation] for the await [node].
-  SourceInformation? buildAwait(ir.Node node) => null;
+  SourceInformation? buildAwait(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the yield or yield* [node].
-  SourceInformation? buildYield(ir.Node node) => null;
+  SourceInformation? buildYield(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for async/await boiler plate code.
   SourceInformation? buildAsyncBody() => null;
@@ -202,16 +209,16 @@
   SourceInformation? buildStringInterpolation(ir.Node node) => null;
 
   /// Generate [SourceInformation] for the for-in `iterator` access in [node].
-  SourceInformation? buildForInIterator(ir.Node node) => null;
+  SourceInformation? buildForInIterator(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the for-in `moveNext` call in [node].
-  SourceInformation? buildForInMoveNext(ir.Node node) => null;
+  SourceInformation? buildForInMoveNext(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the for-in `current` access in [node].
-  SourceInformation? buildForInCurrent(ir.Node node) => null;
+  SourceInformation? buildForInCurrent(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the for-in variable assignment in [node].
-  SourceInformation? buildForInSet(ir.Node node) => null;
+  SourceInformation? buildForInSet(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the operator `[]` access in [node].
   SourceInformation? buildIndex(ir.Node node) => null;
@@ -220,34 +227,34 @@
   SourceInformation? buildIndexSet(ir.Node node) => null;
 
   /// Generate [SourceInformation] for the binary operation in [node].
-  SourceInformation? buildBinary(ir.Node node) => null;
+  SourceInformation? buildBinary(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the unary operation in [node].
-  SourceInformation? buildUnary(ir.Node node) => null;
+  SourceInformation? buildUnary(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the try statement in [node].
-  SourceInformation? buildTry(ir.Node node) => null;
+  SourceInformation? buildTry(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the unary operator in [node].
-  SourceInformation? buildCatch(ir.Node node) => null;
+  SourceInformation? buildCatch(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the is-test in [node].
-  SourceInformation? buildIs(ir.Node node) => null;
+  SourceInformation? buildIs(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the as-cast in [node].
-  SourceInformation? buildAs(ir.Node node) => null;
+  SourceInformation? buildAs(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the switch statement [node].
-  SourceInformation? buildSwitch(ir.Node node) => null;
+  SourceInformation? buildSwitch(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the switch case in [node].
   SourceInformation? buildSwitchCase(ir.Node node) => null;
 
   /// Generate [SourceInformation] for the list literal in [node].
-  SourceInformation? buildListLiteral(ir.Node node) => null;
+  SourceInformation? buildListLiteral(ir.TreeNode node) => null;
 
   /// Generate [SourceInformation] for the break/continue in [node].
-  SourceInformation? buildGoto(ir.Node node) => null;
+  SourceInformation? buildGoto(ir.TreeNode node) => null;
 }
 
 /// A location in a source file.
diff --git a/pkg/compiler/lib/src/js_model/js_strategy.dart b/pkg/compiler/lib/src/js_model/js_strategy.dart
index c5965a0..5ce23bd 100644
--- a/pkg/compiler/lib/src/js_model/js_strategy.dart
+++ b/pkg/compiler/lib/src/js_model/js_strategy.dart
@@ -102,7 +102,7 @@
     if (!generateSourceMap) {
       sourceInformationStrategy = const JavaScriptSourceInformationStrategy();
     } else {
-      sourceInformationStrategy = KernelSourceInformationStrategy(this);
+      sourceInformationStrategy = KernelSourceInformationStrategy();
     }
     _emitterTask = CodeEmitterTask(_compiler, generateSourceMap);
     _functionCompiler = SsaFunctionCompiler(
@@ -138,13 +138,6 @@
         enableMinification: _compiler.options.enableMinification);
   }
 
-  @deprecated
-  JsToElementMap get elementMap {
-    assert(_elementMap != null,
-        "JsBackendStrategy.elementMap has not been created yet.");
-    return _elementMap;
-  }
-
   /// Codegen support for generating table of interceptors and
   /// constructors for custom elements.
   CustomElementsCodegenAnalysis get customElementsCodegenAnalysis {
@@ -198,6 +191,7 @@
   /// This is used to support serialization after type inference.
   void registerJClosedWorld(covariant JsClosedWorld closedWorld) {
     _elementMap = closedWorld.elementMap;
+    sourceInformationStrategy.onElementMapAvailable(_elementMap);
   }
 
   /// Called when the compiler starts running the codegen.
@@ -388,8 +382,7 @@
         _compiler.reporter,
         _compiler.dumpInfoTask,
         _ssaMetrics,
-        // ignore:deprecated_member_use_from_same_package
-        elementMap,
+        _elementMap /*!*/,
         sourceInformationStrategy);
   }
 
diff --git a/pkg/compiler/test/sourcemaps/helpers/sourcemap_helper.dart b/pkg/compiler/test/sourcemaps/helpers/sourcemap_helper.dart
index d13cd71..d638c16 100644
--- a/pkg/compiler/test/sourcemaps/helpers/sourcemap_helper.dart
+++ b/pkg/compiler/test/sourcemaps/helpers/sourcemap_helper.dart
@@ -19,6 +19,7 @@
 import 'package:compiler/src/js/js.dart' as js;
 import 'package:compiler/src/js/js_debug.dart';
 import 'package:compiler/src/js/js_source_mapping.dart';
+import 'package:compiler/src/js_model/element_map.dart';
 import 'package:compiler/src/js_model/js_strategy.dart';
 import 'package:compiler/src/source_file_provider.dart';
 import '../../helpers/memory_compiler.dart';
@@ -221,6 +222,11 @@
   RecordingSourceInformationStrategy(this.strategy);
 
   @override
+  void onElementMapAvailable(JsToElementMap elementMap) {
+    strategy.onElementMapAvailable(elementMap);
+  }
+
+  @override
   SourceInformationBuilder createBuilderForContext(MemberEntity member) {
     return strategy.createBuilderForContext(member);
   }
diff --git a/pkg/dartdev/lib/src/commands/compile.dart b/pkg/dartdev/lib/src/commands/compile.dart
index d27a4ad..e22e4db 100644
--- a/pkg/dartdev/lib/src/commands/compile.dart
+++ b/pkg/dartdev/lib/src/commands/compile.dart
@@ -70,14 +70,16 @@
     if (!Sdk.checkArtifactExists(librariesPath)) return 255;
 
     VmInteropHandler.run(
-        sdk.dart2jsSnapshot,
-        [
-          '--libraries-spec=$librariesPath',
-          '--cfe-invocation-modes=compile',
-          '--invoker=dart_cli',
-          ...argResults!.arguments,
-        ],
-        packageConfigOverride: null);
+      sdk.dart2jsSnapshot,
+      [
+        '--libraries-spec=$librariesPath',
+        '--cfe-invocation-modes=compile',
+        '--invoker=dart_cli',
+        ...argResults!.arguments,
+      ],
+      packageConfigOverride: null,
+      forceNoSoundNullSafety: true,
+    );
 
     return 0;
   }
@@ -125,6 +127,9 @@
         abbr: defineOption.abbr,
         valueHelp: defineOption.valueHelp,
       )
+      ..addFlag('sound-null-safety',
+          help: 'Respect the nullability of types at runtime.',
+          defaultsTo: null)
       ..addExperimentalFlags(verbose: verbose);
   }
 
@@ -181,6 +186,11 @@
     buildArgs.add('--snapshot-kind=$formatName');
     buildArgs.add('--snapshot=${path.canonicalize(outputFile)}');
 
+    final bool? soundNullSafety = args['sound-null-safety'];
+    if (soundNullSafety != null) {
+      buildArgs.add('--${soundNullSafety ? '' : 'no-'}sound-null-safety');
+    }
+
     final String? packages = args[packagesOption.flag];
     if (packages != null) {
       buildArgs.add('--packages=$packages');
diff --git a/pkg/dartdev/lib/src/vm_interop_handler.dart b/pkg/dartdev/lib/src/vm_interop_handler.dart
index 0913a93..388d1bd 100644
--- a/pkg/dartdev/lib/src/vm_interop_handler.dart
+++ b/pkg/dartdev/lib/src/vm_interop_handler.dart
@@ -13,10 +13,14 @@
   /// Notifies the VM to run [script] with [args] upon DartDev exit.
   ///
   /// If [packageConfigOverride] is given, that is where the packageConfig is found.
+  ///
+  /// If [forceNoSoundNullSafety] is given and set to true, the spawned isolate will run
+  /// with `--no-sound-null-safety` enabled.
   static void run(
     String script,
     List<String> args, {
     String? packageConfigOverride,
+    bool forceNoSoundNullSafety = false,
   }) {
     final port = _port;
     if (port == null) return;
@@ -24,6 +28,7 @@
       _kResultRun,
       script,
       packageConfigOverride,
+      forceNoSoundNullSafety,
       // Copy the list so it doesn't get GC'd underneath us.
       args.toList()
     ];
diff --git a/pkg/dartdev/test/commands/compile_test.dart b/pkg/dartdev/test/commands/compile_test.dart
index 11deb0e..dab7120 100644
--- a/pkg/dartdev/test/commands/compile_test.dart
+++ b/pkg/dartdev/test/commands/compile_test.dart
@@ -962,6 +962,56 @@
         reason: 'File not found: $outFile');
   });
 
+  test('Compile kernel with --sound-null-safety', () async {
+    final p = project(mainSrc: '''void main() {
+      print((<int?>[] is List<int>) ? 'oh no' : 'sound');
+    }''');
+    final inFile = path.canonicalize(path.join(p.dirPath, p.relativeFilePath));
+    final outFile = path.canonicalize(path.join(p.dirPath, 'mydill'));
+
+    var result = await p.run(
+      [
+        'compile',
+        'kernel',
+        '--sound-null-safety',
+        '-o',
+        outFile,
+        inFile,
+      ],
+    );
+
+    expect(result.stderr, isEmpty);
+    expect(result.stdout, contains(soundNullSafetyMessage));
+    expect(result.exitCode, 0);
+    expect(File(outFile).existsSync(), true,
+        reason: 'File not found: $outFile');
+  });
+
+  test('Compile kernel with --no-sound-null-safety', () async {
+    final p = project(mainSrc: '''void main() {
+      print((<int?>[] is List<int>) ? 'unsound' : 'oh no');
+    }''');
+    final inFile = path.canonicalize(path.join(p.dirPath, p.relativeFilePath));
+    final outFile = path.canonicalize(path.join(p.dirPath, 'mydill'));
+
+    var result = await p.run(
+      [
+        'compile',
+        'kernel',
+        '--no-sound-null-safety',
+        '-o',
+        outFile,
+        inFile,
+      ],
+    );
+
+    expect(result.stderr, isEmpty);
+    expect(result.stdout, isNot(contains(soundNullSafetyMessage)));
+    expect(result.exitCode, 0);
+    expect(File(outFile).existsSync(), true,
+        reason: 'File not found: $outFile');
+  });
+
   test('Compile kernel without info', () async {
     final p = project(mainSrc: '''void main() {}''');
     final inFile = path.canonicalize(path.join(p.dirPath, p.relativeFilePath));
@@ -1085,6 +1135,56 @@
         reason: 'File not found: $outFile');
   });
 
+  test('Compile JIT snapshot with --sound-null-safety', () async {
+    final p = project(mainSrc: '''void main() {
+      print((<int?>[] is List<int>) ? 'oh no' : 'sound');
+    }''');
+    final inFile = path.canonicalize(path.join(p.dirPath, p.relativeFilePath));
+    final outFile = path.canonicalize(path.join(p.dirPath, 'myjit'));
+
+    var result = await p.run(
+      [
+        'compile',
+        'jit-snapshot',
+        '--sound-null-safety',
+        '-o',
+        outFile,
+        inFile,
+      ],
+    );
+
+    expect(result.stderr, isEmpty);
+    expect(result.stdout, contains(soundNullSafetyMessage));
+    expect(result.exitCode, 0);
+    expect(File(outFile).existsSync(), true,
+        reason: 'File not found: $outFile');
+  });
+
+  test('Compile JIT snapshot with --no-sound-null-safety', () async {
+    final p = project(mainSrc: '''void main() {
+      print((<int?>[] is List<int>) ? 'unsound' : 'oh no');
+    }''');
+    final inFile = path.canonicalize(path.join(p.dirPath, p.relativeFilePath));
+    final outFile = path.canonicalize(path.join(p.dirPath, 'mydill'));
+
+    var result = await p.run(
+      [
+        'compile',
+        'jit-snapshot',
+        '--no-sound-null-safety',
+        '-o',
+        outFile,
+        inFile,
+      ],
+    );
+
+    expect(result.stderr, isEmpty);
+    expect(result.stdout, isNot(contains(soundNullSafetyMessage)));
+    expect(result.exitCode, 0);
+    expect(File(outFile).existsSync(), true,
+        reason: 'File not found: $outFile');
+  });
+
   test('Compile JIT snapshot with training args', () async {
     final p =
         project(mainSrc: '''void main(List<String> args) => print(args);''');
diff --git a/pkg/nnbd_migration/lib/src/edge_builder.dart b/pkg/nnbd_migration/lib/src/edge_builder.dart
index 3c53235..415b4a3 100644
--- a/pkg/nnbd_migration/lib/src/edge_builder.dart
+++ b/pkg/nnbd_migration/lib/src/edge_builder.dart
@@ -648,8 +648,8 @@
   @override
   DecoratedType? visitCatchClause(CatchClause node) {
     _flowAnalysis!.tryCatchStatement_catchBegin(
-        node.exceptionParameter2?.declaredElement,
-        node.stackTraceParameter2?.declaredElement);
+        node.exceptionParameter?.declaredElement,
+        node.stackTraceParameter?.declaredElement);
     _dispatch(node.exceptionType);
     // The catch clause may not execute, so create a new scope for
     // post-dominators.
diff --git a/pkg/nnbd_migration/lib/src/node_builder.dart b/pkg/nnbd_migration/lib/src/node_builder.dart
index 48550f6..376706c 100644
--- a/pkg/nnbd_migration/lib/src/node_builder.dart
+++ b/pkg/nnbd_migration/lib/src/node_builder.dart
@@ -90,37 +90,37 @@
 
   @override
   DecoratedType? visitCatchClause(CatchClause node) {
-    var exceptionElement = node.exceptionParameter2?.declaredElement;
+    var exceptionElement = node.exceptionParameter?.declaredElement;
     var target = exceptionElement == null
         ? NullabilityNodeTarget.text('exception type')
         : NullabilityNodeTarget.element(exceptionElement);
     DecoratedType? exceptionType = _pushNullabilityNodeTarget(
         target, () => node.exceptionType?.accept(this));
-    if (node.exceptionParameter2 != null) {
+    if (node.exceptionParameter != null) {
       // If there is no `on Type` part of the catch clause, the type is dynamic.
       if (exceptionType == null) {
         exceptionType = DecoratedType.forImplicitType(_typeProvider,
             _typeProvider.dynamicType, _graph, target.withCodeRef(node));
         instrumentation?.implicitType(
-            source, node.exceptionParameter2, exceptionType);
+            source, node.exceptionParameter, exceptionType);
       }
       _variables!.recordDecoratedElementType(
-          node.exceptionParameter2?.declaredElement, exceptionType);
+          node.exceptionParameter?.declaredElement, exceptionType);
     }
-    if (node.stackTraceParameter2 != null) {
+    if (node.stackTraceParameter != null) {
       // The type of stack traces is always StackTrace (non-nullable).
       var target = NullabilityNodeTarget.text('stack trace').withCodeRef(node);
       var nullabilityNode = NullabilityNode.forInferredType(target);
       _graph.makeNonNullableUnion(nullabilityNode,
-          StackTraceTypeOrigin(source, node.stackTraceParameter2));
+          StackTraceTypeOrigin(source, node.stackTraceParameter));
       var stackTraceType =
           DecoratedType(_typeProvider.stackTraceType, nullabilityNode);
       _variables!.recordDecoratedElementType(
-          node.stackTraceParameter2?.declaredElement, stackTraceType);
+          node.stackTraceParameter?.declaredElement, stackTraceType);
       instrumentation?.implicitType(
-          source, node.stackTraceParameter2, stackTraceType);
+          source, node.stackTraceParameter, stackTraceType);
     }
-    node.stackTraceParameter2?.accept(this);
+    node.stackTraceParameter?.accept(this);
     node.body.accept(this);
     return null;
   }
diff --git a/runtime/bin/dartdev_isolate.cc b/runtime/bin/dartdev_isolate.cc
index d33b0de..1406ef3 100644
--- a/runtime/bin/dartdev_isolate.cc
+++ b/runtime/bin/dartdev_isolate.cc
@@ -42,6 +42,7 @@
     DartDevIsolate::DartDev_Result_Unknown;
 char** DartDevIsolate::DartDevRunner::script_ = nullptr;
 char** DartDevIsolate::DartDevRunner::package_config_override_ = nullptr;
+bool* DartDevIsolate::DartDevRunner::force_no_sound_null_safety_ = nullptr;
 std::unique_ptr<char*[], void (*)(char*[])>
     DartDevIsolate::DartDevRunner::argv_ =
         std::unique_ptr<char*[], void (*)(char**)>(nullptr, [](char**) {});
@@ -93,11 +94,13 @@
     Dart_IsolateGroupCreateCallback create_isolate,
     char** packages_file,
     char** script,
+    bool* force_no_sound_null_safety,
     CommandLineOptions* dart_options) {
   create_isolate_ = create_isolate;
   dart_options_ = dart_options;
   package_config_override_ = packages_file;
   script_ = script;
+  force_no_sound_null_safety_ = force_no_sound_null_safety;
 
   // We've encountered an error during preliminary argument parsing so we'll
   // output the standard help message and exit with an error code.
@@ -141,6 +144,10 @@
       ASSERT(item2->type == Dart_CObject_kString ||
              item2->type == Dart_CObject_kNull);
 
+      auto item3 = GetArrayItem(message, 3);
+
+      ASSERT(item3->type == Dart_CObject_kBool);
+
       if (*script_ != nullptr) {
         free(*script_);
       }
@@ -154,8 +161,10 @@
         *package_config_override_ = Utils::StrDup(item2->value.as_string);
       }
 
-      ASSERT(GetArrayItem(message, 3)->type == Dart_CObject_kArray);
-      Dart_CObject* args = GetArrayItem(message, 3);
+      *force_no_sound_null_safety_ = item3->value.as_bool;
+
+      ASSERT(GetArrayItem(message, 4)->type == Dart_CObject_kArray);
+      Dart_CObject* args = GetArrayItem(message, 4);
       argc_ = args->value.as_array.length;
       Dart_CObject** dart_args = args->value.as_array.values;
 
@@ -282,8 +291,10 @@
     Dart_IsolateGroupCreateCallback create_isolate,
     char** packages_file,
     char** script,
+    bool* force_no_sound_null_safety,
     CommandLineOptions* dart_options) {
-  runner_.Run(create_isolate, packages_file, script, dart_options);
+  runner_.Run(create_isolate, packages_file, script, force_no_sound_null_safety,
+              dart_options);
   return runner_.result();
 }
 
diff --git a/runtime/bin/dartdev_isolate.h b/runtime/bin/dartdev_isolate.h
index a6382f6..0d7f74a 100644
--- a/runtime/bin/dartdev_isolate.h
+++ b/runtime/bin/dartdev_isolate.h
@@ -61,6 +61,7 @@
       Dart_IsolateGroupCreateCallback create_isolate,
       char** packages_file,
       char** script,
+      bool* sound_null_safety,
       CommandLineOptions* dart_options);
 
  protected:
@@ -71,6 +72,7 @@
     void Run(Dart_IsolateGroupCreateCallback create_isolate,
              char** package_config_override_,
              char** script,
+             bool* force_no_sound_null_safety,
              CommandLineOptions* dart_options);
 
     DartDev_Result result() const { return result_; }
@@ -84,6 +86,7 @@
     static DartDev_Result result_;
     static char** script_;
     static char** package_config_override_;
+    static bool* force_no_sound_null_safety_;
     static std::unique_ptr<char*[], void (*)(char**)> argv_;
     static intptr_t argc_;
 
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index 0734e31..327a2d1 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -677,7 +677,8 @@
     Dart_IsolateFlags* flags,
     void* callback_data,
     char** error,
-    int* exit_code) {
+    int* exit_code,
+    bool force_no_sound_null_safety = false) {
   int64_t start = Dart_TimelineGetMicros();
   ASSERT(script_uri != NULL);
   uint8_t* kernel_buffer = NULL;
@@ -753,11 +754,15 @@
   }
   PathSanitizer script_uri_sanitizer(script_uri);
   PathSanitizer packages_config_sanitizer(packages_config);
-  flags->null_safety = Dart_DetectNullSafety(
-      script_uri_sanitizer.sanitized_uri(),
-      packages_config_sanitizer.sanitized_uri(),
-      DartUtils::original_working_directory, isolate_snapshot_data,
-      isolate_snapshot_instructions, kernel_buffer, kernel_buffer_size);
+  if (force_no_sound_null_safety) {
+    flags->null_safety = false;
+  } else {
+    flags->null_safety = Dart_DetectNullSafety(
+        script_uri_sanitizer.sanitized_uri(),
+        packages_config_sanitizer.sanitized_uri(),
+        DartUtils::original_working_directory, isolate_snapshot_data,
+        isolate_snapshot_instructions, kernel_buffer, kernel_buffer_size);
+  }
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
 
   auto isolate_group_data = new IsolateGroupData(
@@ -977,6 +982,7 @@
 
 void RunMainIsolate(const char* script_name,
                     const char* package_config_override,
+                    bool force_no_sound_null_safety,
                     CommandLineOptions* dart_options) {
   if (script_name != NULL) {
     const char* base_name = strrchr(script_name, '/');
@@ -1015,7 +1021,8 @@
       /* is_main_isolate */ true, script_name, "main",
       Options::packages_file() == nullptr ? package_config_override
                                           : Options::packages_file(),
-      &flags, NULL /* callback_data */, &error, &exit_code);
+      &flags, NULL /* callback_data */, &error, &exit_code,
+      force_no_sound_null_safety);
 
   if (isolate == NULL) {
     Syslog::PrintErr("%s\n", error);
@@ -1357,12 +1364,13 @@
   Dart_SetEmbedderInformationCallback(&EmbedderInformationCallback);
   bool ran_dart_dev = false;
   bool should_run_user_program = true;
+  bool force_no_sound_null_safety = false;
 #if !defined(DART_PRECOMPILED_RUNTIME)
   if (DartDevIsolate::should_run_dart_dev() && !Options::disable_dart_dev() &&
       Options::gen_snapshot_kind() == SnapshotKind::kNone) {
     DartDevIsolate::DartDev_Result dartdev_result = DartDevIsolate::RunDartDev(
         CreateIsolateGroupAndSetup, &package_config_override, &script_name,
-        &dart_options);
+        &force_no_sound_null_safety, &dart_options);
     ASSERT(dartdev_result != DartDevIsolate::DartDev_Result_Unknown);
     ran_dart_dev = true;
     should_run_user_program =
@@ -1392,7 +1400,8 @@
 
       } else {
         // Run the main isolate until we aren't told to restart.
-        RunMainIsolate(script_name, package_config_override, &dart_options);
+        RunMainIsolate(script_name, package_config_override,
+                       force_no_sound_null_safety, &dart_options);
       }
     }
   }
diff --git a/tests/language/library/unnamed_library_test.dart b/tests/language/library/unnamed_library_test.dart
new file mode 100644
index 0000000..71d2fce
--- /dev/null
+++ b/tests/language/library/unnamed_library_test.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code as governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// SharedOptions=--enable-experiment=unnamed-libraries
+
+/// Doc comment.
+@deprecated
+library;
+
+main() {}
diff --git a/tests/language_2/super/bound_closure_test.dart b/tests/language_2/super/bound_closure_test.dart
index 7f99e8d..439a7e8 100644
--- a/tests/language_2/super/bound_closure_test.dart
+++ b/tests/language_2/super/bound_closure_test.dart
@@ -75,7 +75,7 @@
   fooIntercept28() => confuse(super.lastWhere)(3, orElse: 77);
 
   // Warning: overrides should not change default parameter values.
-  bar([var optional]) => -1; //       //# 01: static type warning
+  bar([var optional]) => -1; //       //# 01: ok
   bar2({namedOptional}) => -1; //   //# 01: continued
   bar3(x, [var optional]) => -1; //   //# 01: continued
   bar4(x, {namedOptional}) => -1; //# 01: continued
diff --git a/tools/VERSION b/tools/VERSION
index 2c2d141..3799845 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 19
 PATCH 0
-PRERELEASE 274
+PRERELEASE 275
 PRERELEASE_PATCH 0