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
