Version 2.13.0-11.0.dev

Merge commit '9624709abffea2feb930d068520a07a10cbf3926' into 'dev'
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 614d996..656d53d 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -85,7 +85,7 @@
 /// TODO(scheglov) Clean up the list of implicitly analyzed files.
 class AnalysisDriver implements AnalysisDriverGeneric {
   /// The version of data format, should be incremented on every format change.
-  static const int DATA_VERSION = 125;
+  static const int DATA_VERSION = 126;
 
   /// The length of the list returned by [_computeDeclaredVariablesSignature].
   static const int _declaredVariablesSignatureLength = 4;
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index 0e1f047..da21735 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -4245,9 +4245,7 @@
   }
 }
 
-class ForElementImpl extends CollectionElementImpl
-    with ForMixin
-    implements ForElement {
+class ForElementImpl extends CollectionElementImpl implements ForElement {
   @override
   Token? awaitKeyword;
 
@@ -4273,6 +4271,9 @@
   }
 
   @override
+  Token get beginToken => awaitKeyword ?? forKeyword;
+
+  @override
   CollectionElement get body => _body;
 
   set body(CollectionElement statement) {
@@ -4281,7 +4282,11 @@
 
   @override
   Iterable<SyntacticEntity> get childEntities => ChildEntities()
-    ..addAll(super.childEntities)
+    ..add(awaitKeyword)
+    ..add(forKeyword)
+    ..add(leftParenthesis)
+    ..add(_forLoopParts)
+    ..add(rightParenthesis)
     ..add(_body);
 
   @override
@@ -4474,29 +4479,6 @@
   }
 }
 
-mixin ForMixin on AstNodeImpl {
-  Token? get awaitKeyword;
-
-  @override
-  Token get beginToken => awaitKeyword ?? forKeyword;
-
-  @override
-  Iterable<SyntacticEntity> get childEntities => ChildEntities()
-    ..add(awaitKeyword)
-    ..add(forKeyword)
-    ..add(leftParenthesis)
-    ..add(forLoopParts)
-    ..add(rightParenthesis);
-
-  Token get forKeyword;
-
-  ForLoopParts get forLoopParts;
-
-  Token get leftParenthesis;
-
-  Token get rightParenthesis;
-}
-
 abstract class ForPartsImpl extends ForLoopPartsImpl implements ForParts {
   @override
   Token leftSeparator;
@@ -4644,9 +4626,7 @@
   }
 }
 
-class ForStatementImpl extends StatementImpl
-    with ForMixin
-    implements ForStatement {
+class ForStatementImpl extends StatementImpl implements ForStatement {
   @override
   Token? awaitKeyword;
 
@@ -4672,6 +4652,9 @@
   }
 
   @override
+  Token get beginToken => awaitKeyword ?? forKeyword;
+
+  @override
   Statement get body => _body;
 
   set body(Statement statement) {
@@ -4680,7 +4663,11 @@
 
   @override
   Iterable<SyntacticEntity> get childEntities => ChildEntities()
-    ..addAll(super.childEntities)
+    ..add(awaitKeyword)
+    ..add(forKeyword)
+    ..add(leftParenthesis)
+    ..add(_forLoopParts)
+    ..add(rightParenthesis)
     ..add(_body);
 
   @override
@@ -5525,9 +5512,7 @@
   bool get isAssignable => true;
 }
 
-class IfElementImpl extends CollectionElementImpl
-    with IfMixin
-    implements IfElement {
+class IfElementImpl extends CollectionElementImpl implements IfElement {
   @override
   Token ifKeyword;
 
@@ -5565,8 +5550,14 @@
   }
 
   @override
+  Token get beginToken => ifKeyword;
+
+  @override
   Iterable<SyntacticEntity> get childEntities => ChildEntities()
-    ..addAll(super.childEntities)
+    ..add(ifKeyword)
+    ..add(leftParenthesis)
+    ..add(_condition)
+    ..add(rightParenthesis)
     ..add(_thenElement)
     ..add(elseKeyword)
     ..add(_elseElement);
@@ -5600,47 +5591,17 @@
 
   @override
   void visitChildren(AstVisitor visitor) {
-    super.visitChildren(visitor);
+    _condition.accept(visitor);
     _thenElement.accept(visitor);
     _elseElement?.accept(visitor);
   }
 }
 
-mixin IfMixin on AstNodeImpl {
-  Token? elseKeyword;
-
-  @override
-  Token get beginToken => ifKeyword;
-
-  @override
-  Iterable<SyntacticEntity> get childEntities => ChildEntities()
-    ..add(ifKeyword)
-    ..add(leftParenthesis)
-    ..add(condition)
-    ..add(rightParenthesis);
-
-  /// The condition used to determine which of the branches is executed next.
-  Expression get condition;
-
-  Token get ifKeyword;
-
-  Token get leftParenthesis;
-
-  Token get rightParenthesis;
-
-  @override
-  void visitChildren(AstVisitor visitor) {
-    condition.accept(visitor);
-  }
-}
-
 /// An if statement.
 ///
 ///    ifStatement ::=
 ///        'if' '(' [Expression] ')' [Statement] ('else' [Statement])?
-class IfStatementImpl extends StatementImpl
-    with IfMixin
-    implements IfStatement {
+class IfStatementImpl extends StatementImpl implements IfStatement {
   @override
   Token ifKeyword;
 
@@ -5683,7 +5644,10 @@
 
   @override
   Iterable<SyntacticEntity> get childEntities => ChildEntities()
-    ..addAll(super.childEntities)
+    ..add(ifKeyword)
+    ..add(leftParenthesis)
+    ..add(_condition)
+    ..add(rightParenthesis)
     ..add(_thenStatement)
     ..add(elseKeyword)
     ..add(_elseStatement);
diff --git a/pkg/analyzer/lib/src/summary2/apply_resolution.dart b/pkg/analyzer/lib/src/summary2/apply_resolution.dart
index 027dba1..abe0727 100644
--- a/pkg/analyzer/lib/src/summary2/apply_resolution.dart
+++ b/pkg/analyzer/lib/src/summary2/apply_resolution.dart
@@ -508,10 +508,10 @@
 
   @override
   void visitForElement(ForElement node) {
+    _expectMarker(MarkerTag.ForElement_forLoopParts);
+    node.forLoopParts.accept(this);
     _expectMarker(MarkerTag.ForElement_body);
     node.body.accept(this);
-    _expectMarker(MarkerTag.ForElement_forMixin);
-    _forMixin(node as ForElementImpl);
     _expectMarker(MarkerTag.ForElement_end);
   }
 
@@ -1432,11 +1432,6 @@
     (node.declaredElement as ParameterElementImpl).type = _nextType()!;
   }
 
-  void _forMixin(ForMixin node) {
-    _expectMarker(MarkerTag.ForMixin_forLoopParts);
-    node.forLoopParts.accept(this);
-  }
-
   void _forParts(ForParts node) {
     _expectMarker(MarkerTag.ForParts_condition);
     node.condition?.accept(this);
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
index 56f70a9..ae7d510 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
@@ -816,9 +816,9 @@
   }
 
   ForElement _readForElement() {
-    var body = readNode() as CollectionElement;
     var flags = _readByte();
     var forLoopParts = readNode() as ForLoopParts;
+    var body = readNode() as CollectionElement;
     return astFactory.forElement(
       awaitKeyword: AstBinaryFlags.hasAwait(flags) ? Tokens.AWAIT : null,
       body: body,
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_tag.dart b/pkg/analyzer/lib/src/summary2/ast_binary_tag.dart
index 43eee8a..7fd7486 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_tag.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_tag.dart
@@ -120,11 +120,10 @@
   ForEachPartsWithDeclaration_loopVariable,
   ForEachPartsWithDeclaration_forEachParts,
   ForEachPartsWithDeclaration_end,
+  ForElement_forLoopParts,
   ForElement_body,
-  ForElement_forMixin,
   ForElement_end,
   FormalParameter_type,
-  ForMixin_forLoopParts,
   ForParts_condition,
   ForParts_updaters,
   ForParts_forLoopParts,
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
index ff0a516..d2cc77b 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
@@ -729,10 +729,15 @@
   @override
   void visitForElement(ForElement node) {
     _writeByte(Tag.ForElement);
+    _writeByte(
+      AstBinaryFlags.encode(
+        hasAwait: node.awaitKeyword != null,
+      ),
+    );
+    _writeMarker(MarkerTag.ForElement_forLoopParts);
+    _writeNode(node.forLoopParts);
     _writeMarker(MarkerTag.ForElement_body);
     _writeNode(node.body);
-    _writeMarker(MarkerTag.ForElement_forMixin);
-    _storeForMixin(node as ForElementImpl);
     _writeMarker(MarkerTag.ForElement_end);
   }
 
@@ -1924,16 +1929,6 @@
     }
   }
 
-  void _storeForMixin(ForMixin node) {
-    _writeByte(
-      AstBinaryFlags.encode(
-        hasAwait: node.awaitKeyword != null,
-      ),
-    );
-    _writeMarker(MarkerTag.ForMixin_forLoopParts);
-    _writeNode(node.forLoopParts);
-  }
-
   void _storeForParts(ForParts node) {
     _writeMarker(MarkerTag.ForParts_condition);
     _writeOptionalNode(node.condition);
diff --git a/tools/VERSION b/tools/VERSION
index 7e4525b..44d5aa6 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 13
 PATCH 0
-PRERELEASE 10
+PRERELEASE 11
 PRERELEASE_PATCH 0
\ No newline at end of file