Version 2.13.0-10.0.dev

Merge commit '8a88268f20295b0a473eb6cced0c7817f411e7a2' into 'dev'
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index cab78ed..0e1f047 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -83,8 +83,8 @@
   /// Initialize a newly created annotated node. Either or both of the [comment]
   /// and [metadata] can be `null` if the node does not have the corresponding
   /// attribute.
-  AnnotatedNodeImpl(CommentImpl? comment, List<Annotation>? metadata) {
-    _comment = _becomeParentOf(comment);
+  AnnotatedNodeImpl(this._comment, List<Annotation>? metadata) {
+    _becomeParentOf(_comment);
     _metadata._initialize(this, metadata);
   }
 
@@ -178,7 +178,7 @@
 
   /// The name of the class defining the constructor that is being invoked or
   /// the name of the field that is being referenced.
-  late IdentifierImpl _name;
+  IdentifierImpl _name;
 
   /// The type arguments to the constructor being invoked, or `null` if (a) this
   /// annotation is not the invocation of a constructor or (b) this annotation
@@ -217,17 +217,12 @@
   ///
   /// Note that type arguments are only valid if [Feature.generic_metadata] is
   /// enabled.
-  AnnotationImpl(
-      this.atSign,
-      IdentifierImpl name,
-      TypeArgumentListImpl? typeArguments,
-      this.period,
-      SimpleIdentifierImpl? constructorName,
-      ArgumentListImpl? arguments) {
-    _name = _becomeParentOf(name)!;
-    _typeArguments = _becomeParentOf(typeArguments);
-    _constructorName = _becomeParentOf(constructorName);
-    _arguments = _becomeParentOf(arguments);
+  AnnotationImpl(this.atSign, this._name, this._typeArguments, this.period,
+      this._constructorName, this._arguments) {
+    _becomeParentOf(_name);
+    _becomeParentOf(_typeArguments);
+    _becomeParentOf(_constructorName);
+    _becomeParentOf(_arguments);
   }
 
   @override
@@ -419,20 +414,19 @@
 ///        [Expression] 'as' [TypeName]
 class AsExpressionImpl extends ExpressionImpl implements AsExpression {
   /// The expression used to compute the value being cast.
-  late ExpressionImpl _expression;
+  ExpressionImpl _expression;
 
   /// The 'as' operator.
   @override
   Token asOperator;
 
   /// The type being cast to.
-  late TypeAnnotationImpl _type;
+  TypeAnnotationImpl _type;
 
   /// Initialize a newly created as expression.
-  AsExpressionImpl(
-      ExpressionImpl expression, this.asOperator, TypeAnnotationImpl type) {
-    _expression = _becomeParentOf(expression);
-    _type = _becomeParentOf(type);
+  AsExpressionImpl(this._expression, this.asOperator, this._type) {
+    _becomeParentOf(_expression);
+    _becomeParentOf(_type);
   }
 
   @override
@@ -487,7 +481,7 @@
   Token leftParenthesis;
 
   /// The condition that is being asserted to be `true`.
-  late ExpressionImpl _condition;
+  ExpressionImpl _condition;
 
   @override
   Token? comma;
@@ -500,15 +494,10 @@
   Token rightParenthesis;
 
   /// Initialize a newly created assert initializer.
-  AssertInitializerImpl(
-      this.assertKeyword,
-      this.leftParenthesis,
-      ExpressionImpl condition,
-      this.comma,
-      ExpressionImpl? message,
-      this.rightParenthesis) {
-    _condition = _becomeParentOf(condition);
-    _message = _becomeParentOf(message);
+  AssertInitializerImpl(this.assertKeyword, this.leftParenthesis,
+      this._condition, this.comma, this._message, this.rightParenthesis) {
+    _becomeParentOf(_condition);
+    _becomeParentOf(_message);
   }
 
   @override
@@ -564,7 +553,7 @@
   Token leftParenthesis;
 
   /// The condition that is being asserted to be `true`.
-  late ExpressionImpl _condition;
+  ExpressionImpl _condition;
 
   @override
   Token? comma;
@@ -580,16 +569,10 @@
   Token semicolon;
 
   /// Initialize a newly created assert statement.
-  AssertStatementImpl(
-      this.assertKeyword,
-      this.leftParenthesis,
-      ExpressionImpl condition,
-      this.comma,
-      ExpressionImpl? message,
-      this.rightParenthesis,
-      this.semicolon) {
-    _condition = _becomeParentOf(condition);
-    _message = _becomeParentOf(message);
+  AssertStatementImpl(this.assertKeyword, this.leftParenthesis, this._condition,
+      this.comma, this._message, this.rightParenthesis, this.semicolon) {
+    _becomeParentOf(_condition);
+    _becomeParentOf(_message);
   }
 
   @override
@@ -642,14 +625,14 @@
     with NullShortableExpressionImpl, CompoundAssignmentExpressionImpl
     implements AssignmentExpression {
   /// The expression used to compute the left hand side.
-  late ExpressionImpl _leftHandSide;
+  ExpressionImpl _leftHandSide;
 
   /// The assignment operator being applied.
   @override
   Token operator;
 
   /// The expression used to compute the right hand side.
-  late ExpressionImpl _rightHandSide;
+  ExpressionImpl _rightHandSide;
 
   /// The element associated with the operator based on the static type of the
   /// left-hand-side, or `null` if the AST structure has not been resolved, if
@@ -659,10 +642,10 @@
   MethodElement? staticElement;
 
   /// Initialize a newly created assignment expression.
-  AssignmentExpressionImpl(ExpressionImpl leftHandSide, this.operator,
-      ExpressionImpl rightHandSide) {
-    _leftHandSide = _becomeParentOf(leftHandSide);
-    _rightHandSide = _becomeParentOf(rightHandSide);
+  AssignmentExpressionImpl(
+      this._leftHandSide, this.operator, this._rightHandSide) {
+    _becomeParentOf(_leftHandSide);
+    _becomeParentOf(_rightHandSide);
   }
 
   @override
@@ -851,9 +834,7 @@
   /// Make this node the parent of the given [child] node. Return the child
   /// node.
   T _becomeParentOf<T extends AstNodeImpl?>(T child) {
-    if (child != null) {
-      child._parent = this;
-    }
+    child?._parent = this;
     return child;
   }
 }
@@ -868,11 +849,11 @@
   Token awaitKeyword;
 
   /// The expression whose value is being waited on.
-  late ExpressionImpl _expression;
+  ExpressionImpl _expression;
 
   /// Initialize a newly created await expression.
-  AwaitExpressionImpl(this.awaitKeyword, ExpressionImpl expression) {
-    _expression = _becomeParentOf(expression);
+  AwaitExpressionImpl(this.awaitKeyword, this._expression) {
+    _becomeParentOf(_expression);
   }
 
   @override
@@ -913,14 +894,14 @@
 ///        [Expression] [Token] [Expression]
 class BinaryExpressionImpl extends ExpressionImpl implements BinaryExpression {
   /// The expression used to compute the left operand.
-  late ExpressionImpl _leftOperand;
+  ExpressionImpl _leftOperand;
 
   /// The binary operator being applied.
   @override
   Token operator;
 
   /// The expression used to compute the right operand.
-  late ExpressionImpl _rightOperand;
+  ExpressionImpl _rightOperand;
 
   /// The element associated with the operator based on the static type of the
   /// left operand, or `null` if the AST structure has not been resolved, if the
@@ -932,10 +913,9 @@
   FunctionType? staticInvokeType;
 
   /// Initialize a newly created binary expression.
-  BinaryExpressionImpl(
-      ExpressionImpl leftOperand, this.operator, ExpressionImpl rightOperand) {
-    _leftOperand = _becomeParentOf(leftOperand);
-    _rightOperand = _becomeParentOf(rightOperand);
+  BinaryExpressionImpl(this._leftOperand, this.operator, this._rightOperand) {
+    _becomeParentOf(_leftOperand);
+    _becomeParentOf(_rightOperand);
   }
 
   @override
@@ -994,14 +974,14 @@
   Token? star;
 
   /// The block representing the body of the function.
-  late BlockImpl _block;
+  BlockImpl _block;
 
   /// Initialize a newly created function body consisting of a block of
   /// statements. The [keyword] can be `null` if there is no keyword specified
   /// for the block. The [star] can be `null` if there is no star following the
   /// keyword (and must be `null` if there is no keyword).
-  BlockFunctionBodyImpl(this.keyword, this.star, BlockImpl block) {
-    _block = _becomeParentOf(block);
+  BlockFunctionBodyImpl(this.keyword, this.star, this._block) {
+    _becomeParentOf(_block);
   }
 
   @override
@@ -1155,9 +1135,8 @@
 
   /// Initialize a newly created break statement. The [label] can be `null` if
   /// there is no label associated with the statement.
-  BreakStatementImpl(
-      this.breakKeyword, SimpleIdentifierImpl? label, this.semicolon) {
-    _label = _becomeParentOf(label);
+  BreakStatementImpl(this.breakKeyword, this._label, this.semicolon) {
+    _becomeParentOf(_label);
   }
 
   @override
@@ -1205,16 +1184,15 @@
     with NullShortableExpressionImpl
     implements CascadeExpression {
   /// The target of the cascade sections.
-  late ExpressionImpl _target;
+  ExpressionImpl _target;
 
   /// The cascade sections sharing the common target.
   final NodeListImpl<Expression> _cascadeSections = NodeListImpl._();
 
   /// Initialize a newly created cascade expression. The list of
   /// [cascadeSections] must contain at least one element.
-  CascadeExpressionImpl(
-      ExpressionImpl target, List<Expression> cascadeSections) {
-    _target = _becomeParentOf(target);
+  CascadeExpressionImpl(this._target, List<Expression> cascadeSections) {
+    _becomeParentOf(_target);
     _cascadeSections._initialize(this, cascadeSections);
   }
 
@@ -1311,7 +1289,7 @@
   Token? rightParenthesis;
 
   /// The body of the catch block.
-  late BlockImpl _body;
+  BlockImpl _body;
 
   /// Initialize a newly created catch clause. The [onKeyword] and
   /// [exceptionType] can be `null` if the clause will catch all exceptions. The
@@ -1319,19 +1297,19 @@
   /// parameter is not defined.
   CatchClauseImpl(
       this.onKeyword,
-      TypeAnnotationImpl? exceptionType,
+      this._exceptionType,
       this.catchKeyword,
       this.leftParenthesis,
-      SimpleIdentifierImpl? exceptionParameter,
+      this._exceptionParameter,
       this.comma,
-      SimpleIdentifierImpl? stackTraceParameter,
+      this._stackTraceParameter,
       this.rightParenthesis,
-      BlockImpl body)
+      this._body)
       : assert(onKeyword != null || catchKeyword != null) {
-    _exceptionType = _becomeParentOf(exceptionType);
-    _exceptionParameter = _becomeParentOf(exceptionParameter);
-    _stackTraceParameter = _becomeParentOf(stackTraceParameter);
-    _body = _becomeParentOf(body);
+    _becomeParentOf(_exceptionType);
+    _becomeParentOf(_exceptionParameter);
+    _becomeParentOf(_stackTraceParameter);
+    _becomeParentOf(_body);
   }
 
   @override
@@ -1471,16 +1449,16 @@
       this.classKeyword,
       SimpleIdentifierImpl name,
       TypeParameterListImpl? typeParameters,
-      ExtendsClauseImpl? extendsClause,
-      WithClauseImpl? withClause,
+      this._extendsClause,
+      this._withClause,
       ImplementsClauseImpl? implementsClause,
       Token leftBracket,
       List<ClassMember> members,
       Token rightBracket)
       : super(comment, metadata, name, typeParameters, implementsClause,
             leftBracket, members, rightBracket) {
-    _extendsClause = _becomeParentOf(extendsClause);
-    _withClause = _becomeParentOf(withClause);
+    _becomeParentOf(_extendsClause);
+    _becomeParentOf(_withClause);
   }
 
   @override
@@ -1604,14 +1582,14 @@
       CommentImpl? comment,
       List<Annotation>? metadata,
       SimpleIdentifierImpl name,
-      TypeParameterListImpl? typeParameters,
-      ImplementsClauseImpl? implementsClause,
+      this._typeParameters,
+      this._implementsClause,
       this.leftBracket,
       List<ClassMember> members,
       this.rightBracket)
       : super(comment, metadata, name) {
-    _typeParameters = _becomeParentOf(typeParameters);
-    _implementsClause = _becomeParentOf(implementsClause);
+    _becomeParentOf(_typeParameters);
+    _becomeParentOf(_implementsClause);
     _members._initialize(this, members);
   }
 
@@ -1698,10 +1676,10 @@
   Token? abstractKeyword;
 
   /// The name of the superclass of the class being declared.
-  late TypeNameImpl _superclass;
+  TypeNameImpl _superclass;
 
   /// The with clause for this class.
-  late WithClauseImpl _withClause;
+  WithClauseImpl _withClause;
 
   /// The implements clause for this class, or `null` if there is no implements
   /// clause.
@@ -1718,18 +1696,18 @@
       List<Annotation>? metadata,
       Token keyword,
       SimpleIdentifierImpl name,
-      TypeParameterListImpl? typeParameters,
+      this._typeParameters,
       this.equals,
       this.abstractKeyword,
-      TypeNameImpl superclass,
-      WithClauseImpl withClause,
-      ImplementsClauseImpl? implementsClause,
+      this._superclass,
+      this._withClause,
+      this._implementsClause,
       Token semicolon)
       : super(comment, metadata, keyword, name, semicolon) {
-    _typeParameters = _becomeParentOf(typeParameters);
-    _superclass = _becomeParentOf(superclass);
-    _withClause = _becomeParentOf(withClause);
-    _implementsClause = _becomeParentOf(implementsClause);
+    _becomeParentOf(_typeParameters);
+    _becomeParentOf(_superclass);
+    _becomeParentOf(_withClause);
+    _becomeParentOf(_implementsClause);
   }
 
   @override
@@ -1923,12 +1901,12 @@
   Token? newKeyword;
 
   /// The identifier being referenced.
-  late IdentifierImpl _identifier;
+  IdentifierImpl _identifier;
 
   /// Initialize a newly created reference to a Dart element. The [newKeyword]
   /// can be `null` if the reference is not to a constructor.
-  CommentReferenceImpl(this.newKeyword, IdentifierImpl identifier) {
-    _identifier = _becomeParentOf(identifier);
+  CommentReferenceImpl(this.newKeyword, this._identifier) {
+    _becomeParentOf(_identifier);
   }
 
   @override
@@ -2048,12 +2026,12 @@
   /// be `null` if there are no declarations in the compilation unit.
   CompilationUnitImpl(
       this.beginToken,
-      ScriptTagImpl? scriptTag,
+      this._scriptTag,
       List<Directive>? directives,
       List<CompilationUnitMember>? declarations,
       this.endToken,
       this.featureSet) {
-    _scriptTag = _becomeParentOf(scriptTag);
+    _becomeParentOf(_scriptTag);
     _directives._initialize(this, directives);
     _declarations._initialize(this, declarations);
   }
@@ -2189,32 +2167,28 @@
 class ConditionalExpressionImpl extends ExpressionImpl
     implements ConditionalExpression {
   /// The condition used to determine which of the expressions is executed next.
-  late ExpressionImpl _condition;
+  ExpressionImpl _condition;
 
   /// The token used to separate the condition from the then expression.
   @override
   Token question;
 
   /// The expression that is executed if the condition evaluates to `true`.
-  late ExpressionImpl _thenExpression;
+  ExpressionImpl _thenExpression;
 
   /// The token used to separate the then expression from the else expression.
   @override
   Token colon;
 
   /// The expression that is executed if the condition evaluates to `false`.
-  late ExpressionImpl _elseExpression;
+  ExpressionImpl _elseExpression;
 
   /// Initialize a newly created conditional expression.
-  ConditionalExpressionImpl(
-      ExpressionImpl condition,
-      this.question,
-      ExpressionImpl thenExpression,
-      this.colon,
-      ExpressionImpl elseExpression) {
-    _condition = _becomeParentOf(condition);
-    _thenExpression = _becomeParentOf(thenExpression);
-    _elseExpression = _becomeParentOf(elseExpression);
+  ConditionalExpressionImpl(this._condition, this.question,
+      this._thenExpression, this.colon, this._elseExpression) {
+    _becomeParentOf(_condition);
+    _becomeParentOf(_thenExpression);
+    _becomeParentOf(_elseExpression);
   }
 
   @override
@@ -2287,7 +2261,7 @@
   @override
   Token leftParenthesis;
 
-  late DottedNameImpl _name;
+  DottedNameImpl _name;
 
   @override
   Token? equalToken;
@@ -2297,22 +2271,16 @@
   @override
   Token rightParenthesis;
 
-  late StringLiteralImpl _uri;
+  StringLiteralImpl _uri;
 
   @override
   Source? uriSource;
 
-  ConfigurationImpl(
-      this.ifKeyword,
-      this.leftParenthesis,
-      DottedNameImpl name,
-      this.equalToken,
-      StringLiteralImpl? value,
-      this.rightParenthesis,
-      StringLiteralImpl libraryUri) {
-    _name = _becomeParentOf(name);
-    _value = _becomeParentOf(value);
-    _uri = _becomeParentOf(libraryUri);
+  ConfigurationImpl(this.ifKeyword, this.leftParenthesis, this._name,
+      this.equalToken, this._value, this.rightParenthesis, this._uri) {
+    _becomeParentOf(_name);
+    _becomeParentOf(_value);
+    _becomeParentOf(_uri);
   }
 
   @override
@@ -2409,7 +2377,7 @@
   /// The type of object being created. This can be different than the type in
   /// which the constructor is being declared if the constructor is the
   /// implementation of a factory constructor.
-  late IdentifierImpl _returnType;
+  IdentifierImpl _returnType;
 
   /// The token for the period before the constructor name, or `null` if the
   /// constructor being declared is unnamed.
@@ -2421,7 +2389,7 @@
   SimpleIdentifierImpl? _name;
 
   /// The parameters associated with the constructor.
-  late FormalParameterListImpl _parameters;
+  FormalParameterListImpl _parameters;
 
   /// The token for the separator (colon or equals) before the initializer list
   /// or redirection, or `null` if there are no initializers.
@@ -2464,21 +2432,21 @@
       this.externalKeyword,
       this.constKeyword,
       this.factoryKeyword,
-      IdentifierImpl returnType,
+      this._returnType,
       this.period,
-      SimpleIdentifierImpl? name,
-      FormalParameterListImpl parameters,
+      this._name,
+      this._parameters,
       this.separator,
       List<ConstructorInitializer>? initializers,
-      ConstructorNameImpl? redirectedConstructor,
-      FunctionBodyImpl? body)
+      this._redirectedConstructor,
+      this._body)
       : super(comment, metadata) {
-    _returnType = _becomeParentOf(returnType);
-    _name = _becomeParentOf(name);
-    _parameters = _becomeParentOf(parameters);
+    _becomeParentOf(_returnType);
+    _becomeParentOf(_name);
+    _becomeParentOf(_parameters);
     _initializers._initialize(this, initializers);
-    _redirectedConstructor = _becomeParentOf(redirectedConstructor);
-    _body = _becomeParentOf(body);
+    _becomeParentOf(_redirectedConstructor);
+    _becomeParentOf(_body);
   }
 
   @override
@@ -2591,22 +2559,22 @@
   Token? period;
 
   /// The name of the field being initialized.
-  late SimpleIdentifierImpl _fieldName;
+  SimpleIdentifierImpl _fieldName;
 
   /// The token for the equal sign between the field name and the expression.
   @override
   Token equals;
 
   /// The expression computing the value to which the field will be initialized.
-  late ExpressionImpl _expression;
+  ExpressionImpl _expression;
 
   /// Initialize a newly created field initializer to initialize the field with
   /// the given name to the value of the given expression. The [thisKeyword] and
   /// [period] can be `null` if the 'this' keyword was not specified.
   ConstructorFieldInitializerImpl(this.thisKeyword, this.period,
-      SimpleIdentifierImpl fieldName, this.equals, ExpressionImpl expression) {
-    _fieldName = _becomeParentOf(fieldName);
-    _expression = _becomeParentOf(expression);
+      this._fieldName, this.equals, this._expression) {
+    _becomeParentOf(_fieldName);
+    _becomeParentOf(_expression);
   }
 
   @override
@@ -2670,7 +2638,7 @@
 ///        type ('.' identifier)?
 class ConstructorNameImpl extends AstNodeImpl implements ConstructorName {
   /// The name of the type defining the constructor.
-  late TypeNameImpl _type;
+  TypeNameImpl _type;
 
   /// The token for the period before the constructor name, or `null` if the
   /// specified constructor is the unnamed constructor.
@@ -2689,10 +2657,9 @@
 
   /// Initialize a newly created constructor name. The [period] and [name] can
   /// be`null` if the constructor being named is the unnamed constructor.
-  ConstructorNameImpl(
-      TypeNameImpl type, this.period, SimpleIdentifierImpl? name) {
-    _type = _becomeParentOf(type);
-    _name = _becomeParentOf(name);
+  ConstructorNameImpl(this._type, this.period, this._name) {
+    _becomeParentOf(_type);
+    _becomeParentOf(_name);
   }
 
   @override
@@ -2763,9 +2730,8 @@
 
   /// Initialize a newly created continue statement. The [label] can be `null`
   /// if there is no label associated with the statement.
-  ContinueStatementImpl(
-      this.continueKeyword, SimpleIdentifierImpl? label, this.semicolon) {
-    _label = _becomeParentOf(label);
+  ContinueStatementImpl(this.continueKeyword, this._label, this.semicolon) {
+    _becomeParentOf(_label);
   }
 
   @override
@@ -2822,17 +2788,17 @@
   TypeAnnotationImpl? _type;
 
   /// The name of the variable being declared.
-  late SimpleIdentifierImpl _identifier;
+  SimpleIdentifierImpl _identifier;
 
   /// Initialize a newly created formal parameter. Either or both of the
   /// [comment] and [metadata] can be `null` if the declaration does not have
   /// the corresponding attribute. The [keyword] can be `null` if a type name is
   /// given. The [type] must be `null` if the keyword is 'var'.
   DeclaredIdentifierImpl(CommentImpl? comment, List<Annotation>? metadata,
-      this.keyword, TypeAnnotationImpl? type, SimpleIdentifierImpl identifier)
+      this.keyword, this._type, this._identifier)
       : super(comment, metadata) {
-    _type = _becomeParentOf(type);
-    _identifier = _becomeParentOf(identifier);
+    _becomeParentOf(_type);
+    _becomeParentOf(_identifier);
   }
 
   @override
@@ -2918,7 +2884,7 @@
 class DefaultFormalParameterImpl extends FormalParameterImpl
     implements DefaultFormalParameter {
   /// The formal parameter with which the default value is associated.
-  late NormalFormalParameterImpl _parameter;
+  NormalFormalParameterImpl _parameter;
 
   /// The kind of this parameter.
   @override
@@ -2935,10 +2901,10 @@
 
   /// Initialize a newly created default formal parameter. The [separator] and
   /// [defaultValue] can be `null` if there is no default value.
-  DefaultFormalParameterImpl(NormalFormalParameterImpl parameter, this.kind,
-      this.separator, ExpressionImpl? defaultValue) {
-    _parameter = _becomeParentOf(parameter);
-    _defaultValue = _becomeParentOf(defaultValue);
+  DefaultFormalParameterImpl(
+      this._parameter, this.kind, this.separator, this._defaultValue) {
+    _becomeParentOf(_parameter);
+    _becomeParentOf(_defaultValue);
   }
 
   @override
@@ -3043,7 +3009,7 @@
   Token doKeyword;
 
   /// The body of the loop.
-  late StatementImpl _body;
+  StatementImpl _body;
 
   /// The token representing the 'while' keyword.
   @override
@@ -3054,7 +3020,7 @@
   Token leftParenthesis;
 
   /// The condition that determines when the loop will terminate.
-  late ExpressionImpl _condition;
+  ExpressionImpl _condition;
 
   /// The right parenthesis.
   @override
@@ -3067,14 +3033,14 @@
   /// Initialize a newly created do loop.
   DoStatementImpl(
       this.doKeyword,
-      StatementImpl body,
+      this._body,
       this.whileKeyword,
       this.leftParenthesis,
-      ExpressionImpl condition,
+      this._condition,
       this.rightParenthesis,
       this.semicolon) {
-    _body = _becomeParentOf(body);
-    _condition = _becomeParentOf(condition);
+    _becomeParentOf(_body);
+    _becomeParentOf(_condition);
   }
 
   @override
@@ -3266,16 +3232,16 @@
     with HasAstLinkedContext
     implements EnumConstantDeclaration {
   /// The name of the constant.
-  late SimpleIdentifierImpl _name;
+  SimpleIdentifierImpl _name;
 
   /// Initialize a newly created enum constant declaration. Either or both of
   /// the [comment] and [metadata] can be `null` if the constant does not have
   /// the corresponding attribute. (Technically, enum constants cannot have
   /// metadata, but we allow it for consistency.)
-  EnumConstantDeclarationImpl(CommentImpl? comment, List<Annotation>? metadata,
-      SimpleIdentifierImpl name)
+  EnumConstantDeclarationImpl(
+      CommentImpl? comment, List<Annotation>? metadata, this._name)
       : super(comment, metadata) {
-    _name = _becomeParentOf(name);
+    _becomeParentOf(_name);
   }
 
   @override
@@ -3455,7 +3421,7 @@
   Token functionDefinition;
 
   /// The expression representing the body of the function.
-  late ExpressionImpl _expression;
+  ExpressionImpl _expression;
 
   /// The semicolon terminating the statement.
   @override
@@ -3464,9 +3430,9 @@
   /// Initialize a newly created function body consisting of a block of
   /// statements. The [keyword] can be `null` if the function body is not an
   /// async function body.
-  ExpressionFunctionBodyImpl(this.keyword, this.functionDefinition,
-      ExpressionImpl expression, this.semicolon) {
-    _expression = _becomeParentOf(expression);
+  ExpressionFunctionBodyImpl(
+      this.keyword, this.functionDefinition, this._expression, this.semicolon) {
+    _becomeParentOf(_expression);
   }
 
   @override
@@ -3628,7 +3594,7 @@
 class ExpressionStatementImpl extends StatementImpl
     implements ExpressionStatement {
   /// The expression that comprises the statement.
-  late ExpressionImpl _expression;
+  ExpressionImpl _expression;
 
   /// The semicolon terminating the statement, or `null` if the expression is a
   /// function expression and therefore isn't followed by a semicolon.
@@ -3636,8 +3602,8 @@
   Token? semicolon;
 
   /// Initialize a newly created expression statement.
-  ExpressionStatementImpl(ExpressionImpl expression, this.semicolon) {
-    _expression = _becomeParentOf(expression);
+  ExpressionStatementImpl(this._expression, this.semicolon) {
+    _becomeParentOf(_expression);
   }
 
   @override
@@ -3686,11 +3652,11 @@
   Token extendsKeyword;
 
   /// The name of the class that is being extended.
-  late TypeNameImpl _superclass;
+  TypeNameImpl _superclass;
 
   /// Initialize a newly created extends clause.
-  ExtendsClauseImpl(this.extendsKeyword, TypeNameImpl superclass) {
-    _superclass = _becomeParentOf(superclass);
+  ExtendsClauseImpl(this.extendsKeyword, this._superclass) {
+    _becomeParentOf(_superclass);
   }
 
   @override
@@ -3745,7 +3711,7 @@
   Token onKeyword;
 
   /// The type that is being extended.
-  late TypeAnnotationImpl _extendedType;
+  TypeAnnotationImpl _extendedType;
 
   @override
   Token leftBracket;
@@ -3762,17 +3728,17 @@
       CommentImpl? comment,
       List<Annotation>? metadata,
       this.extensionKeyword,
-      SimpleIdentifierImpl? name,
-      TypeParameterListImpl? typeParameters,
+      this._name,
+      this._typeParameters,
       this.onKeyword,
-      TypeAnnotationImpl extendedType,
+      this._extendedType,
       this.leftBracket,
       List<ClassMember> members,
       this.rightBracket)
       : super(comment, metadata) {
-    _name = _becomeParentOf(name);
-    _typeParameters = _becomeParentOf(typeParameters);
-    _extendedType = _becomeParentOf(extendedType);
+    _becomeParentOf(_name);
+    _becomeParentOf(_typeParameters);
+    _becomeParentOf(_extendedType);
     _members._initialize(this, members);
   }
 
@@ -3848,10 +3814,10 @@
     implements ExtensionOverride {
   /// The list of arguments to the override. In valid code this will contain a
   /// single argument, which evaluates to the object being extended.
-  late ArgumentListImpl _argumentList;
+  ArgumentListImpl _argumentList;
 
   /// The name of the extension being selected.
-  late IdentifierImpl _extensionName;
+  IdentifierImpl _extensionName;
 
   /// The type arguments to be applied to the extension, or `null` if no type
   /// arguments were provided.
@@ -3863,11 +3829,11 @@
   @override
   DartType? extendedType;
 
-  ExtensionOverrideImpl(IdentifierImpl extensionName,
-      TypeArgumentListImpl? typeArguments, ArgumentListImpl argumentList) {
-    _extensionName = _becomeParentOf(extensionName);
-    _typeArguments = _becomeParentOf(typeArguments);
-    _argumentList = _becomeParentOf(argumentList);
+  ExtensionOverrideImpl(
+      this._extensionName, this._typeArguments, this._argumentList) {
+    _becomeParentOf(_extensionName);
+    _becomeParentOf(_typeArguments);
+    _becomeParentOf(_argumentList);
   }
 
   @override
@@ -3954,7 +3920,7 @@
   Token? staticKeyword;
 
   /// The fields being declared.
-  late VariableDeclarationListImpl _fieldList;
+  VariableDeclarationListImpl _fieldList;
 
   /// The semicolon terminating the declaration.
   @override
@@ -3971,10 +3937,10 @@
       this.covariantKeyword,
       this.externalKeyword,
       this.staticKeyword,
-      VariableDeclarationListImpl fieldList,
+      this._fieldList,
       this.semicolon)
       : super(comment, metadata) {
-    _fieldList = _becomeParentOf(fieldList);
+    _becomeParentOf(_fieldList);
   }
 
   @override
@@ -4071,18 +4037,18 @@
       Token? covariantKeyword,
       Token? requiredKeyword,
       this.keyword,
-      TypeAnnotationImpl? type,
+      this._type,
       this.thisKeyword,
       this.period,
       SimpleIdentifierImpl identifier,
-      TypeParameterListImpl? typeParameters,
-      FormalParameterListImpl? parameters,
+      this._typeParameters,
+      this._parameters,
       this.question)
       : super(
             comment, metadata, covariantKeyword, requiredKeyword, identifier) {
-    _type = _becomeParentOf(type);
-    _typeParameters = _becomeParentOf(typeParameters);
-    _parameters = _becomeParentOf(parameters);
+    _becomeParentOf(_type);
+    _becomeParentOf(_typeParameters);
+    _becomeParentOf(_parameters);
   }
 
   @override
@@ -4169,13 +4135,13 @@
   Token inKeyword;
 
   /// The expression evaluated to produce the iterator.
-  late ExpressionImpl _iterable;
+  ExpressionImpl _iterable;
 
   /// Initialize a newly created for-each statement whose loop control variable
   /// is declared internally (in the for-loop part). The [awaitKeyword] can be
   /// `null` if this is not an asynchronous for loop.
-  ForEachPartsImpl(this.inKeyword, ExpressionImpl iterator) {
-    _iterable = _becomeParentOf(iterator);
+  ForEachPartsImpl(this.inKeyword, this._iterable) {
+    _becomeParentOf(_iterable);
   }
 
   @override
@@ -4204,14 +4170,14 @@
 class ForEachPartsWithDeclarationImpl extends ForEachPartsImpl
     implements ForEachPartsWithDeclaration {
   /// The declaration of the loop variable.
-  late DeclaredIdentifierImpl _loopVariable;
+  DeclaredIdentifierImpl _loopVariable;
 
   /// Initialize a newly created for-each statement whose loop control variable
   /// is declared internally (inside the for-loop part).
-  ForEachPartsWithDeclarationImpl(DeclaredIdentifierImpl loopVariable,
-      Token inKeyword, ExpressionImpl iterator)
+  ForEachPartsWithDeclarationImpl(
+      this._loopVariable, Token inKeyword, ExpressionImpl iterator)
       : super(inKeyword, iterator) {
-    _loopVariable = _becomeParentOf(loopVariable);
+    _becomeParentOf(_loopVariable);
   }
 
   @override
@@ -4243,14 +4209,14 @@
 class ForEachPartsWithIdentifierImpl extends ForEachPartsImpl
     implements ForEachPartsWithIdentifier {
   /// The loop variable.
-  late SimpleIdentifierImpl _identifier;
+  SimpleIdentifierImpl _identifier;
 
   /// Initialize a newly created for-each statement whose loop control variable
   /// is declared externally (outside the for-loop part).
   ForEachPartsWithIdentifierImpl(
-      SimpleIdentifierImpl identifier, Token inKeyword, ExpressionImpl iterator)
+      this._identifier, Token inKeyword, ExpressionImpl iterator)
       : super(inKeyword, iterator) {
-    _identifier = _becomeParentOf(identifier);
+    _becomeParentOf(_identifier);
   }
 
   @override
@@ -4282,23 +4248,28 @@
 class ForElementImpl extends CollectionElementImpl
     with ForMixin
     implements ForElement {
+  @override
+  Token? awaitKeyword;
+
+  @override
+  Token forKeyword;
+
+  @override
+  Token leftParenthesis;
+
+  ForLoopPartsImpl _forLoopParts;
+
+  @override
+  Token rightParenthesis;
+
   /// The body of the loop.
-  late CollectionElementImpl _body;
+  CollectionElementImpl _body;
 
   /// Initialize a newly created for element.
-  ForElementImpl(
-      Token? awaitKeyword,
-      Token forKeyword,
-      Token leftParenthesis,
-      ForLoopPartsImpl forLoopParts,
-      Token rightParenthesis,
-      CollectionElementImpl body) {
-    this.awaitKeyword = awaitKeyword;
-    this.forKeyword = forKeyword;
-    this.leftParenthesis = leftParenthesis;
-    _forLoopParts = _becomeParentOf(forLoopParts);
-    this.rightParenthesis = rightParenthesis;
-    _body = _becomeParentOf(body);
+  ForElementImpl(this.awaitKeyword, this.forKeyword, this.leftParenthesis,
+      this._forLoopParts, this.rightParenthesis, this._body) {
+    _becomeParentOf(_forLoopParts);
+    _becomeParentOf(_body);
   }
 
   @override
@@ -4317,6 +4288,13 @@
   Token get endToken => _body.endToken;
 
   @override
+  ForLoopParts get forLoopParts => _forLoopParts;
+
+  set forLoopParts(ForLoopParts forLoopParts) {
+    _forLoopParts = _becomeParentOf(forLoopParts as ForLoopPartsImpl);
+  }
+
+  @override
   E? accept<E>(AstVisitor<E> visitor) => visitor.visitForElement(this);
 
   @override
@@ -4497,15 +4475,7 @@
 }
 
 mixin ForMixin on AstNodeImpl {
-  Token? awaitKeyword;
-
-  late Token forKeyword;
-
-  late Token leftParenthesis;
-
-  late ForLoopPartsImpl _forLoopParts;
-
-  late Token rightParenthesis;
+  Token? get awaitKeyword;
 
   @override
   Token get beginToken => awaitKeyword ?? forKeyword;
@@ -4515,14 +4485,16 @@
     ..add(awaitKeyword)
     ..add(forKeyword)
     ..add(leftParenthesis)
-    ..add(_forLoopParts)
+    ..add(forLoopParts)
     ..add(rightParenthesis);
 
-  ForLoopParts get forLoopParts => _forLoopParts;
+  Token get forKeyword;
 
-  set forLoopParts(ForLoopParts forLoopParts) {
-    _forLoopParts = _becomeParentOf(forLoopParts as ForLoopPartsImpl);
-  }
+  ForLoopParts get forLoopParts;
+
+  Token get leftParenthesis;
+
+  Token get rightParenthesis;
 }
 
 abstract class ForPartsImpl extends ForLoopPartsImpl implements ForParts {
@@ -4543,9 +4515,9 @@
   /// [initialization] must be `null`. Either the [condition] and the list of
   /// [updaters] can be `null` if the loop does not have the corresponding
   /// attribute.
-  ForPartsImpl(this.leftSeparator, ExpressionImpl? condition,
-      this.rightSeparator, List<Expression>? updaters) {
-    _condition = _becomeParentOf(condition);
+  ForPartsImpl(this.leftSeparator, this._condition, this.rightSeparator,
+      List<Expression>? updaters) {
+    _becomeParentOf(_condition);
     _updaters._initialize(this, updaters);
   }
 
@@ -4584,19 +4556,19 @@
   /// The declaration of the loop variables, or `null` if there are no
   /// variables.  Note that a for statement cannot have both a variable list and
   /// an initialization expression, but can validly have neither.
-  late VariableDeclarationListImpl _variableList;
+  VariableDeclarationListImpl _variableList;
 
   /// Initialize a newly created for statement. Both the [condition] and the
   /// list of [updaters] can be `null` if the loop does not have the
   /// corresponding attribute.
   ForPartsWithDeclarationsImpl(
-      VariableDeclarationListImpl variableList,
+      this._variableList,
       Token leftSeparator,
       ExpressionImpl? condition,
       Token rightSeparator,
       List<Expression>? updaters)
       : super(leftSeparator, condition, rightSeparator, updaters) {
-    _variableList = _becomeParentOf(variableList);
+    _becomeParentOf(_variableList);
   }
 
   @override
@@ -4637,13 +4609,13 @@
   /// list of [updaters] can be `null` if the loop does not have the
   /// corresponding attribute.
   ForPartsWithExpressionImpl(
-      ExpressionImpl? initialization,
+      this._initialization,
       Token leftSeparator,
       ExpressionImpl? condition,
       Token rightSeparator,
       List<Expression>? updaters)
       : super(leftSeparator, condition, rightSeparator, updaters) {
-    _initialization = _becomeParentOf(initialization);
+    _becomeParentOf(_initialization);
   }
 
   @override
@@ -4675,23 +4647,28 @@
 class ForStatementImpl extends StatementImpl
     with ForMixin
     implements ForStatement {
+  @override
+  Token? awaitKeyword;
+
+  @override
+  Token forKeyword;
+
+  @override
+  Token leftParenthesis;
+
+  ForLoopPartsImpl _forLoopParts;
+
+  @override
+  Token rightParenthesis;
+
   /// The body of the loop.
-  late StatementImpl _body;
+  StatementImpl _body;
 
   /// Initialize a newly created for statement.
-  ForStatementImpl(
-      Token? awaitKeyword,
-      Token forKeyword,
-      Token leftParenthesis,
-      ForLoopPartsImpl forLoopParts,
-      Token rightParenthesis,
-      StatementImpl body) {
-    this.awaitKeyword = awaitKeyword;
-    this.forKeyword = forKeyword;
-    this.leftParenthesis = leftParenthesis;
-    _forLoopParts = _becomeParentOf(forLoopParts);
-    this.rightParenthesis = rightParenthesis;
-    _body = _becomeParentOf(body);
+  ForStatementImpl(this.awaitKeyword, this.forKeyword, this.leftParenthesis,
+      this._forLoopParts, this.rightParenthesis, this._body) {
+    _becomeParentOf(_forLoopParts);
+    _becomeParentOf(_body);
   }
 
   @override
@@ -4710,6 +4687,13 @@
   Token get endToken => _body.endToken;
 
   @override
+  ForLoopParts get forLoopParts => _forLoopParts;
+
+  set forLoopParts(ForLoopParts forLoopParts) {
+    _forLoopParts = _becomeParentOf(forLoopParts as ForLoopPartsImpl);
+  }
+
+  @override
   E? accept<E>(AstVisitor<E> visitor) => visitor.visitForStatement(this);
 
   @override
@@ -4795,7 +4779,7 @@
   Token? propertyKeyword;
 
   /// The function expression being wrapped.
-  late FunctionExpressionImpl _functionExpression;
+  FunctionExpressionImpl _functionExpression;
 
   /// Initialize a newly created function declaration. Either or both of the
   /// [comment] and [metadata] can be `null` if the function does not have the
@@ -4807,13 +4791,13 @@
       CommentImpl? comment,
       List<Annotation>? metadata,
       this.externalKeyword,
-      TypeAnnotationImpl? returnType,
+      this._returnType,
       this.propertyKeyword,
       SimpleIdentifierImpl name,
-      FunctionExpressionImpl functionExpression)
+      this._functionExpression)
       : super(comment, metadata, name) {
-    _returnType = _becomeParentOf(returnType);
-    _functionExpression = _becomeParentOf(functionExpression);
+    _becomeParentOf(_returnType);
+    _becomeParentOf(_functionExpression);
   }
 
   @override
@@ -4882,12 +4866,11 @@
 class FunctionDeclarationStatementImpl extends StatementImpl
     implements FunctionDeclarationStatement {
   /// The function declaration being wrapped.
-  late FunctionDeclarationImpl _functionDeclaration;
+  FunctionDeclarationImpl _functionDeclaration;
 
   /// Initialize a newly created function declaration statement.
-  FunctionDeclarationStatementImpl(
-      FunctionDeclarationImpl functionDeclaration) {
-    _functionDeclaration = _becomeParentOf(functionDeclaration);
+  FunctionDeclarationStatementImpl(this._functionDeclaration) {
+    _becomeParentOf(_functionDeclaration);
   }
 
   @override
@@ -4940,11 +4923,10 @@
   ExecutableElement? declaredElement;
 
   /// Initialize a newly created function declaration.
-  FunctionExpressionImpl(TypeParameterListImpl? typeParameters,
-      FormalParameterListImpl? parameters, FunctionBodyImpl? body) {
-    _typeParameters = _becomeParentOf(typeParameters);
-    _parameters = _becomeParentOf(parameters);
-    _body = _becomeParentOf(body);
+  FunctionExpressionImpl(this._typeParameters, this._parameters, this._body) {
+    _becomeParentOf(_typeParameters);
+    _becomeParentOf(_parameters);
+    _becomeParentOf(_body);
   }
 
   @override
@@ -5026,7 +5008,7 @@
     with NullShortableExpressionImpl
     implements FunctionExpressionInvocation {
   /// The expression producing the function being invoked.
-  late ExpressionImpl _function;
+  ExpressionImpl _function;
 
   /// The element associated with the function being invoked based on static
   /// type information, or `null` if the AST structure has not been resolved or
@@ -5035,10 +5017,10 @@
   ExecutableElement? staticElement;
 
   /// Initialize a newly created function expression invocation.
-  FunctionExpressionInvocationImpl(ExpressionImpl function,
+  FunctionExpressionInvocationImpl(this._function,
       TypeArgumentListImpl? typeArguments, ArgumentListImpl argumentList)
       : super(typeArguments, argumentList) {
-    _function = _becomeParentOf(function);
+    _becomeParentOf(_function);
   }
 
   @override
@@ -5099,7 +5081,7 @@
   TypeParameterListImpl? _typeParameters;
 
   /// The parameters associated with the function type.
-  late FormalParameterListImpl _parameters;
+  FormalParameterListImpl _parameters;
 
   /// Initialize a newly created function type alias. Either or both of the
   /// [comment] and [metadata] can be `null` if the function does not have the
@@ -5110,15 +5092,15 @@
       CommentImpl? comment,
       List<Annotation>? metadata,
       Token keyword,
-      TypeAnnotationImpl? returnType,
+      this._returnType,
       SimpleIdentifierImpl name,
-      TypeParameterListImpl? typeParameters,
-      FormalParameterListImpl parameters,
+      this._typeParameters,
+      this._parameters,
       Token semicolon)
       : super(comment, metadata, keyword, name, semicolon) {
-    _returnType = _becomeParentOf(returnType);
-    _typeParameters = _becomeParentOf(typeParameters);
-    _parameters = _becomeParentOf(parameters);
+    _becomeParentOf(_returnType);
+    _becomeParentOf(_typeParameters);
+    _becomeParentOf(_parameters);
   }
 
   @override
@@ -5187,7 +5169,7 @@
   TypeParameterListImpl? _typeParameters;
 
   /// The parameters of the function-typed parameter.
-  late FormalParameterListImpl _parameters;
+  FormalParameterListImpl _parameters;
 
   @override
   Token? question;
@@ -5201,16 +5183,16 @@
       List<Annotation>? metadata,
       Token? covariantKeyword,
       Token? requiredKeyword,
-      TypeAnnotationImpl? returnType,
+      this._returnType,
       SimpleIdentifierImpl identifier,
-      TypeParameterListImpl? typeParameters,
-      FormalParameterListImpl parameters,
+      this._typeParameters,
+      this._parameters,
       this.question)
       : super(
             comment, metadata, covariantKeyword, requiredKeyword, identifier) {
-    _returnType = _becomeParentOf(returnType);
-    _typeParameters = _becomeParentOf(typeParameters);
-    _parameters = _becomeParentOf(parameters);
+    _becomeParentOf(_returnType);
+    _becomeParentOf(_typeParameters);
+    _becomeParentOf(_parameters);
   }
 
   @override
@@ -5324,7 +5306,7 @@
   TypeParameterListImpl? _typeParameters;
 
   /// The parameters associated with the function type.
-  late FormalParameterListImpl _parameters;
+  FormalParameterListImpl _parameters;
 
   @override
   Token? question;
@@ -5337,12 +5319,12 @@
   GenericFunctionTypeElement? declaredElement;
 
   /// Initialize a newly created generic function type.
-  GenericFunctionTypeImpl(TypeAnnotationImpl? returnType, this.functionKeyword,
-      TypeParameterListImpl? typeParameters, FormalParameterListImpl parameters,
+  GenericFunctionTypeImpl(this._returnType, this.functionKeyword,
+      this._typeParameters, this._parameters,
       {this.question}) {
-    _returnType = _becomeParentOf(returnType);
-    _typeParameters = _becomeParentOf(typeParameters);
-    _parameters = _becomeParentOf(parameters);
+    _becomeParentOf(_returnType);
+    _becomeParentOf(_typeParameters);
+    _becomeParentOf(_parameters);
   }
 
   @override
@@ -5409,7 +5391,7 @@
     with HasAstLinkedContext
     implements GenericTypeAlias {
   /// The type being defined by the alias.
-  late TypeAnnotationImpl _type;
+  TypeAnnotationImpl _type;
 
   /// The type parameters for the function type, or `null` if the function
   /// type does not have any type parameters.
@@ -5427,13 +5409,13 @@
       List<Annotation>? metadata,
       Token typedefToken,
       SimpleIdentifierImpl name,
-      TypeParameterListImpl? typeParameters,
+      this._typeParameters,
       this.equals,
-      TypeAnnotationImpl type,
+      this._type,
       Token semicolon)
       : super(comment, metadata, typedefToken, name, semicolon) {
-    _typeParameters = _becomeParentOf(typeParameters);
-    _type = _becomeParentOf(type);
+    _becomeParentOf(_typeParameters);
+    _becomeParentOf(_type);
   }
 
   @override
@@ -5546,8 +5528,23 @@
 class IfElementImpl extends CollectionElementImpl
     with IfMixin
     implements IfElement {
+  @override
+  Token ifKeyword;
+
+  @override
+  Token leftParenthesis;
+
+  /// The condition used to determine which of the branches is executed next.
+  ExpressionImpl _condition;
+
+  @override
+  Token rightParenthesis;
+
+  @override
+  Token? elseKeyword;
+
   /// The element to be executed if the condition is `true`.
-  late CollectionElementImpl _thenElement;
+  CollectionElementImpl _thenElement;
 
   /// The element to be executed if the condition is `false`, or `null` if there
   /// is no such element.
@@ -5555,20 +5552,16 @@
 
   /// Initialize a newly created for element.
   IfElementImpl(
-      Token ifKeyword,
-      Token leftParenthesis,
-      ExpressionImpl condition,
-      Token rightParenthesis,
-      CollectionElementImpl thenElement,
-      Token? elseKeyword,
-      CollectionElementImpl? elseElement) {
-    this.ifKeyword = ifKeyword;
-    this.leftParenthesis = leftParenthesis;
-    _condition = _becomeParentOf(condition);
-    this.rightParenthesis = rightParenthesis;
-    _thenElement = _becomeParentOf(thenElement);
-    this.elseKeyword = elseKeyword;
-    _elseElement = _becomeParentOf(elseElement);
+      this.ifKeyword,
+      this.leftParenthesis,
+      this._condition,
+      this.rightParenthesis,
+      this._thenElement,
+      this.elseKeyword,
+      this._elseElement) {
+    _becomeParentOf(_condition);
+    _becomeParentOf(_thenElement);
+    _becomeParentOf(_elseElement);
   }
 
   @override
@@ -5579,6 +5572,13 @@
     ..add(_elseElement);
 
   @override
+  Expression get condition => _condition;
+
+  set condition(Expression condition) {
+    _condition = _becomeParentOf(condition as ExpressionImpl);
+  }
+
+  @override
   CollectionElement? get elseElement => _elseElement;
 
   set elseElement(CollectionElement? element) {
@@ -5607,15 +5607,6 @@
 }
 
 mixin IfMixin on AstNodeImpl {
-  late Token ifKeyword;
-
-  late Token leftParenthesis;
-
-  /// The condition used to determine which of the branches is executed next.
-  late ExpressionImpl _condition;
-
-  late Token rightParenthesis;
-
   Token? elseKeyword;
 
   @override
@@ -5625,18 +5616,21 @@
   Iterable<SyntacticEntity> get childEntities => ChildEntities()
     ..add(ifKeyword)
     ..add(leftParenthesis)
-    ..add(_condition)
+    ..add(condition)
     ..add(rightParenthesis);
 
-  Expression get condition => _condition;
+  /// The condition used to determine which of the branches is executed next.
+  Expression get condition;
 
-  set condition(Expression expression) {
-    _condition = _becomeParentOf(expression as ExpressionImpl);
-  }
+  Token get ifKeyword;
+
+  Token get leftParenthesis;
+
+  Token get rightParenthesis;
 
   @override
   void visitChildren(AstVisitor visitor) {
-    _condition.accept(visitor);
+    condition.accept(visitor);
   }
 }
 
@@ -5647,8 +5641,23 @@
 class IfStatementImpl extends StatementImpl
     with IfMixin
     implements IfStatement {
+  @override
+  Token ifKeyword;
+
+  @override
+  Token leftParenthesis;
+
+  /// The condition used to determine which of the branches is executed next.
+  ExpressionImpl _condition;
+
+  @override
+  Token rightParenthesis;
+
+  @override
+  Token? elseKeyword;
+
   /// The statement that is executed if the condition evaluates to `true`.
-  late StatementImpl _thenStatement;
+  StatementImpl _thenStatement;
 
   /// The statement that is executed if the condition evaluates to `false`, or
   /// `null` if there is no else statement.
@@ -5657,20 +5666,16 @@
   /// Initialize a newly created if statement. The [elseKeyword] and
   /// [elseStatement] can be `null` if there is no else clause.
   IfStatementImpl(
-      Token ifKeyword,
-      Token leftParenthesis,
-      ExpressionImpl condition,
-      Token rightParenthesis,
-      StatementImpl thenStatement,
-      Token? elseKeyword,
-      StatementImpl? elseStatement) {
-    this.ifKeyword = ifKeyword;
-    this.leftParenthesis = leftParenthesis;
-    _condition = _becomeParentOf(condition);
-    this.rightParenthesis = rightParenthesis;
-    _thenStatement = _becomeParentOf(thenStatement);
-    this.elseKeyword = elseKeyword;
-    _elseStatement = _becomeParentOf(elseStatement);
+      this.ifKeyword,
+      this.leftParenthesis,
+      this._condition,
+      this.rightParenthesis,
+      this._thenStatement,
+      this.elseKeyword,
+      this._elseStatement) {
+    _becomeParentOf(_condition);
+    _becomeParentOf(_thenStatement);
+    _becomeParentOf(_elseStatement);
   }
 
   @override
@@ -5684,6 +5689,14 @@
     ..add(_elseStatement);
 
   @override
+  Expression get condition => _condition;
+
+  @override
+  set condition(Expression condition) {
+    _condition = _becomeParentOf(condition as ExpressionImpl);
+  }
+
+  @override
   Statement? get elseStatement => _elseStatement;
 
   @override
@@ -5797,12 +5810,12 @@
       List<Configuration>? configurations,
       this.deferredKeyword,
       this.asKeyword,
-      SimpleIdentifierImpl? prefix,
+      this._prefix,
       List<Combinator>? combinators,
       Token semicolon)
       : super(comment, metadata, keyword, libraryUri, configurations,
             combinators, semicolon) {
-    _prefix = _becomeParentOf(prefix);
+    _becomeParentOf(_prefix);
   }
 
   @override
@@ -5864,7 +5877,7 @@
   Token leftBracket;
 
   /// The expression used to compute the index.
-  late ExpressionImpl _index;
+  ExpressionImpl _index;
 
   @override
   Token rightBracket;
@@ -5878,16 +5891,16 @@
   /// Initialize a newly created index expression that is a child of a cascade
   /// expression.
   IndexExpressionImpl.forCascade(this.period, this.question, this.leftBracket,
-      ExpressionImpl index, this.rightBracket) {
-    _index = _becomeParentOf(index);
+      this._index, this.rightBracket) {
+    _becomeParentOf(_index);
   }
 
   /// Initialize a newly created index expression that is not a child of a
   /// cascade expression.
-  IndexExpressionImpl.forTarget(ExpressionImpl target, this.question,
-      this.leftBracket, ExpressionImpl index, this.rightBracket) {
-    _target = _becomeParentOf(target);
-    _index = _becomeParentOf(index);
+  IndexExpressionImpl.forTarget(this._target, this.question, this.leftBracket,
+      this._index, this.rightBracket) {
+    _becomeParentOf(_target);
+    _becomeParentOf(_index);
   }
 
   @override
@@ -6049,7 +6062,7 @@
   Token? keyword;
 
   /// The name of the constructor to be invoked.
-  late ConstructorNameImpl _constructorName;
+  ConstructorNameImpl _constructorName;
 
   /// The type arguments associated with the constructor, rather than with the
   /// class in which the constructor is defined. It is always an error if there
@@ -6058,15 +6071,16 @@
   TypeArgumentListImpl? _typeArguments;
 
   /// The list of arguments to the constructor.
-  late ArgumentListImpl _argumentList;
+  ArgumentListImpl _argumentList;
 
   /// Initialize a newly created instance creation expression.
-  InstanceCreationExpressionImpl(this.keyword,
-      ConstructorNameImpl constructorName, ArgumentListImpl argumentList,
-      {TypeArgumentListImpl? typeArguments}) {
-    _constructorName = _becomeParentOf(constructorName);
-    _typeArguments = _becomeParentOf(typeArguments);
-    _argumentList = _becomeParentOf(argumentList);
+  InstanceCreationExpressionImpl(
+      this.keyword, this._constructorName, this._argumentList,
+      {TypeArgumentListImpl? typeArguments})
+      : _typeArguments = typeArguments {
+    _becomeParentOf(_constructorName);
+    _becomeParentOf(_typeArguments);
+    _becomeParentOf(_argumentList);
   }
 
   @override
@@ -6268,7 +6282,7 @@
 
   /// The expression to be evaluated for the value to be converted into a
   /// string.
-  late ExpressionImpl _expression;
+  ExpressionImpl _expression;
 
   /// The right curly bracket, or `null` if the expression is an identifier
   /// without brackets.
@@ -6277,8 +6291,8 @@
 
   /// Initialize a newly created interpolation expression.
   InterpolationExpressionImpl(
-      this.leftBracket, ExpressionImpl expression, this.rightBracket) {
-    _expression = _becomeParentOf(expression);
+      this.leftBracket, this._expression, this.rightBracket) {
+    _becomeParentOf(_expression);
   }
 
   @override
@@ -6363,7 +6377,7 @@
 abstract class InvocationExpressionImpl extends ExpressionImpl
     implements InvocationExpression {
   /// The list of arguments to the function.
-  late ArgumentListImpl _argumentList;
+  ArgumentListImpl _argumentList;
 
   /// The type arguments to be applied to the method being invoked, or `null` if
   /// no type arguments were provided.
@@ -6376,10 +6390,9 @@
   DartType? staticInvokeType;
 
   /// Initialize a newly created invocation.
-  InvocationExpressionImpl(
-      TypeArgumentListImpl? typeArguments, ArgumentListImpl argumentList) {
-    _typeArguments = _becomeParentOf(typeArguments);
-    _argumentList = _becomeParentOf(argumentList);
+  InvocationExpressionImpl(this._typeArguments, this._argumentList) {
+    _becomeParentOf(_typeArguments);
+    _becomeParentOf(_argumentList);
   }
 
   @override
@@ -6403,7 +6416,7 @@
 ///        [Expression] 'is' '!'? [TypeName]
 class IsExpressionImpl extends ExpressionImpl implements IsExpression {
   /// The expression used to compute the value whose type is being tested.
-  late ExpressionImpl _expression;
+  ExpressionImpl _expression;
 
   /// The is operator.
   @override
@@ -6414,14 +6427,14 @@
   Token? notOperator;
 
   /// The name of the type being tested for.
-  late TypeAnnotationImpl _type;
+  TypeAnnotationImpl _type;
 
   /// Initialize a newly created is expression. The [notOperator] can be `null`
   /// if the sense of the test is not negated.
-  IsExpressionImpl(ExpressionImpl expression, this.isOperator, this.notOperator,
-      TypeAnnotationImpl type) {
-    _expression = _becomeParentOf(expression);
-    _type = _becomeParentOf(type);
+  IsExpressionImpl(
+      this._expression, this.isOperator, this.notOperator, this._type) {
+    _becomeParentOf(_expression);
+    _becomeParentOf(_type);
   }
 
   @override
@@ -6475,12 +6488,12 @@
   final NodeListImpl<Label> _labels = NodeListImpl._();
 
   /// The statement with which the labels are being associated.
-  late StatementImpl _statement;
+  StatementImpl _statement;
 
   /// Initialize a newly created labeled statement.
-  LabeledStatementImpl(List<Label> labels, StatementImpl statement) {
+  LabeledStatementImpl(List<Label> labels, this._statement) {
     _labels._initialize(this, labels);
-    _statement = _becomeParentOf(statement);
+    _becomeParentOf(_statement);
   }
 
   @override
@@ -6529,15 +6542,15 @@
 ///        [SimpleIdentifier] ':'
 class LabelImpl extends AstNodeImpl implements Label {
   /// The label being associated with the statement.
-  late SimpleIdentifierImpl _label;
+  SimpleIdentifierImpl _label;
 
   /// The colon that separates the label from the statement.
   @override
   Token colon;
 
   /// Initialize a newly created label.
-  LabelImpl(SimpleIdentifierImpl label, this.colon) {
-    _label = _becomeParentOf(label);
+  LabelImpl(this._label, this.colon) {
+    _becomeParentOf(_label);
   }
 
   @override
@@ -6577,7 +6590,7 @@
   Token libraryKeyword;
 
   /// The name of the library being defined.
-  late LibraryIdentifierImpl _name;
+  LibraryIdentifierImpl _name;
 
   /// The semicolon terminating the directive.
   @override
@@ -6592,9 +6605,9 @@
   /// [comment] and [metadata] can be `null` if the directive does not have the
   /// corresponding attribute.
   LibraryDirectiveImpl(CommentImpl? comment, List<Annotation>? metadata,
-      this.libraryKeyword, LibraryIdentifierImpl name, this.semicolon)
+      this.libraryKeyword, this._name, this.semicolon)
       : super(comment, metadata) {
-    _name = _becomeParentOf(name);
+    _becomeParentOf(_name);
   }
 
   @override
@@ -6795,20 +6808,19 @@
 class MapLiteralEntryImpl extends CollectionElementImpl
     implements MapLiteralEntry {
   /// The expression computing the key with which the value will be associated.
-  late ExpressionImpl _key;
+  ExpressionImpl _key;
 
   /// The colon that separates the key from the value.
   @override
   Token separator;
 
   /// The expression computing the value that will be associated with the key.
-  late ExpressionImpl _value;
+  ExpressionImpl _value;
 
   /// Initialize a newly created map literal entry.
-  MapLiteralEntryImpl(
-      ExpressionImpl key, this.separator, ExpressionImpl value) {
-    _key = _becomeParentOf(key);
-    _value = _becomeParentOf(value);
+  MapLiteralEntryImpl(this._key, this.separator, this._value) {
+    _becomeParentOf(_key);
+    _becomeParentOf(_value);
   }
 
   @override
@@ -6886,7 +6898,7 @@
   Token? operatorKeyword;
 
   /// The name of the method.
-  late SimpleIdentifierImpl _name;
+  SimpleIdentifierImpl _name;
 
   /// The type parameters associated with the method, or `null` if the method is
   /// not a generic method.
@@ -6897,7 +6909,7 @@
   FormalParameterListImpl? _parameters;
 
   /// The body of the method.
-  late FunctionBodyImpl _body;
+  FunctionBodyImpl _body;
 
   /// Initialize a newly created method declaration. Either or both of the
   /// [comment] and [metadata] can be `null` if the declaration does not have
@@ -6913,19 +6925,19 @@
       List<Annotation>? metadata,
       this.externalKeyword,
       this.modifierKeyword,
-      TypeAnnotationImpl? returnType,
+      this._returnType,
       this.propertyKeyword,
       this.operatorKeyword,
-      SimpleIdentifierImpl name,
-      TypeParameterListImpl? typeParameters,
-      FormalParameterListImpl? parameters,
-      FunctionBodyImpl body)
+      this._name,
+      this._typeParameters,
+      this._parameters,
+      this._body)
       : super(comment, metadata) {
-    _returnType = _becomeParentOf(returnType);
-    _name = _becomeParentOf(name);
-    _typeParameters = _becomeParentOf(typeParameters);
-    _parameters = _becomeParentOf(parameters);
-    _body = _becomeParentOf(body);
+    _becomeParentOf(_returnType);
+    _becomeParentOf(_name);
+    _becomeParentOf(_typeParameters);
+    _becomeParentOf(_parameters);
+    _becomeParentOf(_body);
   }
 
   @override
@@ -7063,7 +7075,7 @@
   Token? operator;
 
   /// The name of the method being invoked.
-  late SimpleIdentifierImpl _methodName;
+  SimpleIdentifierImpl _methodName;
 
   /// The invoke type of the [methodName] if the target element is a getter,
   /// or `null` otherwise.
@@ -7071,15 +7083,11 @@
 
   /// Initialize a newly created method invocation. The [target] and [operator]
   /// can be `null` if there is no target.
-  MethodInvocationImpl(
-      ExpressionImpl? target,
-      this.operator,
-      SimpleIdentifierImpl methodName,
-      TypeArgumentListImpl? typeArguments,
-      ArgumentListImpl argumentList)
+  MethodInvocationImpl(this._target, this.operator, this._methodName,
+      TypeArgumentListImpl? typeArguments, ArgumentListImpl argumentList)
       : super(typeArguments, argumentList) {
-    _target = _becomeParentOf(target);
-    _methodName = _becomeParentOf(methodName);
+    _becomeParentOf(_target);
+    _becomeParentOf(_methodName);
   }
 
   @override
@@ -7222,14 +7230,14 @@
       this.mixinKeyword,
       SimpleIdentifierImpl name,
       TypeParameterListImpl? typeParameters,
-      OnClauseImpl? onClause,
+      this._onClause,
       ImplementsClauseImpl? implementsClause,
       Token leftBracket,
       List<ClassMember> members,
       Token rightBracket)
       : super(comment, metadata, name, typeParameters, implementsClause,
             leftBracket, members, rightBracket) {
-    _onClause = _becomeParentOf(onClause);
+    _becomeParentOf(_onClause);
   }
 
   @override
@@ -7296,15 +7304,15 @@
 abstract class NamedCompilationUnitMemberImpl extends CompilationUnitMemberImpl
     implements NamedCompilationUnitMember {
   /// The name of the member being declared.
-  late SimpleIdentifierImpl _name;
+  SimpleIdentifierImpl _name;
 
   /// Initialize a newly created compilation unit member with the given [name].
   /// Either or both of the [comment] and [metadata] can be `null` if the member
   /// does not have the corresponding attribute.
-  NamedCompilationUnitMemberImpl(CommentImpl? comment,
-      List<Annotation>? metadata, SimpleIdentifierImpl name)
+  NamedCompilationUnitMemberImpl(
+      CommentImpl? comment, List<Annotation>? metadata, this._name)
       : super(comment, metadata) {
-    _name = _becomeParentOf(name);
+    _becomeParentOf(_name);
   }
 
   @override
@@ -7323,15 +7331,15 @@
 ///        [Label] [Expression]
 class NamedExpressionImpl extends ExpressionImpl implements NamedExpression {
   /// The name associated with the expression.
-  late LabelImpl _name;
+  LabelImpl _name;
 
   /// The expression with which the name is associated.
-  late ExpressionImpl _expression;
+  ExpressionImpl _expression;
 
   /// Initialize a newly created named expression..
-  NamedExpressionImpl(LabelImpl name, ExpressionImpl expression) {
-    _name = _becomeParentOf(name);
-    _expression = _becomeParentOf(expression);
+  NamedExpressionImpl(this._name, this._expression) {
+    _becomeParentOf(_name);
+    _becomeParentOf(_expression);
   }
 
   @override
@@ -7456,8 +7464,8 @@
   StringLiteralImpl? _name;
 
   /// Initialize a newly created native clause.
-  NativeClauseImpl(this.nativeKeyword, StringLiteralImpl? name) {
-    _name = _becomeParentOf(name);
+  NativeClauseImpl(this.nativeKeyword, this._name) {
+    _becomeParentOf(_name);
   }
 
   @override
@@ -7511,8 +7519,8 @@
   /// Initialize a newly created function body consisting of the 'native' token,
   /// a string literal, and a semicolon.
   NativeFunctionBodyImpl(
-      this.nativeKeyword, StringLiteralImpl? stringLiteral, this.semicolon) {
-    _stringLiteral = _becomeParentOf(stringLiteral);
+      this.nativeKeyword, this._stringLiteral, this.semicolon) {
+    _becomeParentOf(_stringLiteral);
   }
 
   @override
@@ -7685,15 +7693,11 @@
   /// 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(
-      CommentImpl? comment,
-      List<Annotation>? metadata,
-      this.covariantKeyword,
-      this.requiredKeyword,
-      SimpleIdentifierImpl? identifier) {
-    _comment = _becomeParentOf(comment);
+  NormalFormalParameterImpl(this._comment, List<Annotation>? metadata,
+      this.covariantKeyword, this.requiredKeyword, this._identifier) {
+    _becomeParentOf(_comment);
     _metadata._initialize(this, metadata);
-    _identifier = _becomeParentOf(identifier);
+    _becomeParentOf(_identifier);
   }
 
   @override
@@ -7887,7 +7891,7 @@
   Token leftParenthesis;
 
   /// The expression within the parentheses.
-  late ExpressionImpl _expression;
+  ExpressionImpl _expression;
 
   /// The right parenthesis.
   @override
@@ -7895,8 +7899,8 @@
 
   /// Initialize a newly created parenthesized expression.
   ParenthesizedExpressionImpl(
-      this.leftParenthesis, ExpressionImpl expression, this.rightParenthesis) {
-    _expression = _becomeParentOf(expression);
+      this.leftParenthesis, this._expression, this.rightParenthesis) {
+    _becomeParentOf(_expression);
   }
 
   @override
@@ -8016,12 +8020,12 @@
       List<Annotation>? metadata,
       this.partKeyword,
       this.ofKeyword,
-      StringLiteralImpl? uri,
-      LibraryIdentifierImpl? libraryName,
+      this._uri,
+      this._libraryName,
       this.semicolon)
       : super(comment, metadata) {
-    _uri = _becomeParentOf(uri);
-    _libraryName = _becomeParentOf(libraryName);
+    _becomeParentOf(_uri);
+    _becomeParentOf(_libraryName);
   }
 
   @override
@@ -8076,7 +8080,7 @@
     with NullShortableExpressionImpl, CompoundAssignmentExpressionImpl
     implements PostfixExpression {
   /// The expression computing the operand for the operator.
-  late ExpressionImpl _operand;
+  ExpressionImpl _operand;
 
   /// The postfix operator being applied to the operand.
   @override
@@ -8089,8 +8093,8 @@
   MethodElement? staticElement;
 
   /// Initialize a newly created postfix expression.
-  PostfixExpressionImpl(ExpressionImpl operand, this.operator) {
-    _operand = _becomeParentOf(operand);
+  PostfixExpressionImpl(this._operand, this.operator) {
+    _becomeParentOf(_operand);
   }
 
   @override
@@ -8152,20 +8156,19 @@
 class PrefixedIdentifierImpl extends IdentifierImpl
     implements PrefixedIdentifier {
   /// The prefix associated with the library in which the identifier is defined.
-  late SimpleIdentifierImpl _prefix;
+  SimpleIdentifierImpl _prefix;
 
   /// The period used to separate the prefix from the identifier.
   @override
   Token period;
 
   /// The identifier being prefixed.
-  late SimpleIdentifierImpl _identifier;
+  SimpleIdentifierImpl _identifier;
 
   /// Initialize a newly created prefixed identifier.
-  PrefixedIdentifierImpl(SimpleIdentifierImpl prefix, this.period,
-      SimpleIdentifierImpl identifier) {
-    _prefix = _becomeParentOf(prefix);
-    _identifier = _becomeParentOf(identifier);
+  PrefixedIdentifierImpl(this._prefix, this.period, this._identifier) {
+    _becomeParentOf(_prefix);
+    _becomeParentOf(_identifier);
   }
 
   @override
@@ -8241,7 +8244,7 @@
   Token operator;
 
   /// The expression computing the operand for the operator.
-  late ExpressionImpl _operand;
+  ExpressionImpl _operand;
 
   /// The element associated with the operator based on the static type of the
   /// operand, or `null` if the AST structure has not been resolved, if the
@@ -8250,8 +8253,8 @@
   MethodElement? staticElement;
 
   /// Initialize a newly created prefix expression.
-  PrefixExpressionImpl(this.operator, ExpressionImpl operand) {
-    _operand = _becomeParentOf(operand);
+  PrefixExpressionImpl(this.operator, this._operand) {
+    _becomeParentOf(_operand);
   }
 
   @override
@@ -8325,13 +8328,12 @@
   Token operator;
 
   /// The name of the property being accessed.
-  late SimpleIdentifierImpl _propertyName;
+  SimpleIdentifierImpl _propertyName;
 
   /// Initialize a newly created property access expression.
-  PropertyAccessImpl(ExpressionImpl? target, this.operator,
-      SimpleIdentifierImpl propertyName) {
-    _target = _becomeParentOf(target);
-    _propertyName = _becomeParentOf(propertyName);
+  PropertyAccessImpl(this._target, this.operator, this._propertyName) {
+    _becomeParentOf(_target);
+    _becomeParentOf(_propertyName);
   }
 
   @override
@@ -8442,7 +8444,7 @@
   SimpleIdentifierImpl? _constructorName;
 
   /// The list of arguments to the constructor.
-  late ArgumentListImpl _argumentList;
+  ArgumentListImpl _argumentList;
 
   /// The element associated with the constructor based on static type
   /// information, or `null` if the AST structure has not been resolved or if
@@ -8455,9 +8457,9 @@
   /// [constructorName] can be `null` if the constructor being invoked is the
   /// unnamed constructor.
   RedirectingConstructorInvocationImpl(this.thisKeyword, this.period,
-      SimpleIdentifierImpl? constructorName, ArgumentListImpl argumentList) {
-    _constructorName = _becomeParentOf(constructorName);
-    _argumentList = _becomeParentOf(argumentList);
+      this._constructorName, this._argumentList) {
+    _becomeParentOf(_constructorName);
+    _becomeParentOf(_argumentList);
   }
 
   @override
@@ -8554,9 +8556,8 @@
 
   /// Initialize a newly created return statement. The [expression] can be
   /// `null` if no explicit value was provided.
-  ReturnStatementImpl(
-      this.returnKeyword, ExpressionImpl? expression, this.semicolon) {
-    _expression = _becomeParentOf(expression);
+  ReturnStatementImpl(this.returnKeyword, this._expression, this.semicolon) {
+    _becomeParentOf(_expression);
   }
 
   @override
@@ -8780,11 +8781,11 @@
       Token? covariantKeyword,
       Token? requiredKeyword,
       this.keyword,
-      TypeAnnotationImpl? type,
+      this._type,
       SimpleIdentifierImpl? identifier)
       : super(
             comment, metadata, covariantKeyword, requiredKeyword, identifier) {
-    _type = _becomeParentOf(type);
+    _becomeParentOf(_type);
   }
 
   @override
@@ -9055,10 +9056,10 @@
   Token literal;
 
   /// The value of the literal.
-  late String _value;
+  String _value;
 
   /// Initialize a newly created simple string literal.
-  SimpleStringLiteralImpl(this.literal, String value) {
+  SimpleStringLiteralImpl(this.literal, this._value) {
     _value = StringUtilities.intern(value);
   }
 
@@ -9128,10 +9129,10 @@
   @override
   Token spreadOperator;
 
-  late ExpressionImpl _expression;
+  ExpressionImpl _expression;
 
-  SpreadElementImpl(this.spreadOperator, ExpressionImpl expression) {
-    _expression = _becomeParentOf(expression);
+  SpreadElementImpl(this.spreadOperator, this._expression) {
+    _becomeParentOf(_expression);
   }
 
   @override
@@ -9268,7 +9269,7 @@
   bool isSingleQuoted = false;
   bool isMultiline = false;
   int start = 0;
-  late int end;
+  int end = 0;
 
   StringLexemeHelper(this.lexeme, this.isFirst, this.isLast) {
     if (isFirst) {
@@ -9394,7 +9395,7 @@
   SimpleIdentifierImpl? _constructorName;
 
   /// The list of arguments to the constructor.
-  late ArgumentListImpl _argumentList;
+  ArgumentListImpl _argumentList;
 
   /// The element associated with the constructor based on static type
   /// information, or `null` if the AST structure has not been resolved or if
@@ -9407,9 +9408,9 @@
   /// [constructorName] can be `null` if the constructor being invoked is the
   /// unnamed constructor.
   SuperConstructorInvocationImpl(this.superKeyword, this.period,
-      SimpleIdentifierImpl? constructorName, ArgumentListImpl argumentList) {
-    _constructorName = _becomeParentOf(constructorName);
-    _argumentList = _becomeParentOf(argumentList);
+      this._constructorName, this._argumentList) {
+    _becomeParentOf(_constructorName);
+    _becomeParentOf(_argumentList);
   }
 
   @override
@@ -9492,14 +9493,14 @@
 ///        [SimpleIdentifier]* 'case' [Expression] ':' [Statement]*
 class SwitchCaseImpl extends SwitchMemberImpl implements SwitchCase {
   /// The expression controlling whether the statements will be executed.
-  late ExpressionImpl _expression;
+  ExpressionImpl _expression;
 
   /// Initialize a newly created switch case. The list of [labels] can be `null`
   /// if there are no labels.
-  SwitchCaseImpl(List<Label> labels, Token keyword, ExpressionImpl expression,
+  SwitchCaseImpl(List<Label> labels, Token keyword, this._expression,
       Token colon, List<Statement> statements)
       : super(labels, keyword, colon, statements) {
-    _expression = _becomeParentOf(expression);
+    _becomeParentOf(_expression);
   }
 
   @override
@@ -9623,7 +9624,7 @@
 
   /// The expression used to determine which of the switch members will be
   /// selected.
-  late ExpressionImpl _expression;
+  ExpressionImpl _expression;
 
   /// The right parenthesis.
   @override
@@ -9645,12 +9646,12 @@
   SwitchStatementImpl(
       this.switchKeyword,
       this.leftParenthesis,
-      ExpressionImpl expression,
+      this._expression,
       this.rightParenthesis,
       this.leftBracket,
       List<SwitchMember> members,
       this.rightBracket) {
-    _expression = _becomeParentOf(expression);
+    _becomeParentOf(_expression);
     _members._initialize(this, members);
   }
 
@@ -9772,11 +9773,11 @@
   Token throwKeyword;
 
   /// The expression computing the exception to be thrown.
-  late ExpressionImpl _expression;
+  ExpressionImpl _expression;
 
   /// Initialize a newly created throw expression.
-  ThrowExpressionImpl(this.throwKeyword, ExpressionImpl expression) {
-    _expression = _becomeParentOf(expression);
+  ThrowExpressionImpl(this.throwKeyword, this._expression) {
+    _becomeParentOf(_expression);
   }
 
   @override
@@ -9820,7 +9821,7 @@
     with HasAstLinkedContext
     implements TopLevelVariableDeclaration {
   /// The top-level variables being declared.
-  late VariableDeclarationListImpl _variableList;
+  VariableDeclarationListImpl _variableList;
 
   @override
   Token? externalKeyword;
@@ -9836,10 +9837,10 @@
       CommentImpl? comment,
       List<Annotation>? metadata,
       this.externalKeyword,
-      VariableDeclarationListImpl variableList,
+      this._variableList,
       this.semicolon)
       : super(comment, metadata) {
-    _variableList = _becomeParentOf(variableList);
+    _becomeParentOf(_variableList);
   }
 
   @override
@@ -9888,7 +9889,7 @@
   Token tryKeyword;
 
   /// The body of the statement.
-  late BlockImpl _body;
+  BlockImpl _body;
 
   /// The catch clauses contained in the try statement.
   final NodeListImpl<CatchClause> _catchClauses = NodeListImpl._();
@@ -9905,15 +9906,11 @@
   /// Initialize a newly created try statement. The list of [catchClauses] can
   /// be`null` if there are no catch clauses. The [finallyKeyword] and
   /// [finallyBlock] can be `null` if there is no finally clause.
-  TryStatementImpl(
-      this.tryKeyword,
-      BlockImpl body,
-      List<CatchClause> catchClauses,
-      this.finallyKeyword,
-      BlockImpl? finallyBlock) {
-    _body = _becomeParentOf(body);
+  TryStatementImpl(this.tryKeyword, this._body, List<CatchClause> catchClauses,
+      this.finallyKeyword, this._finallyBlock) {
+    _becomeParentOf(_body);
     _catchClauses._initialize(this, catchClauses);
-    _finallyBlock = _becomeParentOf(finallyBlock);
+    _becomeParentOf(_finallyBlock);
   }
 
   @override
@@ -10074,8 +10071,8 @@
   /// Initialize a newly created typed literal. The [constKeyword] can be
   /// `null` if the literal is not a constant. The [typeArguments] can be `null`
   /// if no type arguments were declared.
-  TypedLiteralImpl(this.constKeyword, TypeArgumentListImpl? typeArguments) {
-    _typeArguments = _becomeParentOf(typeArguments);
+  TypedLiteralImpl(this.constKeyword, this._typeArguments) {
+    _becomeParentOf(_typeArguments);
   }
 
   @override
@@ -10106,7 +10103,7 @@
 ///        [Identifier] typeArguments? '?'?
 class TypeNameImpl extends TypeAnnotationImpl implements TypeName {
   /// The name of the type.
-  late IdentifierImpl _name;
+  IdentifierImpl _name;
 
   /// The type arguments associated with the type, or `null` if there are no
   /// type arguments.
@@ -10122,10 +10119,9 @@
 
   /// Initialize a newly created type name. The [typeArguments] can be `null` if
   /// there are no type arguments.
-  TypeNameImpl(IdentifierImpl name, TypeArgumentListImpl? typeArguments,
-      {this.question}) {
-    _name = _becomeParentOf(name);
-    _typeArguments = _becomeParentOf(typeArguments);
+  TypeNameImpl(this._name, this._typeArguments, {this.question}) {
+    _becomeParentOf(_name);
+    _becomeParentOf(_typeArguments);
   }
 
   @override
@@ -10184,7 +10180,7 @@
 ///    typeParameterVariance ::= 'out' | 'inout' | 'in'
 class TypeParameterImpl extends DeclarationImpl implements TypeParameter {
   /// The name of the type parameter.
-  late SimpleIdentifierImpl _name;
+  SimpleIdentifierImpl _name;
 
   /// The token representing the variance modifier keyword, or `null` if
   /// there is no explicit variance modifier, meaning legacy covariance.
@@ -10209,10 +10205,10 @@
   /// corresponding attribute. The [extendsKeyword] and [bound] can be `null` if
   /// the parameter does not have an upper bound.
   TypeParameterImpl(CommentImpl? comment, List<Annotation>? metadata,
-      SimpleIdentifierImpl name, this.extendsKeyword, TypeAnnotationImpl? bound)
+      this._name, this.extendsKeyword, this._bound)
       : super(comment, metadata) {
-    _name = _becomeParentOf(name);
-    _bound = _becomeParentOf(bound);
+    _becomeParentOf(_name);
+    _becomeParentOf(_bound);
   }
 
   @override
@@ -10320,7 +10316,7 @@
   static const String _DART_EXT_SCHEME = "dart-ext:";
 
   /// The URI referenced by this directive.
-  late StringLiteralImpl _uri;
+  StringLiteralImpl _uri;
 
   @override
   String? uriContent;
@@ -10332,9 +10328,9 @@
   /// [comment] and [metadata] can be `null` if the directive does not have the
   /// corresponding attribute.
   UriBasedDirectiveImpl(
-      CommentImpl? comment, List<Annotation>? metadata, StringLiteralImpl uri)
+      CommentImpl? comment, List<Annotation>? metadata, this._uri)
       : super(comment, metadata) {
-    _uri = _becomeParentOf(uri);
+    _becomeParentOf(_uri);
   }
 
   @override
@@ -10417,7 +10413,7 @@
 class VariableDeclarationImpl extends DeclarationImpl
     implements VariableDeclaration {
   /// The name of the variable being declared.
-  late SimpleIdentifierImpl _name;
+  SimpleIdentifierImpl _name;
 
   /// The equal sign separating the variable name from the initial value, or
   /// `null` if the initial value was not specified.
@@ -10436,11 +10432,10 @@
 
   /// Initialize a newly created variable declaration. The [equals] and
   /// [initializer] can be `null` if there is no initializer.
-  VariableDeclarationImpl(
-      SimpleIdentifierImpl name, this.equals, ExpressionImpl? initializer)
+  VariableDeclarationImpl(this._name, this.equals, this._initializer)
       : super(null, null) {
-    _name = _becomeParentOf(name);
-    _initializer = _becomeParentOf(initializer);
+    _becomeParentOf(_name);
+    _becomeParentOf(_initializer);
   }
 
   @override
@@ -10561,10 +10556,10 @@
       List<Annotation>? metadata,
       this.lateKeyword,
       this.keyword,
-      TypeAnnotationImpl? type,
+      this._type,
       List<VariableDeclaration> variables)
       : super(comment, metadata) {
-    _type = _becomeParentOf(type);
+    _becomeParentOf(_type);
     _variables._initialize(this, variables);
   }
 
@@ -10630,16 +10625,15 @@
 class VariableDeclarationStatementImpl extends StatementImpl
     implements VariableDeclarationStatement {
   /// The variables being declared.
-  late VariableDeclarationListImpl _variableList;
+  VariableDeclarationListImpl _variableList;
 
   /// The semicolon terminating the statement.
   @override
   Token semicolon;
 
   /// Initialize a newly created variable declaration statement.
-  VariableDeclarationStatementImpl(
-      VariableDeclarationListImpl variableList, this.semicolon) {
-    _variableList = _becomeParentOf(variableList);
+  VariableDeclarationStatementImpl(this._variableList, this.semicolon) {
+    _becomeParentOf(_variableList);
   }
 
   @override
@@ -10684,20 +10678,20 @@
   Token leftParenthesis;
 
   /// The expression used to determine whether to execute the body of the loop.
-  late ExpressionImpl _condition;
+  ExpressionImpl _condition;
 
   /// The right parenthesis.
   @override
   Token rightParenthesis;
 
   /// The body of the loop.
-  late StatementImpl _body;
+  StatementImpl _body;
 
   /// Initialize a newly created while statement.
-  WhileStatementImpl(this.whileKeyword, this.leftParenthesis,
-      ExpressionImpl condition, this.rightParenthesis, StatementImpl body) {
-    _condition = _becomeParentOf(condition);
-    _body = _becomeParentOf(body);
+  WhileStatementImpl(this.whileKeyword, this.leftParenthesis, this._condition,
+      this.rightParenthesis, this._body) {
+    _becomeParentOf(_condition);
+    _becomeParentOf(_body);
   }
 
   @override
@@ -10795,7 +10789,7 @@
   Token? star;
 
   /// The expression whose value will be yielded.
-  late ExpressionImpl _expression;
+  ExpressionImpl _expression;
 
   /// The semicolon following the expression.
   @override
@@ -10804,8 +10798,8 @@
   /// Initialize a newly created yield expression. The [star] can be `null` if
   /// no star was provided.
   YieldStatementImpl(
-      this.yieldKeyword, this.star, ExpressionImpl expression, this.semicolon) {
-    _expression = _becomeParentOf(expression);
+      this.yieldKeyword, this.star, this._expression, this.semicolon) {
+    _becomeParentOf(_expression);
   }
 
   @override
diff --git a/tools/VERSION b/tools/VERSION
index 4da2654..7e4525b 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 13
 PATCH 0
-PRERELEASE 9
+PRERELEASE 10
 PRERELEASE_PATCH 0
\ No newline at end of file