Version 2.14.0-200.0.dev

Merge commit '83f43c024bc0cbd6a06e4a4b775bd4a3039351a3' into 'dev'
diff --git a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
index 760fd21..982c6e5 100644
--- a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
@@ -339,7 +339,6 @@
     assertSuggestClass('B', kind: CompletionSuggestionKind.IDENTIFIER);
     assertNotSuggested('A');
     assertNotSuggested('Object');
-    assertNotSuggested('main');
     assertNotSuggested('baz');
     assertNotSuggested('print');
   }
diff --git a/pkg/analysis_server/test/src/services/completion/dart/completion_test.dart b/pkg/analysis_server/test/src/services/completion/dart/completion_test.dart
index bce4ad4..939baea 100644
--- a/pkg/analysis_server/test/src/services/completion/dart/completion_test.dart
+++ b/pkg/analysis_server/test/src/services/completion/dart/completion_test.dart
@@ -10,7 +10,9 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ArgumentListCompletionTest);
+    defineReflectiveTests(AssertStatementTest);
     defineReflectiveTests(ConstructorCompletionTest);
+    defineReflectiveTests(ExpressionFunctionBodyTest);
     defineReflectiveTests(ExtensionCompletionTest);
     defineReflectiveTests(PropertyAccessorCompletionTest);
     defineReflectiveTests(RedirectedConstructorCompletionTest);
@@ -21,7 +23,23 @@
 
 @reflectiveTest
 class ArgumentListCompletionTest extends CompletionTestCase {
-  Future<void> test_functionWithVoidReturnType() async {
+  Future<void> test_functionWithVoidReturnType_optionalNamed() async {
+    addTestFile('''
+void f(C c) {
+  c.m(handler: ^);
+}
+
+void g() {}
+
+class C {
+  void m({void Function()? handler}) {}
+}
+''');
+    await getSuggestions();
+    assertHasCompletion('g');
+  }
+
+  Future<void> test_functionWithVoidReturnType_requiredPositional() async {
     addTestFile('''
 void f(C c) {
   c.m(^);
@@ -39,6 +57,22 @@
 }
 
 @reflectiveTest
+class AssertStatementTest extends CompletionTestCase {
+  @failingTest
+  Future<void> test_message() async {
+    addTestFile('''
+void f() {
+  assert(true, ^);
+}
+
+const c = <int>[];
+''');
+    await getSuggestions();
+    assertHasCompletion('c');
+  }
+}
+
+@reflectiveTest
 class ConstructorCompletionTest extends CompletionTestCase {
   Future<void> test_constructor_abstract() async {
     addTestFile('''
@@ -56,6 +90,45 @@
 }
 
 @reflectiveTest
+class ExpressionFunctionBodyTest extends CompletionTestCase {
+  Future<void> test_voidReturn_localFunction() async {
+    addTestFile('''
+class C {
+  void m() {
+    void f() => ^;
+  }
+}
+
+void g() {}
+''');
+    await getSuggestions();
+    assertHasCompletion('g');
+  }
+
+  Future<void> test_voidReturn_method() async {
+    addTestFile('''
+class C {
+  void m() => ^;
+}
+
+void g() {}
+''');
+    await getSuggestions();
+    assertHasCompletion('g');
+  }
+
+  Future<void> test_voidReturn_topLevelFunction() async {
+    addTestFile('''
+void f() => ^;
+
+void g() {}
+''');
+    await getSuggestions();
+    assertHasCompletion('g');
+  }
+}
+
+@reflectiveTest
 class ExtensionCompletionTest extends CompletionTestCase {
   Future<void> test_explicitTarget_getter_sameUnit() async {
     addTestFile('''
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 99e984b..9a0e0a0 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -82,7 +82,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 = 145;
+  static const int DATA_VERSION = 146;
 
   /// The number of exception contexts allowed to write. Once this field is
   /// zero, we stop writing any new exception contexts in this process.
diff --git a/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart b/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
index a9d231b..61cbd65 100644
--- a/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
@@ -497,6 +497,7 @@
   @override
   void visitFieldFormalParameter(FieldFormalParameter node) {
     safelyVisitNodeListWithSeparatorAndSuffix(node.metadata, ' ', ' ');
+    safelyVisitTokenWithSuffix(node.requiredKeyword, " ");
     safelyVisitTokenWithSuffix(node.covariantKeyword, ' ');
     safelyVisitTokenWithSuffix(node.keyword, " ");
     safelyVisitNodeWithSuffix(node.type, " ");
@@ -638,6 +639,7 @@
   @override
   void visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
     safelyVisitNodeListWithSeparatorAndSuffix(node.metadata, ' ', ' ');
+    safelyVisitTokenWithSuffix(node.requiredKeyword, ' ');
     safelyVisitTokenWithSuffix(node.covariantKeyword, ' ');
     safelyVisitNodeWithSuffix(node.returnType, " ");
     safelyVisitNode(node.identifier);
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
index 5088179..3686719 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
@@ -1079,7 +1079,7 @@
     var argumentList = readNode() as ArgumentList;
     var node = astFactory.superConstructorInvocation(
       Tokens.super_(),
-      Tokens.period(),
+      constructorName != null ? Tokens.period() : null,
       constructorName,
       argumentList,
     );
diff --git a/pkg/analyzer/lib/src/summary2/informative_data.dart b/pkg/analyzer/lib/src/summary2/informative_data.dart
index d6bb7cb..9020587 100644
--- a/pkg/analyzer/lib/src/summary2/informative_data.dart
+++ b/pkg/analyzer/lib/src/summary2/informative_data.dart
@@ -263,6 +263,8 @@
           info.constantOffsets,
           (applier) {
             applier.applyToMetadata(element);
+            applier.applyToFormalParameters(element);
+            applier.applyToConstructorInitializers(element);
           },
         );
       },
@@ -394,6 +396,7 @@
       (applier) {
         applier.applyToMetadata(element);
         applier.applyToTypeParameters(element.typeParameters);
+        applier.applyToFormalParameters(element);
       },
     );
   }
@@ -488,6 +491,7 @@
           (applier) {
             applier.applyToMetadata(element);
             applier.applyToTypeParameters(element.typeParameters);
+            applier.applyToFormalParameters(element);
           },
         );
       },
@@ -1119,6 +1123,7 @@
       _writeOffsets(
         metadata: node.metadata,
         typeParameters: node.functionExpression.typeParameters,
+        formalParameters: node.functionExpression.parameters,
       );
     });
 
@@ -1192,6 +1197,8 @@
       _writeFormalParameters(node.parameters);
       _writeOffsets(
         metadata: node.metadata,
+        formalParameters: node.parameters,
+        constructorInitializers: node.initializers,
       );
     });
   }
@@ -1298,6 +1305,7 @@
         _writeOffsets(
           metadata: node.metadata,
           typeParameters: node.typeParameters,
+          formalParameters: node.parameters,
         );
       },
     );
@@ -1308,16 +1316,35 @@
     TypeParameterList? typeParameters,
     Expression? constantInitializer,
     List<EnumConstantDeclaration>? enumConstants,
+    FormalParameterList? formalParameters,
+    List<ConstructorInitializer>? constructorInitializers,
   }) {
     var collector = _OffsetsCollector();
     metadata?.accept(collector);
-    typeParameters?.typeParameters.accept(collector);
+    if (typeParameters != null) {
+      for (var typeParameter in typeParameters.typeParameters) {
+        typeParameter.metadata.accept(collector);
+      }
+    }
     constantInitializer?.accept(collector);
     if (enumConstants != null) {
       for (var enumConstant in enumConstants) {
         enumConstant.metadata.accept(collector);
       }
     }
+    if (formalParameters != null) {
+      for (var parameter in formalParameters.parameters) {
+        parameter.metadata.accept(collector);
+        if (parameter is DefaultFormalParameter) {
+          parameter.defaultValue?.accept(collector);
+        }
+      }
+    }
+    if (constructorInitializers != null) {
+      for (var constructorInitializer in constructorInitializers) {
+        constructorInitializer.accept(collector);
+      }
+    }
     sink.writeUint30List(collector.offsets);
   }
 
@@ -1493,12 +1520,25 @@
     }
   }
 
+  void applyToConstructorInitializers(ConstructorElementImpl element) {
+    for (var initializer in element.constantInitializers) {
+      initializer.accept(this);
+    }
+  }
+
   void applyToEnumConstants(List<FieldElement> constants) {
     for (var constant in constants) {
       applyToMetadata(constant);
     }
   }
 
+  void applyToFormalParameters(ExecutableElement element) {
+    for (var parameter in element.parameters) {
+      applyToMetadata(parameter);
+      applyToConstantInitializer(parameter);
+    }
+  }
+
   void applyToMetadata(Element element) {
     for (var annotation in element.metadata) {
       var node = (annotation as ElementAnnotationImpl).annotationAst;
@@ -1538,11 +1578,58 @@
   }
 
   @override
+  void visitAsExpression(AsExpression node) {
+    _tokenOrNull(node.asOperator);
+    super.visitAsExpression(node);
+  }
+
+  @override
+  void visitAssertInitializer(AssertInitializer node) {
+    _tokenOrNull(node.assertKeyword);
+    _tokenOrNull(node.leftParenthesis);
+    _tokenOrNull(node.rightParenthesis);
+    super.visitAssertInitializer(node);
+  }
+
+  @override
+  void visitAssignmentExpression(AssignmentExpression node) {
+    _tokenOrNull(node.operator);
+    super.visitAssignmentExpression(node);
+  }
+
+  @override
+  void visitBinaryExpression(BinaryExpression node) {
+    _tokenOrNull(node.operator);
+    super.visitBinaryExpression(node);
+  }
+
+  @override
   void visitBooleanLiteral(BooleanLiteral node) {
     _tokenOrNull(node.literal);
   }
 
   @override
+  void visitConditionalExpression(ConditionalExpression node) {
+    _tokenOrNull(node.question);
+    _tokenOrNull(node.colon);
+    super.visitConditionalExpression(node);
+  }
+
+  @override
+  void visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
+    _tokenOrNull(node.thisKeyword);
+    _tokenOrNull(node.equals);
+    super.visitConstructorFieldInitializer(node);
+  }
+
+  @override
+  void visitConstructorName(ConstructorName node) {
+    node.type.accept(this);
+    _tokenOrNull(node.period);
+    node.name?.accept(this);
+  }
+
+  @override
   void visitDoubleLiteral(DoubleLiteral node) {
     _tokenOrNull(node.literal);
   }
@@ -1557,7 +1644,8 @@
   @override
   void visitInstanceCreationExpression(InstanceCreationExpression node) {
     _tokenOrNull(node.keyword);
-    super.visitInstanceCreationExpression(node);
+    node.constructorName.accept(this);
+    node.argumentList.accept(this);
   }
 
   @override
@@ -1566,6 +1654,34 @@
   }
 
   @override
+  void visitIsExpression(IsExpression node) {
+    _tokenOrNull(node.isOperator);
+    super.visitIsExpression(node);
+  }
+
+  @override
+  void visitListLiteral(ListLiteral node) {
+    _tokenOrNull(node.constKeyword);
+    _tokenOrNull(node.leftBracket);
+    _tokenOrNull(node.rightBracket);
+    super.visitListLiteral(node);
+  }
+
+  @override
+  void visitMethodInvocation(MethodInvocation node) {
+    node.target?.accept(this);
+    _tokenOrNull(node.operator);
+    node.methodName.accept(this);
+    node.typeArguments?.accept(this);
+    node.argumentList.accept(this);
+  }
+
+  @override
+  void visitNullLiteral(NullLiteral node) {
+    _tokenOrNull(node.literal);
+  }
+
+  @override
   void visitParenthesizedExpression(ParenthesizedExpression node) {
     _tokenOrNull(node.leftParenthesis);
     _tokenOrNull(node.rightParenthesis);
@@ -1573,12 +1689,48 @@
   }
 
   @override
+  void visitPostfixExpression(PostfixExpression node) {
+    _tokenOrNull(node.operator);
+    super.visitPostfixExpression(node);
+  }
+
+  @override
+  void visitPrefixedIdentifier(PrefixedIdentifier node) {
+    node.prefix.accept(this);
+    _tokenOrNull(node.period);
+    node.identifier.accept(this);
+  }
+
+  @override
   void visitPrefixExpression(PrefixExpression node) {
     _tokenOrNull(node.operator);
     super.visitPrefixExpression(node);
   }
 
   @override
+  void visitPropertyAccess(PropertyAccess node) {
+    node.target?.accept(this);
+    _tokenOrNull(node.operator);
+    node.propertyName.accept(this);
+  }
+
+  @override
+  void visitRedirectingConstructorInvocation(
+      RedirectingConstructorInvocation node) {
+    _tokenOrNull(node.thisKeyword);
+    _tokenOrNull(node.period);
+    super.visitRedirectingConstructorInvocation(node);
+  }
+
+  @override
+  void visitSetOrMapLiteral(SetOrMapLiteral node) {
+    _tokenOrNull(node.constKeyword);
+    _tokenOrNull(node.leftBracket);
+    _tokenOrNull(node.rightBracket);
+    super.visitSetOrMapLiteral(node);
+  }
+
+  @override
   void visitSimpleIdentifier(SimpleIdentifier node) {
     _tokenOrNull(node.token);
   }
@@ -1589,11 +1741,41 @@
   }
 
   @override
+  void visitSpreadElement(SpreadElement node) {
+    _tokenOrNull(node.spreadOperator);
+    super.visitSpreadElement(node);
+  }
+
+  @override
+  void visitSuperConstructorInvocation(SuperConstructorInvocation node) {
+    _tokenOrNull(node.superKeyword);
+    _tokenOrNull(node.period);
+    super.visitSuperConstructorInvocation(node);
+  }
+
+  @override
+  void visitSuperExpression(SuperExpression node) {
+    _tokenOrNull(node.superKeyword);
+  }
+
+  @override
+  void visitThisExpression(ThisExpression node) {
+    _tokenOrNull(node.thisKeyword);
+  }
+
+  @override
   void visitThrowExpression(ThrowExpression node) {
     _tokenOrNull(node.throwKeyword);
     super.visitThrowExpression(node);
   }
 
+  @override
+  void visitTypeArgumentList(TypeArgumentList node) {
+    _tokenOrNull(node.leftBracket);
+    _tokenOrNull(node.rightBracket);
+    super.visitTypeArgumentList(node);
+  }
+
   void _tokenOrNull(Token? token) {
     if (token != null) {
       handleToken(token);
diff --git a/pkg/analyzer/test/src/summary/element_text.dart b/pkg/analyzer/test/src/summary/element_text.dart
index 1a369ce..d0f0792 100644
--- a/pkg/analyzer/test/src/summary/element_text.dart
+++ b/pkg/analyzer/test/src/summary/element_text.dart
@@ -197,7 +197,7 @@
       //   final int foo;
       //   set foo(int newValue) {}
       // }
-      assert(accessor.isSetter, isTrue);
+      expect(accessor.isSetter, isTrue);
     }
 
     expect(accessor.variable, same(property));
diff --git a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
index a3a772a..519b2e3 100644
--- a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
+++ b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
@@ -355,9 +355,12 @@
     _writeNextCodeLine(node);
     _writeln('ConstructorName');
     _withIndent(() {
-      _writeNode('name', node.name);
-      _writeElement('staticElement', node.staticElement);
-      _writeNode('type', node.type);
+      var properties = _Properties();
+      properties.addNode('name', node.name);
+      properties.addToken('period', node.period);
+      properties.addElement('staticElement', node.staticElement);
+      properties.addNode('type', node.type);
+      _writeProperties(properties);
     });
   }
 
@@ -1143,7 +1146,9 @@
     _withIndent(() {
       _writeNode('argumentList', node.argumentList);
       _writeNode('constructorName', node.constructorName);
+      _writeToken('period', node.period);
       _writeElement('staticElement', node.staticElement);
+      _writeToken('thisKeyword', node.thisKeyword);
     });
   }
 
@@ -1169,6 +1174,8 @@
       var properties = _Properties();
       properties.addNodeList('elements', node.elements);
       properties.addRaw('isMap', node.isMap);
+      properties.addToken('leftBracket', node.leftBracket);
+      properties.addToken('rightBracket', node.rightBracket);
       _addTypedLiteral(properties, node);
       _writeProperties(properties);
     });
@@ -1223,7 +1230,7 @@
   void visitSpreadElement(SpreadElement node) {
     _writeln('SpreadElement');
     _withIndent(() {
-      _writeNode('expressions', node.expression);
+      _writeNode('expression', node.expression);
       _writeToken('spreadOperator', node.spreadOperator);
     });
   }
@@ -1247,7 +1254,9 @@
     _withIndent(() {
       _writeNode('argumentList', node.argumentList);
       _writeNode('constructorName', node.constructorName);
+      _writeToken('period', node.period);
       _writeElement('staticElement', node.staticElement);
+      _writeToken('superKeyword', node.superKeyword);
     });
   }
 
@@ -1512,8 +1521,11 @@
   }
 
   void _addAssertion(_Properties properties, Assertion node) {
+    properties.addToken('assertKeyword', node.assertKeyword);
     properties.addNode('condition', node.condition);
+    properties.addToken('leftParenthesis', node.leftParenthesis);
     properties.addNode('message', node.message);
+    properties.addToken('rightParenthesis', node.rightParenthesis);
     _addAstNode(properties, node);
   }
 
diff --git a/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart b/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart
index 738afb8..acba031 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart
@@ -27,7 +27,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ResynthesizeAst2Test);
-    // defineReflectiveTests(ApplyCheckElementTextReplacements);
+    defineReflectiveTests(ApplyCheckElementTextReplacements);
   });
 }
 
diff --git a/pkg/analyzer/test/src/summary/resynthesize_common.dart b/pkg/analyzer/test/src/summary/resynthesize_common.dart
index a48ad06..abeb718 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_common.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_common.dart
@@ -143,6 +143,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::D::@constructor::•
+                superKeyword: super @0
       class D @32
         constructors
           synthetic @-1
@@ -180,6 +181,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::D::@constructor::•
+                superKeyword: super @0
       class D @35
         constructors
           synthetic @-1
@@ -216,6 +218,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::D::@constructor::•
+                superKeyword: super @0
       class D @43
         constructors
           synthetic @-1
@@ -252,6 +255,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::D::@constructor::•
+                superKeyword: super @0
       class D @48
         constructors
           synthetic @-1
@@ -288,6 +292,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::D::@constructor::•
+                superKeyword: super @0
       class D @87
         constructors
           synthetic @-1
@@ -321,6 +326,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::A::@constructor::•
+                superKeyword: super @0
       class A @42
         constructors
           synthetic @-1
@@ -365,6 +371,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::D::@constructor::•
+                superKeyword: super @0
       class D @39
         constructors
           synthetic @-1
@@ -401,6 +408,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::D::@constructor::•
+                superKeyword: super @0
       class D @29
         constructors
           synthetic @-1
@@ -434,6 +442,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::D::@constructor::•
+                superKeyword: super @0
       class D @26
         constructors
           synthetic @-1
@@ -478,6 +487,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: package:test/a.dart::@class::Base::@constructor::•
+                superKeyword: super @0
           synthetic const named @-1
             constantInitializers
               SuperConstructorInvocation
@@ -488,7 +498,9 @@
                   staticElement: package:test/a.dart::@class::Base::@constructor::named
                   staticType: null
                   token: named @-1
+                period: . @0
                 staticElement: package:test/a.dart::@class::Base::@constructor::named
+                superKeyword: super @0
 ''');
   }
 
@@ -535,6 +547,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: package:test/a.dart::@class::Base::@constructor::•
+                superKeyword: super @0
           synthetic noArgs @-1
             constantInitializers
               SuperConstructorInvocation
@@ -545,7 +558,9 @@
                   staticElement: package:test/a.dart::@class::Base::@constructor::noArgs
                   staticType: null
                   token: noArgs @-1
+                period: . @0
                 staticElement: package:test/a.dart::@class::Base::@constructor::noArgs
+                superKeyword: super @0
           synthetic requiredArg @-1
             parameters
               requiredPositional x @-1
@@ -564,14 +579,16 @@
                   staticElement: package:test/a.dart::@class::Base::@constructor::requiredArg
                   staticType: null
                   token: requiredArg @-1
+                period: . @0
                 staticElement: package:test/a.dart::@class::Base::@constructor::requiredArg
+                superKeyword: super @0
           synthetic positionalArg @-1
             parameters
               optionalPositional x @-1
                 type: bool
                 constantInitializer
                   BooleanLiteral
-                    literal: true @0
+                    literal: true @127
                     staticType: bool
             constantInitializers
               SuperConstructorInvocation
@@ -587,14 +604,16 @@
                   staticElement: package:test/a.dart::@class::Base::@constructor::positionalArg
                   staticType: null
                   token: positionalArg @-1
+                period: . @0
                 staticElement: package:test/a.dart::@class::Base::@constructor::positionalArg
+                superKeyword: super @0
           synthetic positionalArg2 @-1
             parameters
               optionalPositional final x @-1
                 type: bool
                 constantInitializer
                   BooleanLiteral
-                    literal: true @0
+                    literal: true @167
                     staticType: bool
             constantInitializers
               SuperConstructorInvocation
@@ -610,14 +629,16 @@
                   staticElement: package:test/a.dart::@class::Base::@constructor::positionalArg2
                   staticType: null
                   token: positionalArg2 @-1
+                period: . @0
                 staticElement: package:test/a.dart::@class::Base::@constructor::positionalArg2
+                superKeyword: super @0
           synthetic namedArg @-1
             parameters
               optionalNamed x @-1
                 type: int
                 constantInitializer
                   IntegerLiteral
-                    literal: 42 @0
+                    literal: 42 @200
                     staticType: int
             constantInitializers
               SuperConstructorInvocation
@@ -633,14 +654,16 @@
                   staticElement: package:test/a.dart::@class::Base::@constructor::namedArg
                   staticType: null
                   token: namedArg @-1
+                period: . @0
                 staticElement: package:test/a.dart::@class::Base::@constructor::namedArg
+                superKeyword: super @0
           synthetic namedArg2 @-1
             parameters
               optionalNamed final x @-1
                 type: bool
                 constantInitializer
                   BooleanLiteral
-                    literal: true @0
+                    literal: true @233
                     staticType: bool
             constantInitializers
               SuperConstructorInvocation
@@ -656,7 +679,9 @@
                   staticElement: package:test/a.dart::@class::Base::@constructor::namedArg2
                   staticType: null
                   token: namedArg2 @-1
+                period: . @0
                 staticElement: package:test/a.dart::@class::Base::@constructor::namedArg2
+                superKeyword: super @0
 ''');
   }
 
@@ -717,7 +742,9 @@
                   staticElement: self::@class::Base::@constructor::ctor
                   staticType: null
                   token: ctor @-1
+                period: . @0
                 staticElement: self::@class::Base::@constructor::ctor
+                superKeyword: super @0
 ''');
   }
 
@@ -781,7 +808,9 @@
                   staticElement: self::@class::Base::@constructor::ctor
                   staticType: null
                   token: ctor @-1
+                period: . @0
                 staticElement: self::@class::Base::@constructor::ctor
+                superKeyword: super @0
 ''');
   }
 
@@ -811,6 +840,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::D::@constructor::•
+                superKeyword: super @0
       class D @26
         constructors
           synthetic @-1
@@ -1374,7 +1404,7 @@
                 type: int
                 constantInitializer
                   IntegerLiteral
-                    literal: 42 @0
+                    literal: 42 @28
                     staticType: int
         accessors
           synthetic get x @14
@@ -1430,7 +1460,7 @@
                 type: int
                 constantInitializer
                   IntegerLiteral
-                    literal: 42 @0
+                    literal: 42 @29
                     staticType: int
         accessors
           synthetic get x @14
@@ -1727,7 +1757,7 @@
                 staticElement: self::@class::Annotation::@constructor::named
                 staticType: null
                 token: named @103
-              period: . @0
+              period: . @102
               prefix: SimpleIdentifier
                 staticElement: self::@class::Annotation
                 staticType: null
@@ -4196,6 +4226,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: dart:core::@class::Object::@constructor::•
+                superKeyword: super @0
       class alias HasDocComment @91
         documentationComment: /// Comment 1.\n/// Comment 2.
         codeOffset: 55
@@ -4212,6 +4243,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: dart:core::@class::Object::@constructor::•
+                superKeyword: super @0
       class alias HasAnnotation @142
         metadata
           Annotation
@@ -4238,6 +4270,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: dart:core::@class::Object::@constructor::•
+                superKeyword: super @0
       class alias AnnotationThenComment @223
         documentationComment: /// Comment 1.\n/// Comment 2.
         metadata
@@ -4265,6 +4298,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: dart:core::@class::Object::@constructor::•
+                superKeyword: super @0
       class alias CommentThenAnnotation @312
         documentationComment: /// Comment 1.\n/// Comment 2.
         metadata
@@ -4292,6 +4326,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: dart:core::@class::Object::@constructor::•
+                superKeyword: super @0
       class alias CommentAroundAnnotation @401
         documentationComment: /// Comment 2.
         metadata
@@ -4319,6 +4354,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: dart:core::@class::Object::@constructor::•
+                superKeyword: super @0
 ''',
         withCodeRanges: true);
   }
@@ -5548,7 +5584,7 @@
             type: int
             constantInitializer
               IntegerLiteral
-                literal: 1 @0
+                literal: 1 @14
                 staticType: int
           optionalNamed b @21
             type: int
@@ -5556,7 +5592,7 @@
             type: int
             constantInitializer
               IntegerLiteral
-                literal: 2 @0
+                literal: 2 @32
                 staticType: int
         returnType: dynamic
 ''');
@@ -5577,14 +5613,14 @@
             metadata
               Annotation
                 arguments: ArgumentList
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
-                atSign.offset: 0
+                  leftParenthesis: ( @12
+                  rightParenthesis: ) @13
+                atSign.offset: 5
                 element: dart:core::@class::Object::@constructor::•
                 name: SimpleIdentifier
                   staticElement: dart:core::@class::Object
                   staticType: null
-                  token: Object @-1
+                  token: Object @6
           requiredPositional b @26
             type: int
           requiredPositional c @43
@@ -5592,14 +5628,14 @@
             metadata
               Annotation
                 arguments: ArgumentList
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
-                atSign.offset: 0
+                  leftParenthesis: ( @36
+                  rightParenthesis: ) @37
+                atSign.offset: 29
                 element: dart:core::@class::Object::@constructor::•
                 name: SimpleIdentifier
                   staticElement: dart:core::@class::Object
                   staticType: null
-                  token: Object @-1
+                  token: Object @30
         returnType: dynamic
 ''');
   }
@@ -5991,7 +6027,7 @@
         type: int
         constantInitializer
           AsExpression
-            asOperator: as @0
+            asOperator: as @29
             expression: SimpleIdentifier
               staticElement: self::@getter::a
               staticType: num
@@ -6035,7 +6071,7 @@
                 staticElement: <null>
                 staticType: null
                 token: a @24
-              operator: += @0
+              operator: += @26
               readElement: self::@getter::a
               readType: int
               rightHandSide: IntegerLiteral
@@ -6070,7 +6106,7 @@
           CascadeExpression
             cascadeSections
               PropertyAccess
-                operator: .. @0
+                operator: .. @11
                 propertyName: SimpleIdentifier
                   staticElement: dart:core::@class::int::@getter::isEven
                   staticType: bool
@@ -6084,7 +6120,7 @@
                   staticElement: dart:core::@class::int::@method::abs
                   staticType: int Function()
                   token: abs @21
-                operator: .. @0
+                operator: .. @19
                 staticInvokeType: int Function()
                 staticType: int
             staticType: int
@@ -6124,7 +6160,7 @@
                   staticElement: self::@class::C::@getter::f1
                   staticType: int
                   token: f1 @63
-                period: . @0
+                period: . @62
                 prefix: SimpleIdentifier
                   staticElement: self::@class::C
                   staticType: null
@@ -6139,7 +6175,7 @@
                   staticElement: self::@class::C::@getter::f2
                   staticType: int
                   token: f2 @74
-                period: . @0
+                period: . @73
                 prefix: SimpleIdentifier
                   staticElement: self::@class::C
                   staticType: null
@@ -6235,6 +6271,7 @@
                   substitution: {T: dynamic}
                 staticType: null
                 token: named @126
+              period: . @125
               staticElement: ConstructorMember
                 base: self::@class::C::@constructor::named
                 substitution: {T: int}
@@ -6312,8 +6349,8 @@
               IntegerLiteral
                 literal: 0 @11
                 staticType: int
-            leftBracket: [ @0
-            rightBracket: ] @0
+            leftBracket: [ @10
+            rightBracket: ] @12
             staticType: List<int>
       static const b @21
         type: int
@@ -6435,11 +6472,11 @@
                             staticType: null
                             token: int @155
                           type: int
-                      leftBracket: < @0
-                      rightBracket: > @0
+                      leftBracket: < @154
+                      rightBracket: > @158
                 staticType: P2<int>
-            leftBracket: [ @0
-            rightBracket: ] @0
+            leftBracket: [ @140
+            rightBracket: ] @163
             staticType: List<P<dynamic>>
     accessors
       synthetic static get values @131
@@ -6467,7 +6504,7 @@
                 leftOperand: IntegerLiteral
                   literal: 1 @29
                   staticType: int
-                operator: + @0
+                operator: + @31
                 rightOperand: MethodInvocation
                   argumentList: ArgumentList
                     leftParenthesis: ( @36
@@ -6544,7 +6581,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @10
               staticType: int
-            operator: + @0
+            operator: + @12
             rightOperand: MethodInvocation
               argumentList: ArgumentList
                 leftParenthesis: ( @17
@@ -6590,7 +6627,7 @@
               staticElement: self::@getter::a
               staticType: int
               token: a @32
-            operator: + @0
+            operator: + @34
             rightOperand: IntegerLiteral
               literal: 5 @36
               staticType: int
@@ -6652,6 +6689,7 @@
                   substitution: {K: int, V: String}
                 staticType: null
                 token: named @76
+              period: . @75
               staticElement: ConstructorMember
                 base: self::@class::C::@constructor::named
                 substitution: {K: int, V: String}
@@ -6675,8 +6713,8 @@
                         staticType: null
                         token: String @68
                       type: String
-                  leftBracket: < @0
-                  rightBracket: > @0
+                  leftBracket: < @62
+                  rightBracket: > @74
             keyword: const @55
             staticType: C<int, String>
     accessors
@@ -6721,6 +6759,7 @@
                   substitution: {K: int, V: String}
                 staticType: null
                 token: named @48
+              period: . @47
               staticElement: ConstructorMember
                 base: a.dart::@class::C::@constructor::named
                 substitution: {K: int, V: String}
@@ -6744,8 +6783,8 @@
                         staticType: null
                         token: String @40
                       type: String
-                  leftBracket: < @0
-                  rightBracket: > @0
+                  leftBracket: < @34
+                  rightBracket: > @46
             keyword: const @27
             staticType: C<int, String>
     accessors
@@ -6790,6 +6829,7 @@
                   substitution: {K: int, V: String}
                 staticType: null
                 token: named @55
+              period: . @54
               staticElement: ConstructorMember
                 base: a.dart::@class::C::@constructor::named
                 substitution: {K: int, V: String}
@@ -6799,7 +6839,7 @@
                     staticElement: a.dart::@class::C
                     staticType: null
                     token: C @40
-                  period: . @0
+                  period: . @39
                   prefix: SimpleIdentifier
                     staticElement: self::@prefix::p
                     staticType: null
@@ -6821,8 +6861,8 @@
                         staticType: null
                         token: String @47
                       type: String
-                  leftBracket: < @0
-                  rightBracket: > @0
+                  leftBracket: < @41
+                  rightBracket: > @53
             keyword: const @32
             staticType: C<int, String>
     accessors
@@ -6927,8 +6967,8 @@
                         staticType: null
                         token: String @54
                       type: String
-                  leftBracket: < @0
-                  rightBracket: > @0
+                  leftBracket: < @48
+                  rightBracket: > @60
             keyword: const @41
             staticType: C<int, String>
     accessors
@@ -6984,8 +7024,8 @@
                         staticType: null
                         token: String @40
                       type: String
-                  leftBracket: < @0
-                  rightBracket: > @0
+                  leftBracket: < @34
+                  rightBracket: > @46
             keyword: const @27
             staticType: C<int, String>
     accessors
@@ -7027,7 +7067,7 @@
                     staticElement: a.dart::@class::C
                     staticType: null
                     token: C @40
-                  period: . @0
+                  period: . @39
                   prefix: SimpleIdentifier
                     staticElement: self::@prefix::p
                     staticType: null
@@ -7049,8 +7089,8 @@
                         staticType: null
                         token: String @47
                       type: String
-                  leftBracket: < @0
-                  rightBracket: > @0
+                  leftBracket: < @41
+                  rightBracket: > @53
             keyword: const @32
             staticType: C<int, String>
     accessors
@@ -7126,6 +7166,7 @@
                 staticElement: self::@class::C::@constructor::named
                 staticType: null
                 token: named @91
+              period: . @90
               staticElement: self::@class::C::@constructor::named
               type: TypeName
                 name: SimpleIdentifier
@@ -7169,6 +7210,7 @@
                 staticElement: a.dart::@class::C::@constructor::named
                 staticType: null
                 token: named @35
+              period: . @34
               staticElement: a.dart::@class::C::@constructor::named
               type: TypeName
                 name: SimpleIdentifier
@@ -7212,6 +7254,7 @@
                 staticElement: a.dart::@class::C::@constructor::named
                 staticType: null
                 token: named @42
+              period: . @41
               staticElement: a.dart::@class::C::@constructor::named
               type: TypeName
                 name: PrefixedIdentifier
@@ -7219,7 +7262,7 @@
                     staticElement: a.dart::@class::C
                     staticType: null
                     token: C @40
-                  period: . @0
+                  period: . @39
                   prefix: SimpleIdentifier
                     staticElement: self::@prefix::p
                     staticType: null
@@ -7260,6 +7303,7 @@
                 staticElement: <null>
                 staticType: null
                 token: named @29
+              period: . @28
               staticElement: <null>
               type: TypeName
                 name: SimpleIdentifier
@@ -7298,7 +7342,7 @@
                     staticElement: <null>
                     staticType: null
                     token: named @18
-                  period: . @0
+                  period: . @17
                   prefix: SimpleIdentifier
                     staticElement: <null>
                     staticType: null
@@ -7341,6 +7385,7 @@
                 staticElement: <null>
                 staticType: null
                 token: named @42
+              period: . @41
               staticElement: <null>
               type: TypeName
                 name: PrefixedIdentifier
@@ -7348,7 +7393,7 @@
                     staticElement: a.dart::@class::C
                     staticType: null
                     token: C @40
-                  period: . @0
+                  period: . @39
                   prefix: SimpleIdentifier
                     staticElement: self::@prefix::p
                     staticType: null
@@ -7388,6 +7433,7 @@
                 staticElement: <null>
                 staticType: null
                 token: named @42
+              period: . @41
               staticElement: <null>
               type: TypeName
                 name: PrefixedIdentifier
@@ -7395,7 +7441,7 @@
                     staticElement: <null>
                     staticType: null
                     token: C @40
-                  period: . @0
+                  period: . @39
                   prefix: SimpleIdentifier
                     staticElement: self::@prefix::p
                     staticType: null
@@ -7431,6 +7477,7 @@
                 staticElement: <null>
                 staticType: null
                 token: named @20
+              period: . @19
               staticElement: <null>
               type: TypeName
                 name: PrefixedIdentifier
@@ -7438,7 +7485,7 @@
                     staticElement: <null>
                     staticType: null
                     token: C @18
-                  period: . @0
+                  period: . @17
                   prefix: SimpleIdentifier
                     staticElement: <null>
                     staticType: null
@@ -7482,6 +7529,7 @@
                 staticElement: <null>
                 staticType: null
                 token: named @32
+              period: . @31
               staticElement: <null>
               type: TypeName
                 name: SimpleIdentifier
@@ -7605,7 +7653,7 @@
                     staticElement: a.dart::@class::C
                     staticType: null
                     token: C @40
-                  period: . @0
+                  period: . @39
                   prefix: SimpleIdentifier
                     staticElement: self::@prefix::p
                     staticType: null
@@ -7679,7 +7727,7 @@
                     staticElement: <null>
                     staticType: null
                     token: C @40
-                  period: . @0
+                  period: . @39
                   prefix: SimpleIdentifier
                     staticElement: self::@prefix::p
                     staticType: null
@@ -7718,7 +7766,7 @@
                     staticElement: <null>
                     staticType: null
                     token: C @18
-                  period: . @0
+                  period: . @17
                   prefix: SimpleIdentifier
                     staticElement: <null>
                     staticType: null
@@ -7757,7 +7805,7 @@
               staticElement: self::@getter::a
               staticType: int
               token: a @23
-            isOperator: is @0
+            isOperator: is @25
             staticType: bool
             type: TypeName
               name: SimpleIdentifier
@@ -7801,7 +7849,7 @@
         type: int
         constantInitializer
           PropertyAccess
-            operator: . @0
+            operator: . @59
             propertyName: SimpleIdentifier
               staticElement: dart:core::@class::String::@getter::length
               staticType: int
@@ -7812,7 +7860,7 @@
                 staticElement: self::@class::C::@getter::F
                 staticType: String
                 token: F @58
-              period: . @0
+              period: . @57
               prefix: SimpleIdentifier
                 staticElement: self::@class::C
                 staticType: null
@@ -7845,7 +7893,7 @@
         type: int
         constantInitializer
           PropertyAccess
-            operator: . @0
+            operator: . @34
             propertyName: SimpleIdentifier
               staticElement: dart:core::@class::String::@getter::length
               staticType: int
@@ -7856,7 +7904,7 @@
                 staticElement: a.dart::@class::C::@getter::F
                 staticType: String
                 token: F @33
-              period: . @0
+              period: . @32
               prefix: SimpleIdentifier
                 staticElement: a.dart::@class::C
                 staticType: null
@@ -7889,14 +7937,14 @@
         type: int
         constantInitializer
           PropertyAccess
-            operator: . @0
+            operator: . @41
             propertyName: SimpleIdentifier
               staticElement: dart:core::@class::String::@getter::length
               staticType: int
               token: length @42
             staticType: int
             target: PropertyAccess
-              operator: . @0
+              operator: . @39
               propertyName: SimpleIdentifier
                 staticElement: a.dart::@class::C::@getter::F
                 staticType: String
@@ -7907,7 +7955,7 @@
                   staticElement: a.dart::@class::C
                   staticType: null
                   token: C @38
-                period: . @0
+                period: . @37
                 prefix: SimpleIdentifier
                   staticElement: self::@prefix::p
                   staticType: null
@@ -7932,7 +7980,7 @@
         type: int
         constantInitializer
           PropertyAccess
-            operator: . @0
+            operator: . @15
             propertyName: SimpleIdentifier
               staticElement: dart:core::@class::String::@getter::length
               staticType: int
@@ -7968,7 +8016,7 @@
               staticElement: dart:core::@class::String::@getter::length
               staticType: int
               token: length @36
-            period: . @0
+            period: . @35
             prefix: SimpleIdentifier
               staticElement: self::@getter::S
               staticType: String
@@ -8005,7 +8053,7 @@
               staticElement: dart:core::@class::String::@getter::length
               staticType: int
               token: length @29
-            period: . @0
+            period: . @28
             prefix: SimpleIdentifier
               staticElement: a.dart::@getter::S
               staticType: String
@@ -8036,7 +8084,7 @@
         type: int
         constantInitializer
           PropertyAccess
-            operator: . @0
+            operator: . @35
             propertyName: SimpleIdentifier
               staticElement: dart:core::@class::String::@getter::length
               staticType: int
@@ -8047,7 +8095,7 @@
                 staticElement: a.dart::@getter::S
                 staticType: String
                 token: S @34
-              period: . @0
+              period: . @33
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::p
                 staticType: null
@@ -8086,7 +8134,7 @@
               staticElement: self::@class::C::@method::length
               staticType: int Function()
               token: length @53
-            period: . @0
+            period: . @52
             prefix: SimpleIdentifier
               staticElement: self::@class::C
               staticType: null
@@ -8111,7 +8159,7 @@
         type: Object
         constantInitializer
           ListLiteral
-            constKeyword: const @0
+            constKeyword: const @17
             elements
               IfElement
                 condition: BooleanLiteral
@@ -8120,8 +8168,8 @@
                 thenStatement: IntegerLiteral
                   literal: 1 @39
                   staticType: int
-            leftBracket: [ @0
-            rightBracket: ] @0
+            leftBracket: [ @28
+            rightBracket: ] @40
             staticType: List<int>
             typeArguments: TypeArgumentList
               arguments
@@ -8131,8 +8179,8 @@
                     staticType: null
                     token: int @24
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @23
+              rightBracket: > @27
     accessors
       synthetic static get x @13
         returnType: Object
@@ -8151,7 +8199,7 @@
         type: Object
         constantInitializer
           ListLiteral
-            constKeyword: const @0
+            constKeyword: const @17
             elements
               IfElement
                 condition: BooleanLiteral
@@ -8163,8 +8211,8 @@
                 thenStatement: IntegerLiteral
                   literal: 1 @39
                   staticType: int
-            leftBracket: [ @0
-            rightBracket: ] @0
+            leftBracket: [ @28
+            rightBracket: ] @47
             staticType: List<int>
             typeArguments: TypeArgumentList
               arguments
@@ -8174,8 +8222,8 @@
                     staticType: null
                     token: int @24
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @23
+              rightBracket: > @27
     accessors
       synthetic static get x @13
         returnType: Object
@@ -8197,13 +8245,13 @@
         type: Object
         constantInitializer
           ListLiteral
-            constKeyword: const @0
+            constKeyword: const @17
             elements
               IntegerLiteral
                 literal: 1 @24
                 staticType: int
-            leftBracket: [ @0
-            rightBracket: ] @0
+            leftBracket: [ @23
+            rightBracket: ] @25
             staticType: List<int>
     accessors
       synthetic static get x @13
@@ -8223,16 +8271,16 @@
         type: Object
         constantInitializer
           ListLiteral
-            constKeyword: const @0
+            constKeyword: const @17
             elements
               SpreadElement
-                expressions: ListLiteral
+                expression: ListLiteral
                   elements
                     IntegerLiteral
                       literal: 1 @38
                       staticType: int
-                  leftBracket: [ @0
-                  rightBracket: ] @0
+                  leftBracket: [ @37
+                  rightBracket: ] @39
                   staticType: List<int>
                   typeArguments: TypeArgumentList
                     arguments
@@ -8242,11 +8290,11 @@
                           staticType: null
                           token: int @33
                         type: int
-                    leftBracket: < @0
-                    rightBracket: > @0
-                spreadOperator: ... @0
-            leftBracket: [ @0
-            rightBracket: ] @0
+                    leftBracket: < @32
+                    rightBracket: > @36
+                spreadOperator: ... @29
+            leftBracket: [ @28
+            rightBracket: ] @40
             staticType: List<int>
             typeArguments: TypeArgumentList
               arguments
@@ -8256,8 +8304,8 @@
                     staticType: null
                     token: int @24
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @23
+              rightBracket: > @27
     accessors
       synthetic static get x @13
         returnType: Object
@@ -8276,16 +8324,16 @@
         type: Object
         constantInitializer
           ListLiteral
-            constKeyword: const @0
+            constKeyword: const @17
             elements
               SpreadElement
-                expressions: ListLiteral
+                expression: ListLiteral
                   elements
                     IntegerLiteral
                       literal: 1 @39
                       staticType: int
-                  leftBracket: [ @0
-                  rightBracket: ] @0
+                  leftBracket: [ @38
+                  rightBracket: ] @40
                   staticType: List<int>
                   typeArguments: TypeArgumentList
                     arguments
@@ -8295,11 +8343,11 @@
                           staticType: null
                           token: int @34
                         type: int
-                    leftBracket: < @0
-                    rightBracket: > @0
-                spreadOperator: ...? @0
-            leftBracket: [ @0
-            rightBracket: ] @0
+                    leftBracket: < @33
+                    rightBracket: > @37
+                spreadOperator: ...? @29
+            leftBracket: [ @28
+            rightBracket: ] @41
             staticType: List<int>
             typeArguments: TypeArgumentList
               arguments
@@ -8309,8 +8357,8 @@
                     staticType: null
                     token: int @24
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @23
+              rightBracket: > @27
     accessors
       synthetic static get x @13
         returnType: Object
@@ -8329,7 +8377,7 @@
         type: Object
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @17
             elements
               IfElement
                 condition: BooleanLiteral
@@ -8343,6 +8391,8 @@
                     literal: 2 @47
                     staticType: int
             isMap: true
+            leftBracket: { @33
+            rightBracket: } @48
             staticType: Map<int, int>
             typeArguments: TypeArgumentList
               arguments
@@ -8358,8 +8408,8 @@
                     staticType: null
                     token: int @29
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @23
+              rightBracket: > @32
     accessors
       synthetic static get x @13
         returnType: Object
@@ -8393,7 +8443,7 @@
         type: Object
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @17
             elements
               SetOrMapLiteral
                 key: IntegerLiteral
@@ -8403,6 +8453,8 @@
                   literal: 1.0 @27
                   staticType: double
             isMap: true
+            leftBracket: { @23
+            rightBracket: } @30
             staticType: Map<int, double>
     accessors
       synthetic static get x @13
@@ -8422,10 +8474,10 @@
         type: Object
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @17
             elements
               SpreadElement
-                expressions: SetOrMapLiteral
+                expression: SetOrMapLiteral
                   elements
                     SetOrMapLiteral
                       key: IntegerLiteral
@@ -8435,6 +8487,8 @@
                         literal: 2 @51
                         staticType: int
                   isMap: true
+                  leftBracket: { @47
+                  rightBracket: } @52
                   staticType: Map<int, int>
                   typeArguments: TypeArgumentList
                     arguments
@@ -8450,10 +8504,12 @@
                           staticType: null
                           token: int @43
                         type: int
-                    leftBracket: < @0
-                    rightBracket: > @0
-                spreadOperator: ... @0
+                    leftBracket: < @37
+                    rightBracket: > @46
+                spreadOperator: ... @34
             isMap: true
+            leftBracket: { @33
+            rightBracket: } @53
             staticType: Map<int, int>
             typeArguments: TypeArgumentList
               arguments
@@ -8469,8 +8525,8 @@
                     staticType: null
                     token: int @29
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @23
+              rightBracket: > @32
     accessors
       synthetic static get x @13
         returnType: Object
@@ -8489,10 +8545,10 @@
         type: Object
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @17
             elements
               SpreadElement
-                expressions: SetOrMapLiteral
+                expression: SetOrMapLiteral
                   elements
                     SetOrMapLiteral
                       key: IntegerLiteral
@@ -8502,6 +8558,8 @@
                         literal: 2 @52
                         staticType: int
                   isMap: true
+                  leftBracket: { @48
+                  rightBracket: } @53
                   staticType: Map<int, int>
                   typeArguments: TypeArgumentList
                     arguments
@@ -8517,10 +8575,12 @@
                           staticType: null
                           token: int @44
                         type: int
-                    leftBracket: < @0
-                    rightBracket: > @0
-                spreadOperator: ...? @0
+                    leftBracket: < @38
+                    rightBracket: > @47
+                spreadOperator: ...? @34
             isMap: true
+            leftBracket: { @33
+            rightBracket: } @54
             staticType: Map<int, int>
             typeArguments: TypeArgumentList
               arguments
@@ -8536,8 +8596,8 @@
                     staticType: null
                     token: int @29
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @23
+              rightBracket: > @32
     accessors
       synthetic static get x @13
         returnType: Object
@@ -8581,8 +8641,8 @@
                     staticType: null
                     token: int @30
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @29
+              rightBracket: > @33
     accessors
       synthetic static get b @24
         returnType: int
@@ -8622,7 +8682,7 @@
                   SimpleIdentifier
                     staticElement: self::@function::foo
                     staticType: int Function()
-                    token: foo @-1
+                    token: foo @40
         accessors
           synthetic get x @18
             returnType: dynamic
@@ -8655,11 +8715,11 @@
                 constantInitializer
                   BinaryExpression
                     leftOperand: IntegerLiteral
-                      literal: 1 @0
+                      literal: 1 @40
                       staticType: int
-                    operator: + @0
+                    operator: + @42
                     rightOperand: IntegerLiteral
-                      literal: 2 @0
+                      literal: 2 @44
                       staticType: int
                     staticElement: dart:core::@class::num::@method::+
                     staticInvokeType: null
@@ -8693,11 +8753,11 @@
                 constantInitializer
                   BinaryExpression
                     leftOperand: IntegerLiteral
-                      literal: 1 @0
+                      literal: 1 @41
                       staticType: int
-                    operator: + @0
+                    operator: + @43
                     rightOperand: IntegerLiteral
-                      literal: 2 @0
+                      literal: 2 @45
                       staticType: int
                     staticElement: dart:core::@class::num::@method::+
                     staticInvokeType: null
@@ -8734,11 +8794,11 @@
                 constantInitializer
                   BinaryExpression
                     leftOperand: IntegerLiteral
-                      literal: 1 @0
+                      literal: 1 @36
                       staticType: int
-                    operator: + @0
+                    operator: + @38
                     rightOperand: IntegerLiteral
-                      literal: 2 @0
+                      literal: 2 @40
                       staticType: int
                     staticElement: dart:core::@class::num::@method::+
                     staticInvokeType: null
@@ -8752,11 +8812,11 @@
                 constantInitializer
                   BinaryExpression
                     leftOperand: IntegerLiteral
-                      literal: 1 @0
+                      literal: 1 @65
                       staticType: int
-                    operator: + @0
+                    operator: + @67
                     rightOperand: IntegerLiteral
-                      literal: 2 @0
+                      literal: 2 @69
                       staticType: int
                     staticElement: dart:core::@class::num::@method::+
                     staticInvokeType: null
@@ -8769,11 +8829,11 @@
                 constantInitializer
                   BinaryExpression
                     leftOperand: IntegerLiteral
-                      literal: 1 @0
+                      literal: 1 @103
                       staticType: int
-                    operator: + @0
+                    operator: + @105
                     rightOperand: IntegerLiteral
-                      literal: 2 @0
+                      literal: 2 @107
                       staticType: int
                     staticElement: dart:core::@class::num::@method::+
                     staticInvokeType: null
@@ -8791,11 +8851,11 @@
                 constantInitializer
                   BinaryExpression
                     leftOperand: IntegerLiteral
-                      literal: 1 @0
+                      literal: 1 @183
                       staticType: int
-                    operator: + @0
+                    operator: + @185
                     rightOperand: IntegerLiteral
-                      literal: 2 @0
+                      literal: 2 @187
                       staticType: int
                     staticElement: dart:core::@class::num::@method::+
                     staticInvokeType: null
@@ -8832,7 +8892,7 @@
               staticElement: <null>
               staticType: null
               token: a @23
-            operator: ++ @0
+            operator: ++ @24
             readElement: self::@getter::a
             readType: int
             staticElement: dart:core::@class::num::@method::+
@@ -8870,7 +8930,7 @@
               staticElement: self::@getter::a
               staticType: int?
               token: a @28
-            operator: ! @0
+            operator: ! @29
             staticElement: <null>
             staticType: int
     accessors
@@ -9021,7 +9081,7 @@
               staticElement: self::@class::C::@getter::F
               staticType: int
               token: F @51
-            period: . @0
+            period: . @50
             prefix: SimpleIdentifier
               staticElement: self::@class::C
               staticType: null
@@ -9058,7 +9118,7 @@
               staticElement: a.dart::@class::C::@getter::F
               staticType: int
               token: F @29
-            period: . @0
+            period: . @28
             prefix: SimpleIdentifier
               staticElement: a.dart::@class::C
               staticType: null
@@ -9091,7 +9151,7 @@
         type: int
         constantInitializer
           PropertyAccess
-            operator: . @0
+            operator: . @35
             propertyName: SimpleIdentifier
               staticElement: a.dart::@class::C::@getter::F
               staticType: int
@@ -9102,7 +9162,7 @@
                 staticElement: a.dart::@class::C
                 staticType: null
                 token: C @34
-              period: . @0
+              period: . @33
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::p
                 staticType: null
@@ -9146,7 +9206,7 @@
               staticElement: self::@class::C::@method::m
               staticType: int Function(int, String)
               token: m @63
-            period: . @0
+            period: . @62
             prefix: SimpleIdentifier
               staticElement: self::@class::C
               staticType: null
@@ -9183,7 +9243,7 @@
               staticElement: a.dart::@class::C::@method::m
               staticType: int Function(int, String)
               token: m @29
-            period: . @0
+            period: . @28
             prefix: SimpleIdentifier
               staticElement: a.dart::@class::C
               staticType: null
@@ -9216,7 +9276,7 @@
         type: int Function(int, String)
         constantInitializer
           PropertyAccess
-            operator: . @0
+            operator: . @35
             propertyName: SimpleIdentifier
               staticElement: a.dart::@class::C::@method::m
               staticType: int Function(int, String)
@@ -9227,7 +9287,7 @@
                 staticElement: a.dart::@class::C
                 staticType: null
                 token: C @34
-              period: . @0
+              period: . @33
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::p
                 staticType: null
@@ -9270,7 +9330,7 @@
               staticElement: self::@extension::E::@method::f
               staticType: void Function()
               token: f @65
-            period: . @0
+            period: . @64
             prefix: SimpleIdentifier
               staticElement: self::@extension::E
               staticType: null
@@ -9388,7 +9448,7 @@
               staticElement: a.dart::@function::foo
               staticType: dynamic Function()
               token: foo @34
-            period: . @0
+            period: . @33
             prefix: SimpleIdentifier
               staticElement: self::@prefix::p
               staticType: null
@@ -9424,7 +9484,7 @@
               staticElement: self::@getter::A
               staticType: int
               token: A @23
-            operator: + @0
+            operator: + @25
             rightOperand: IntegerLiteral
               literal: 2 @27
               staticType: int
@@ -9461,7 +9521,7 @@
               staticElement: a.dart::@getter::A
               staticType: int
               token: A @27
-            operator: + @0
+            operator: + @29
             rightOperand: IntegerLiteral
               literal: 2 @31
               staticType: int
@@ -9497,14 +9557,14 @@
                 staticElement: a.dart::@getter::A
                 staticType: int
                 token: A @34
-              period: . @0
+              period: . @33
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::p
                 staticType: null
                 token: p @32
               staticElement: a.dart::@getter::A
               staticType: int
-            operator: + @0
+            operator: + @36
             rightOperand: IntegerLiteral
               literal: 2 @38
               staticType: int
@@ -9752,7 +9812,7 @@
               staticElement: a.dart::@class::C
               staticType: Type
               token: C @39
-            period: . @0
+            period: . @38
             prefix: SimpleIdentifier
               staticElement: self::@prefix::p
               staticType: null
@@ -9767,7 +9827,7 @@
               staticElement: a.dart::@enum::E
               staticType: Type
               token: E @58
-            period: . @0
+            period: . @57
             prefix: SimpleIdentifier
               staticElement: self::@prefix::p
               staticType: null
@@ -9782,7 +9842,7 @@
               staticElement: a.dart::@typeAlias::F
               staticType: Type
               token: F @90
-            period: . @0
+            period: . @89
             prefix: SimpleIdentifier
               staticElement: self::@prefix::p
               staticType: null
@@ -9866,7 +9926,7 @@
               staticElement: <null>
               staticType: dynamic
               token: foo @23
-            period: . @0
+            period: . @22
             prefix: SimpleIdentifier
               staticElement: self::@class::C
               staticType: null
@@ -9897,7 +9957,7 @@
         type: dynamic
         constantInitializer
           PropertyAccess
-            operator: . @0
+            operator: . @37
             propertyName: SimpleIdentifier
               staticElement: <null>
               staticType: dynamic
@@ -9908,7 +9968,7 @@
                 staticElement: foo.dart::@class::C
                 staticType: null
                 token: C @36
-              period: . @0
+              period: . @35
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::p
                 staticType: null
@@ -9933,7 +9993,7 @@
         type: Object
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @17
             elements
               IfElement
                 condition: BooleanLiteral
@@ -9943,6 +10003,8 @@
                   literal: 1 @39
                   staticType: int
             isMap: false
+            leftBracket: { @28
+            rightBracket: } @40
             staticType: Set<int>
             typeArguments: TypeArgumentList
               arguments
@@ -9952,8 +10014,8 @@
                     staticType: null
                     token: int @24
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @23
+              rightBracket: > @27
     accessors
       synthetic static get x @13
         returnType: Object
@@ -9986,12 +10048,14 @@
         type: Object
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @17
             elements
               IntegerLiteral
                 literal: 1 @24
                 staticType: int
             isMap: false
+            leftBracket: { @23
+            rightBracket: } @25
             staticType: Set<int>
     accessors
       synthetic static get x @13
@@ -10011,15 +10075,17 @@
         type: Object
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @17
             elements
               SpreadElement
-                expressions: SetOrMapLiteral
+                expression: SetOrMapLiteral
                   elements
                     IntegerLiteral
                       literal: 1 @38
                       staticType: int
                   isMap: false
+                  leftBracket: { @37
+                  rightBracket: } @39
                   staticType: Set<int>
                   typeArguments: TypeArgumentList
                     arguments
@@ -10029,10 +10095,12 @@
                           staticType: null
                           token: int @33
                         type: int
-                    leftBracket: < @0
-                    rightBracket: > @0
-                spreadOperator: ... @0
+                    leftBracket: < @32
+                    rightBracket: > @36
+                spreadOperator: ... @29
             isMap: false
+            leftBracket: { @28
+            rightBracket: } @40
             staticType: Set<int>
             typeArguments: TypeArgumentList
               arguments
@@ -10042,8 +10110,8 @@
                     staticType: null
                     token: int @24
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @23
+              rightBracket: > @27
     accessors
       synthetic static get x @13
         returnType: Object
@@ -10062,15 +10130,17 @@
         type: Object
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @17
             elements
               SpreadElement
-                expressions: SetOrMapLiteral
+                expression: SetOrMapLiteral
                   elements
                     IntegerLiteral
                       literal: 1 @39
                       staticType: int
                   isMap: false
+                  leftBracket: { @38
+                  rightBracket: } @40
                   staticType: Set<int>
                   typeArguments: TypeArgumentList
                     arguments
@@ -10080,10 +10150,12 @@
                           staticType: null
                           token: int @34
                         type: int
-                    leftBracket: < @0
-                    rightBracket: > @0
-                spreadOperator: ...? @0
+                    leftBracket: < @33
+                    rightBracket: > @37
+                spreadOperator: ...? @29
             isMap: false
+            leftBracket: { @28
+            rightBracket: } @41
             staticType: Set<int>
             typeArguments: TypeArgumentList
               arguments
@@ -10093,8 +10165,8 @@
                     staticType: null
                     token: int @24
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @23
+              rightBracket: > @27
     accessors
       synthetic static get x @13
         returnType: Object
@@ -10133,7 +10205,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @15
               staticType: int
-            operator: == @0
+            operator: == @17
             rightOperand: IntegerLiteral
               literal: 2 @20
               staticType: int
@@ -10147,7 +10219,7 @@
             leftOperand: BooleanLiteral
               literal: true @36
               staticType: bool
-            operator: && @0
+            operator: && @41
             rightOperand: BooleanLiteral
               literal: false @44
               staticType: bool
@@ -10161,7 +10233,7 @@
             leftOperand: BooleanLiteral
               literal: false @63
               staticType: bool
-            operator: || @0
+            operator: || @69
             rightOperand: BooleanLiteral
               literal: true @72
               staticType: bool
@@ -10175,7 +10247,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @94
               staticType: int
-            operator: ^ @0
+            operator: ^ @96
             rightOperand: IntegerLiteral
               literal: 2 @98
               staticType: int
@@ -10189,7 +10261,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @117
               staticType: int
-            operator: & @0
+            operator: & @119
             rightOperand: IntegerLiteral
               literal: 2 @121
               staticType: int
@@ -10203,7 +10275,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @139
               staticType: int
-            operator: | @0
+            operator: | @141
             rightOperand: IntegerLiteral
               literal: 2 @143
               staticType: int
@@ -10217,7 +10289,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @168
               staticType: int
-            operator: << @0
+            operator: << @170
             rightOperand: IntegerLiteral
               literal: 2 @173
               staticType: int
@@ -10231,7 +10303,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @199
               staticType: int
-            operator: >> @0
+            operator: >> @201
             rightOperand: IntegerLiteral
               literal: 2 @204
               staticType: int
@@ -10245,7 +10317,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @220
               staticType: int
-            operator: + @0
+            operator: + @222
             rightOperand: IntegerLiteral
               literal: 2 @224
               staticType: int
@@ -10259,7 +10331,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @245
               staticType: int
-            operator: - @0
+            operator: - @247
             rightOperand: IntegerLiteral
               literal: 2 @249
               staticType: int
@@ -10273,7 +10345,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @270
               staticType: int
-            operator: * @0
+            operator: * @272
             rightOperand: IntegerLiteral
               literal: 2 @274
               staticType: int
@@ -10287,7 +10359,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @293
               staticType: int
-            operator: / @0
+            operator: / @295
             rightOperand: IntegerLiteral
               literal: 2 @297
               staticType: int
@@ -10301,7 +10373,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @321
               staticType: int
-            operator: ~/ @0
+            operator: ~/ @323
             rightOperand: IntegerLiteral
               literal: 2 @326
               staticType: int
@@ -10315,7 +10387,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @345
               staticType: int
-            operator: % @0
+            operator: % @347
             rightOperand: IntegerLiteral
               literal: 2 @349
               staticType: int
@@ -10329,7 +10401,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @369
               staticType: int
-            operator: > @0
+            operator: > @371
             rightOperand: IntegerLiteral
               literal: 2 @373
               staticType: int
@@ -10343,7 +10415,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @398
               staticType: int
-            operator: >= @0
+            operator: >= @400
             rightOperand: IntegerLiteral
               literal: 2 @403
               staticType: int
@@ -10357,7 +10429,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @420
               staticType: int
-            operator: < @0
+            operator: < @422
             rightOperand: IntegerLiteral
               literal: 2 @424
               staticType: int
@@ -10371,7 +10443,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @446
               staticType: int
-            operator: <= @0
+            operator: <= @448
             rightOperand: IntegerLiteral
               literal: 2 @451
               staticType: int
@@ -10430,13 +10502,13 @@
         type: int
         constantInitializer
           ConditionalExpression
-            colon: : @0
+            colon: : @35
             condition: ParenthesizedExpression
               expression: BinaryExpression
                 leftOperand: IntegerLiteral
                   literal: 1 @22
                   staticType: int
-                operator: == @0
+                operator: == @24
                 rightOperand: IntegerLiteral
                   literal: 2 @27
                   staticType: int
@@ -10449,7 +10521,7 @@
             elseExpression: IntegerLiteral
               literal: 22 @37
               staticType: int
-            question: ? @0
+            question: ? @30
             staticType: int
             thenExpression: IntegerLiteral
               literal: 11 @32
@@ -10472,13 +10544,13 @@
         type: int
         constantInitializer
           ConditionalExpression
-            colon: : @0
+            colon: : @33
             condition: ParenthesizedExpression
               expression: BinaryExpression
                 leftOperand: IntegerLiteral
                   literal: 1 @20
                   staticType: int
-                operator: == @0
+                operator: == @22
                 rightOperand: IntegerLiteral
                   literal: 2 @25
                   staticType: int
@@ -10491,7 +10563,7 @@
             elseExpression: IntegerLiteral
               literal: 22 @35
               staticType: int
-            question: ? @0
+            question: ? @28
             staticType: int
             thenExpression: IntegerLiteral
               literal: 11 @30
@@ -10517,7 +10589,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @16
               staticType: int
-            operator: ?? @0
+            operator: ?? @18
             rightOperand: DoubleLiteral
               literal: 2.0 @21
               staticType: double
@@ -10554,7 +10626,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @14
             staticType: null
       static const vBoolFalse @26
         type: bool
@@ -10710,7 +10782,7 @@
           ListLiteral
             elements
               PropertyAccess
-                operator: ?. @0
+                operator: ?. @49
                 propertyName: SimpleIdentifier
                   staticElement: dart:core::@class::String::@getter::length
                   staticType: int
@@ -10720,8 +10792,8 @@
                   staticElement: self::@getter::a
                   staticType: String?
                   token: a @48
-            leftBracket: [ @0
-            rightBracket: ] @0
+            leftBracket: [ @44
+            rightBracket: ] @59
             staticType: List<int?>
     accessors
       synthetic static get a @14
@@ -10750,7 +10822,7 @@
                 leftOperand: IntegerLiteral
                   literal: 1 @16
                   staticType: int
-                operator: + @0
+                operator: + @18
                 rightOperand: IntegerLiteral
                   literal: 2 @20
                   staticType: int
@@ -10760,7 +10832,7 @@
               leftParenthesis: ( @15
               rightParenthesis: ) @21
               staticType: int
-            operator: * @0
+            operator: * @23
             rightOperand: IntegerLiteral
               literal: 3 @25
               staticType: int
@@ -10776,7 +10848,7 @@
                 leftOperand: IntegerLiteral
                   literal: 1 @45
                   staticType: int
-                operator: + @0
+                operator: + @47
                 rightOperand: IntegerLiteral
                   literal: 2 @49
                   staticType: int
@@ -10793,7 +10865,7 @@
         type: int
         constantInitializer
           PropertyAccess
-            operator: . @0
+            operator: . @83
             propertyName: SimpleIdentifier
               staticElement: dart:core::@class::String::@getter::length
               staticType: int
@@ -10803,7 +10875,7 @@
               expression: BinaryExpression
                 leftOperand: SimpleStringLiteral
                   literal: 'aaa' @69
-                operator: + @0
+                operator: + @75
                 rightOperand: SimpleStringLiteral
                   literal: 'bbb' @77
                 staticElement: dart:core::@class::String::@method::+
@@ -10840,7 +10912,7 @@
             leftOperand: IntegerLiteral
               literal: 1 @18
               staticType: int
-            operator: != @0
+            operator: != @20
             rightOperand: IntegerLiteral
               literal: 2 @23
               staticType: int
@@ -10902,7 +10974,7 @@
         constantInitializer
           SuperExpression
             staticType: dynamic
-            superKeyword: super @0
+            superKeyword: super @15
     accessors
       synthetic static get vSuper @6
         returnType: dynamic
@@ -10922,7 +10994,7 @@
         constantInitializer
           ThisExpression
             staticType: dynamic
-            thisKeyword: this @0
+            thisKeyword: this @14
     accessors
       synthetic static get vThis @6
         returnType: dynamic
@@ -10991,9 +11063,9 @@
         type: List<Null>
         constantInitializer
           ListLiteral
-            constKeyword: const @0
-            leftBracket: [ @0
-            rightBracket: ] @0
+            constKeyword: const @14
+            leftBracket: [ @26
+            rightBracket: ] @27
             staticType: List<Null>
             typeArguments: TypeArgumentList
               arguments
@@ -11003,13 +11075,13 @@
                     staticType: null
                     token: Null @21
                   type: Null
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @20
+              rightBracket: > @25
       static const vDynamic @36
         type: List<dynamic>
         constantInitializer
           ListLiteral
-            constKeyword: const @0
+            constKeyword: const @47
             elements
               IntegerLiteral
                 literal: 1 @63
@@ -11020,8 +11092,8 @@
               IntegerLiteral
                 literal: 3 @69
                 staticType: int
-            leftBracket: [ @0
-            rightBracket: ] @0
+            leftBracket: [ @62
+            rightBracket: ] @70
             staticType: List<dynamic>
             typeArguments: TypeArgumentList
               arguments
@@ -11031,13 +11103,13 @@
                     staticType: null
                     token: dynamic @54
                   type: dynamic
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @53
+              rightBracket: > @61
       static const vInterfaceNoTypeParameters @79
         type: List<int>
         constantInitializer
           ListLiteral
-            constKeyword: const @0
+            constKeyword: const @108
             elements
               IntegerLiteral
                 literal: 1 @120
@@ -11048,8 +11120,8 @@
               IntegerLiteral
                 literal: 3 @126
                 staticType: int
-            leftBracket: [ @0
-            rightBracket: ] @0
+            leftBracket: [ @119
+            rightBracket: ] @127
             staticType: List<int>
             typeArguments: TypeArgumentList
               arguments
@@ -11059,15 +11131,15 @@
                     staticType: null
                     token: int @115
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @114
+              rightBracket: > @118
       static const vInterfaceNoTypeArguments @136
         type: List<List<dynamic>>
         constantInitializer
           ListLiteral
-            constKeyword: const @0
-            leftBracket: [ @0
-            rightBracket: ] @0
+            constKeyword: const @164
+            leftBracket: [ @176
+            rightBracket: ] @177
             staticType: List<List<dynamic>>
             typeArguments: TypeArgumentList
               arguments
@@ -11077,15 +11149,15 @@
                     staticType: null
                     token: List @171
                   type: List<dynamic>
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @170
+              rightBracket: > @175
       static const vInterfaceWithTypeArguments @186
         type: List<List<String>>
         constantInitializer
           ListLiteral
-            constKeyword: const @0
-            leftBracket: [ @0
-            rightBracket: ] @0
+            constKeyword: const @216
+            leftBracket: [ @236
+            rightBracket: ] @237
             staticType: List<List<String>>
             typeArguments: TypeArgumentList
               arguments
@@ -11103,17 +11175,17 @@
                           staticType: null
                           token: String @228
                         type: String
-                    leftBracket: < @0
-                    rightBracket: > @0
-              leftBracket: < @0
-              rightBracket: > @0
+                    leftBracket: < @227
+                    rightBracket: > @234
+              leftBracket: < @222
+              rightBracket: > @235
       static const vInterfaceWithTypeArguments2 @246
         type: List<Map<int, List<String>>>
         constantInitializer
           ListLiteral
-            constKeyword: const @0
-            leftBracket: [ @0
-            rightBracket: ] @0
+            constKeyword: const @277
+            leftBracket: [ @307
+            rightBracket: ] @308
             staticType: List<Map<int, List<String>>>
             typeArguments: TypeArgumentList
               arguments
@@ -11145,12 +11217,12 @@
                                 staticType: null
                                 token: String @298
                               type: String
-                          leftBracket: < @0
-                          rightBracket: > @0
-                    leftBracket: < @0
-                    rightBracket: > @0
-              leftBracket: < @0
-              rightBracket: > @0
+                          leftBracket: < @297
+                          rightBracket: > @304
+                    leftBracket: < @287
+                    rightBracket: > @305
+              leftBracket: < @283
+              rightBracket: > @306
     accessors
       synthetic static get vNull @6
         returnType: List<Null>
@@ -11183,9 +11255,9 @@
         type: List<C>
         constantInitializer
           ListLiteral
-            constKeyword: const @0
-            leftBracket: [ @0
-            rightBracket: ] @0
+            constKeyword: const @27
+            leftBracket: [ @36
+            rightBracket: ] @37
             staticType: List<C>
             typeArguments: TypeArgumentList
               arguments
@@ -11195,8 +11267,8 @@
                     staticType: null
                     token: C @34
                   type: C
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @33
+              rightBracket: > @35
     accessors
       synthetic static get v @23
         returnType: List<C>
@@ -11219,9 +11291,9 @@
         type: List<C>
         constantInitializer
           ListLiteral
-            constKeyword: const @0
-            leftBracket: [ @0
-            rightBracket: ] @0
+            constKeyword: const @32
+            leftBracket: [ @43
+            rightBracket: ] @44
             staticType: List<C>
             typeArguments: TypeArgumentList
               arguments
@@ -11231,7 +11303,7 @@
                       staticElement: a.dart::@class::C
                       staticType: null
                       token: C @41
-                    period: . @0
+                    period: . @40
                     prefix: SimpleIdentifier
                       staticElement: self::@prefix::p
                       staticType: null
@@ -11239,8 +11311,8 @@
                     staticElement: a.dart::@class::C
                     staticType: null
                   type: C
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @38
+              rightBracket: > @42
     accessors
       synthetic static get v @28
         returnType: List<C>
@@ -11268,9 +11340,9 @@
         type: List<int Function(String)>
         constantInitializer
           ListLiteral
-            constKeyword: const @0
-            leftBracket: [ @0
-            rightBracket: ] @0
+            constKeyword: const @36
+            leftBracket: [ @45
+            rightBracket: ] @46
             staticType: List<int Function(String)>
             typeArguments: TypeArgumentList
               arguments
@@ -11280,8 +11352,8 @@
                     staticType: null
                     token: F @43
                   type: int Function(String)
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @42
+              rightBracket: > @44
     accessors
       synthetic static get v @32
         returnType: List<int Function(String)>
@@ -11303,8 +11375,10 @@
         type: Map<dynamic, int>
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @18
             isMap: true
+            leftBracket: { @38
+            rightBracket: } @39
             staticType: Map<dynamic, int>
             typeArguments: TypeArgumentList
               arguments
@@ -11320,14 +11394,16 @@
                     staticType: null
                     token: int @34
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @24
+              rightBracket: > @37
       static const vDynamic2 @48
         type: Map<int, dynamic>
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @60
             isMap: true
+            leftBracket: { @80
+            rightBracket: } @81
             staticType: Map<int, dynamic>
             typeArguments: TypeArgumentList
               arguments
@@ -11343,14 +11419,16 @@
                     staticType: null
                     token: dynamic @72
                   type: dynamic
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @66
+              rightBracket: > @79
       static const vInterface @90
         type: Map<int, String>
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @103
             isMap: true
+            leftBracket: { @122
+            rightBracket: } @123
             staticType: Map<int, String>
             typeArguments: TypeArgumentList
               arguments
@@ -11366,14 +11444,16 @@
                     staticType: null
                     token: String @115
                   type: String
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @109
+              rightBracket: > @121
       static const vInterfaceWithTypeArguments @132
         type: Map<int, List<String>>
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @162
             isMap: true
+            leftBracket: { @187
+            rightBracket: } @188
             staticType: Map<int, List<String>>
             typeArguments: TypeArgumentList
               arguments
@@ -11397,10 +11477,10 @@
                           staticType: null
                           token: String @179
                         type: String
-                    leftBracket: < @0
-                    rightBracket: > @0
-              leftBracket: < @0
-              rightBracket: > @0
+                    leftBracket: < @178
+                    rightBracket: > @185
+              leftBracket: < @168
+              rightBracket: > @186
     accessors
       synthetic static get vDynamic1 @6
         returnType: Map<dynamic, int>
@@ -11427,8 +11507,10 @@
         type: Set<dynamic>
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @18
             isMap: false
+            leftBracket: { @33
+            rightBracket: } @34
             staticType: Set<dynamic>
             typeArguments: TypeArgumentList
               arguments
@@ -11438,14 +11520,16 @@
                     staticType: null
                     token: dynamic @25
                   type: dynamic
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @24
+              rightBracket: > @32
       static const vInterface @43
         type: Set<int>
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @56
             isMap: false
+            leftBracket: { @67
+            rightBracket: } @68
             staticType: Set<int>
             typeArguments: TypeArgumentList
               arguments
@@ -11455,14 +11539,16 @@
                     staticType: null
                     token: int @63
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @62
+              rightBracket: > @66
       static const vInterfaceWithTypeArguments @77
         type: Set<List<String>>
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @107
             isMap: false
+            leftBracket: { @127
+            rightBracket: } @128
             staticType: Set<List<String>>
             typeArguments: TypeArgumentList
               arguments
@@ -11480,10 +11566,10 @@
                           staticType: null
                           token: String @119
                         type: String
-                    leftBracket: < @0
-                    rightBracket: > @0
-              leftBracket: < @0
-              rightBracket: > @0
+                    leftBracket: < @118
+                    rightBracket: > @125
+              leftBracket: < @113
+              rightBracket: > @126
     accessors
       synthetic static get vDynamic1 @6
         returnType: Set<dynamic>
@@ -11506,7 +11592,7 @@
         type: List<int>
         constantInitializer
           ListLiteral
-            constKeyword: const @0
+            constKeyword: const @10
             elements
               IntegerLiteral
                 literal: 1 @17
@@ -11517,8 +11603,8 @@
               IntegerLiteral
                 literal: 3 @23
                 staticType: int
-            leftBracket: [ @0
-            rightBracket: ] @0
+            leftBracket: [ @16
+            rightBracket: ] @24
             staticType: List<int>
     accessors
       synthetic static get v @6
@@ -11538,7 +11624,7 @@
         type: Map<int, String>
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @10
             elements
               SetOrMapLiteral
                 key: IntegerLiteral
@@ -11559,6 +11645,8 @@
                 value: SimpleStringLiteral
                   literal: 'ccc' @40
             isMap: true
+            leftBracket: { @16
+            rightBracket: } @45
             staticType: Map<int, String>
     accessors
       synthetic static get v @6
@@ -11578,7 +11666,7 @@
         type: Set<int>
         constantInitializer
           SetOrMapLiteral
-            constKeyword: const @0
+            constKeyword: const @10
             elements
               IntegerLiteral
                 literal: 0 @17
@@ -11590,6 +11678,8 @@
                 literal: 2 @23
                 staticType: int
             isMap: false
+            leftBracket: { @16
+            rightBracket: } @24
             staticType: Set<int>
     accessors
       synthetic static get v @6
@@ -11711,7 +11801,7 @@
             type: dynamic
             constantInitializer
               NullLiteral
-                literal: null @0
+                literal: null @51
                 staticType: null
         constructors
           synthetic @-1
@@ -11791,18 +11881,21 @@
                 type: int
             constantInitializers
               AssertInitializer
+                assertKeyword: assert @29
                 condition: BinaryExpression
                   leftOperand: SimpleIdentifier
                     staticElement: x@24
                     staticType: int
-                    token: x @-1
-                  operator: >= @0
+                    token: x @36
+                  operator: >= @38
                   rightOperand: IntegerLiteral
-                    literal: 42 @0
+                    literal: 42 @41
                     staticType: int
                   staticElement: dart:core::@class::num::@method::>=
                   staticInvokeType: null
                   staticType: bool
+                leftParenthesis: ( @35
+                rightParenthesis: ) @43
 ''');
   }
 
@@ -11824,20 +11917,23 @@
                 type: int
             constantInitializers
               AssertInitializer
+                assertKeyword: assert @29
                 condition: BinaryExpression
                   leftOperand: SimpleIdentifier
                     staticElement: x@24
                     staticType: int
-                    token: x @-1
-                  operator: >= @0
+                    token: x @36
+                  operator: >= @38
                   rightOperand: IntegerLiteral
-                    literal: 42 @0
+                    literal: 42 @41
                     staticType: int
                   staticElement: dart:core::@class::num::@method::>=
                   staticInvokeType: null
                   staticType: bool
+                leftParenthesis: ( @35
                 message: SimpleStringLiteral
-                  literal: 'foo' @0
+                  literal: 'foo' @45
+                rightParenthesis: ) @50
 ''');
   }
 
@@ -11860,14 +11956,14 @@
           const @29
             constantInitializers
               ConstructorFieldInitializer
-                equals: = @0
+                equals: = @37
                 expression: IntegerLiteral
-                  literal: 42 @0
+                  literal: 42 @39
                   staticType: int
                 fieldName: SimpleIdentifier
                   staticElement: self::@class::C::@field::x
                   staticType: null
-                  token: x @-1
+                  token: x @35
         accessors
           synthetic get x @18
             returnType: dynamic
@@ -11895,21 +11991,21 @@
           const @29
             constantInitializers
               ConstructorFieldInitializer
-                equals: = @0
+                equals: = @37
                 expression: MethodInvocation
                   argumentList: ArgumentList
-                    leftParenthesis: ( @0
-                    rightParenthesis: ) @0
+                    leftParenthesis: ( @42
+                    rightParenthesis: ) @43
                   methodName: SimpleIdentifier
                     staticElement: self::@function::foo
                     staticType: int Function()
-                    token: foo @-1
+                    token: foo @39
                   staticInvokeType: int Function()
                   staticType: int
                 fieldName: SimpleIdentifier
                   staticElement: self::@class::C::@field::x
                   staticType: null
-                  token: x @-1
+                  token: x @35
         accessors
           synthetic get x @18
             returnType: dynamic
@@ -11941,19 +12037,19 @@
                 type: int
                 constantInitializer
                   IntegerLiteral
-                    literal: 0 @0
+                    literal: 0 @45
                     staticType: int
             constantInitializers
               ConstructorFieldInitializer
-                equals: = @0
+                equals: = @54
                 expression: SimpleIdentifier
                   staticElement: self::@class::A::@constructor::•::@parameter::f
                   staticType: int
-                  token: f @-1
+                  token: f @56
                 fieldName: SimpleIdentifier
                   staticElement: self::@class::A::@field::_f
                   staticType: null
-                  token: _f @-1
+                  token: _f @51
         accessors
           synthetic get _f @22
             returnType: int
@@ -11982,23 +12078,23 @@
                 type: int
             constantInitializers
               ConstructorFieldInitializer
-                equals: = @0
+                equals: = @42
                 expression: BinaryExpression
                   leftOperand: IntegerLiteral
-                    literal: 1 @0
+                    literal: 1 @44
                     staticType: int
-                  operator: + @0
+                  operator: + @46
                   rightOperand: SimpleIdentifier
                     staticElement: p@35
                     staticType: int
-                    token: p @-1
+                    token: p @48
                   staticElement: dart:core::@class::num::@method::+
                   staticInvokeType: null
                   staticType: int
                 fieldName: SimpleIdentifier
                   staticElement: self::@class::C::@field::x
                   staticType: null
-                  token: x @-1
+                  token: x @40
         accessors
           synthetic get x @18
             returnType: dynamic
@@ -12041,8 +12137,8 @@
                   arguments
                     InstanceCreationExpression
                       argumentList: ArgumentList
-                        leftParenthesis: ( @0
-                        rightParenthesis: ) @0
+                        leftParenthesis: ( @97
+                        rightParenthesis: ) @98
                       constructorName: ConstructorName
                         staticElement: ConstructorMember
                           base: self::@class::A::@constructor::•
@@ -12051,7 +12147,7 @@
                           name: SimpleIdentifier
                             staticElement: self::@class::A
                             staticType: null
-                            token: A @-1
+                            token: A @84
                           type: A<dynamic Function()>
                           typeArguments: TypeArgumentList
                             arguments
@@ -12063,12 +12159,13 @@
                                 functionKeyword: Function @0
                                 parameters: FormalParameterList
                                 type: dynamic Function()
-                            leftBracket: < @0
-                            rightBracket: > @0
+                            leftBracket: < @85
+                            rightBracket: > @96
                       staticType: A<dynamic Function()>
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
+                  leftParenthesis: ( @83
+                  rightParenthesis: ) @99
                 staticElement: self::@class::B::@constructor::•
+                thisKeyword: this @79
             redirectedConstructor: self::@class::B::@constructor::•
 ''');
   }
@@ -12101,13 +12198,14 @@
                 argumentList: ArgumentList
                   arguments
                     ListLiteral
-                      constKeyword: const @0
-                      leftBracket: [ @0
-                      rightBracket: ] @0
+                      constKeyword: const @84
+                      leftBracket: [ @90
+                      rightBracket: ] @91
                       staticType: List<String>
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
+                  leftParenthesis: ( @83
+                  rightParenthesis: ) @92
                 staticElement: self::@class::A::@constructor::•
+                superKeyword: super @78
 ''');
   }
 
@@ -12141,15 +12239,17 @@
                 argumentList: ArgumentList
                   arguments
                     IntegerLiteral
-                      literal: 42 @0
+                      literal: 42 @78
                       staticType: int
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
+                  leftParenthesis: ( @77
+                  rightParenthesis: ) @80
                 constructorName: SimpleIdentifier
                   staticElement: self::@class::A::@constructor::aaa
                   staticType: null
-                  token: aaa @-1
+                  token: aaa @74
+                period: . @73
                 staticElement: self::@class::A::@constructor::aaa
+                superKeyword: super @68
 ''');
   }
 
@@ -12178,13 +12278,15 @@
             constantInitializers
               SuperConstructorInvocation
                 argumentList: ArgumentList
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
+                  leftParenthesis: ( @68
+                  rightParenthesis: ) @69
                 constructorName: SimpleIdentifier
                   staticElement: self::@class::A::@constructor::_
                   staticType: null
-                  token: _ @-1
+                  token: _ @67
+                period: . @66
                 staticElement: self::@class::A::@constructor::_
+                superKeyword: super @61
 ''');
   }
 
@@ -12220,24 +12322,26 @@
                 argumentList: ArgumentList
                   arguments
                     IntegerLiteral
-                      literal: 1 @0
+                      literal: 1 @83
                       staticType: int
                     NamedExpression
                       name: Label
                         label: SimpleIdentifier
                           staticElement: self::@class::A::@constructor::aaa::@parameter::b
                           staticType: null
-                          token: b @-1
+                          token: b @86
                       expression: IntegerLiteral
-                        literal: 2 @0
+                        literal: 2 @89
                         staticType: int
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
+                  leftParenthesis: ( @82
+                  rightParenthesis: ) @90
                 constructorName: SimpleIdentifier
                   staticElement: self::@class::A::@constructor::aaa
                   staticType: null
-                  token: aaa @-1
+                  token: aaa @79
+                period: . @78
                 staticElement: self::@class::A::@constructor::aaa
+                superKeyword: super @73
 ''');
   }
 
@@ -12271,11 +12375,12 @@
                 argumentList: ArgumentList
                   arguments
                     IntegerLiteral
-                      literal: 42 @0
+                      literal: 42 @74
                       staticType: int
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
+                  leftParenthesis: ( @73
+                  rightParenthesis: ) @76
                 staticElement: self::@class::A::@constructor::•
+                superKeyword: super @68
 ''');
   }
 
@@ -12304,13 +12409,14 @@
                 argumentList: ArgumentList
                   arguments
                     ListLiteral
-                      constKeyword: const @0
-                      leftBracket: [ @0
-                      rightBracket: ] @0
+                      constKeyword: const @67
+                      leftBracket: [ @73
+                      rightBracket: ] @74
                       staticType: List<String>
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
+                  leftParenthesis: ( @66
+                  rightParenthesis: ) @75
                 staticElement: self::@class::A::@constructor::•
+                thisKeyword: this @62
             redirectedConstructor: self::@class::A::@constructor::•
 ''');
   }
@@ -12334,17 +12440,19 @@
                 argumentList: ArgumentList
                   arguments
                     IntegerLiteral
-                      literal: 1 @0
+                      literal: 1 @35
                       staticType: int
                     SimpleStringLiteral
-                      literal: 'bbb' @0
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
+                      literal: 'bbb' @38
+                  leftParenthesis: ( @34
+                  rightParenthesis: ) @43
                 constructorName: SimpleIdentifier
                   staticElement: self::@class::C::@constructor::named
                   staticType: null
-                  token: named @-1
+                  token: named @29
+                period: . @28
                 staticElement: self::@class::C::@constructor::named
+                thisKeyword: this @24
             redirectedConstructor: self::@class::C::@constructor::named
           const named @56
             periodOffset: 55
@@ -12376,24 +12484,26 @@
                 argumentList: ArgumentList
                   arguments
                     IntegerLiteral
-                      literal: 1 @0
+                      literal: 1 @35
                       staticType: int
                     NamedExpression
                       name: Label
                         label: SimpleIdentifier
                           staticElement: self::@class::C::@constructor::named::@parameter::b
                           staticType: null
-                          token: b @-1
+                          token: b @38
                       expression: IntegerLiteral
-                        literal: 2 @0
+                        literal: 2 @41
                         staticType: int
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
+                  leftParenthesis: ( @34
+                  rightParenthesis: ) @42
                 constructorName: SimpleIdentifier
                   staticElement: self::@class::C::@constructor::named
                   staticType: null
-                  token: named @-1
+                  token: named @29
+                period: . @28
                 staticElement: self::@class::C::@constructor::named
+                thisKeyword: this @24
             redirectedConstructor: self::@class::C::@constructor::named
           const named @55
             periodOffset: 54
@@ -12427,13 +12537,14 @@
                 argumentList: ArgumentList
                   arguments
                     IntegerLiteral
-                      literal: 1 @0
+                      literal: 1 @35
                       staticType: int
                     SimpleStringLiteral
-                      literal: 'bbb' @0
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
+                      literal: 'bbb' @38
+                  leftParenthesis: ( @34
+                  rightParenthesis: ) @43
                 staticElement: self::@class::C::@constructor::•
+                thisKeyword: this @30
             redirectedConstructor: self::@class::C::@constructor::•
           const @54
             parameters
@@ -13132,13 +13243,15 @@
             constantInitializers
               RedirectingConstructorInvocation
                 argumentList: ArgumentList
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
+                  leftParenthesis: ( @53
+                  rightParenthesis: ) @54
                 constructorName: SimpleIdentifier
                   staticElement: self::@class::C::@constructor::named
                   staticType: null
-                  token: named @-1
+                  token: named @48
+                period: . @47
                 staticElement: self::@class::C::@constructor::named
+                thisKeyword: this @43
             redirectedConstructor: self::@class::C::@constructor::named
 ''');
   }
@@ -13166,13 +13279,15 @@
             constantInitializers
               RedirectingConstructorInvocation
                 argumentList: ArgumentList
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
+                  leftParenthesis: ( @56
+                  rightParenthesis: ) @57
                 constructorName: SimpleIdentifier
                   staticElement: self::@class::C::@constructor::named
                   staticType: null
-                  token: named @-1
+                  token: named @51
+                period: . @50
                 staticElement: self::@class::C::@constructor::named
+                thisKeyword: this @46
             redirectedConstructor: self::@class::C::@constructor::named
 ''');
   }
@@ -13217,9 +13332,10 @@
             constantInitializers
               RedirectingConstructorInvocation
                 argumentList: ArgumentList
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
+                  leftParenthesis: ( @47
+                  rightParenthesis: ) @48
                 staticElement: self::@class::C::@constructor::•
+                thisKeyword: this @43
             redirectedConstructor: self::@class::C::@constructor::•
 ''');
   }
@@ -13247,9 +13363,10 @@
             constantInitializers
               RedirectingConstructorInvocation
                 argumentList: ArgumentList
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
+                  leftParenthesis: ( @50
+                  rightParenthesis: ) @51
                 staticElement: self::@class::C::@constructor::•
+                thisKeyword: this @46
             redirectedConstructor: self::@class::C::@constructor::•
 ''');
   }
@@ -13297,25 +13414,25 @@
           const @29
             constantInitializers
               ConstructorFieldInitializer
-                equals: = @0
+                equals: = @37
                 expression: InstanceCreationExpression
                   argumentList: ArgumentList
-                    leftParenthesis: ( @0
-                    rightParenthesis: ) @0
+                    leftParenthesis: ( @46
+                    rightParenthesis: ) @47
                   constructorName: ConstructorName
                     staticElement: self::@class::D::@constructor::•
                     type: TypeName
                       name: SimpleIdentifier
                         staticElement: self::@class::D
                         staticType: null
-                        token: D @-1
+                        token: D @45
                       type: D
-                  keyword: const @0
+                  keyword: const @39
                   staticType: D
                 fieldName: SimpleIdentifier
                   staticElement: self::@class::C::@field::x
                   staticType: null
-                  token: x @-1
+                  token: x @35
         accessors
           synthetic get x @18
             returnType: dynamic
@@ -13327,25 +13444,25 @@
           const @81
             constantInitializers
               ConstructorFieldInitializer
-                equals: = @0
+                equals: = @89
                 expression: InstanceCreationExpression
                   argumentList: ArgumentList
-                    leftParenthesis: ( @0
-                    rightParenthesis: ) @0
+                    leftParenthesis: ( @98
+                    rightParenthesis: ) @99
                   constructorName: ConstructorName
                     staticElement: self::@class::C::@constructor::•
                     type: TypeName
                       name: SimpleIdentifier
                         staticElement: self::@class::C
                         staticType: null
-                        token: C @-1
+                        token: C @97
                       type: C
-                  keyword: const @0
+                  keyword: const @91
                   staticType: C
                 fieldName: SimpleIdentifier
                   staticElement: self::@class::D::@field::x
                   staticType: null
-                  token: x @-1
+                  token: x @87
         accessors
           synthetic get x @70
             returnType: dynamic
@@ -13411,9 +13528,9 @@
                 type: List<T>
                 constantInitializer
                   ListLiteral
-                    constKeyword: const @0
-                    leftBracket: [ @0
-                    rightBracket: ] @0
+                    constKeyword: const @36
+                    leftBracket: [ @42
+                    rightBracket: ] @43
                     staticType: List<Never>
             returnType: dynamic
 ''');
@@ -13443,9 +13560,9 @@
                 type: List<T*>*
                 constantInitializer
                   ListLiteral
-                    constKeyword: const @0
-                    leftBracket: [ @0
-                    rightBracket: ] @0
+                    constKeyword: const @36
+                    leftBracket: [ @42
+                    rightBracket: ] @43
                     staticType: List<Null*>*
             returnType: dynamic
 ''');
@@ -13485,7 +13602,7 @@
                   SimpleIdentifier
                     staticElement: self::@function::defaultF
                     staticType: void Function(dynamic)
-                    token: defaultF @-1
+                    token: defaultF @93
         accessors
           synthetic get f @71
             returnType: void Function(dynamic)
@@ -13544,8 +13661,8 @@
                 constantInitializer
                   InstanceCreationExpression
                     argumentList: ArgumentList
-                      leftParenthesis: ( @0
-                      rightParenthesis: ) @0
+                      leftParenthesis: ( @72
+                      rightParenthesis: ) @73
                     constructorName: ConstructorName
                       staticElement: ConstructorMember
                         base: self::@class::A::@constructor::•
@@ -13554,7 +13671,7 @@
                         name: SimpleIdentifier
                           staticElement: self::@class::A
                           staticType: null
-                          token: A @-1
+                          token: A @59
                         type: A<dynamic Function()>
                         typeArguments: TypeArgumentList
                           arguments
@@ -13566,9 +13683,9 @@
                               functionKeyword: Function @0
                               parameters: FormalParameterList
                               type: dynamic Function()
-                          leftBracket: < @0
-                          rightBracket: > @0
-                    keyword: const @0
+                          leftBracket: < @60
+                          rightBracket: > @71
+                    keyword: const @53
                     staticType: A<dynamic Function()>
             returnType: void
 ''');
@@ -13629,12 +13746,12 @@
                     base: dart:core::@class::Comparable::@method::compare
                     substitution: {}
                   staticType: int* Function(Comparable<dynamic>*, Comparable<dynamic>*)*
-                  token: compare @-1
-                period: . @0
+                  token: compare @43
+                period: . @42
                 prefix: SimpleIdentifier
                   staticElement: dart:core::@class::Comparable
                   staticType: null
-                  token: Comparable @-1
+                  token: Comparable @32
                 staticElement: MethodMember
                   base: dart:core::@class::Comparable::@method::compare
                   substitution: {}
@@ -13672,7 +13789,7 @@
                   SimpleIdentifier
                     staticElement: self::@extension::E::@method::f
                     staticType: void Function()
-                    token: f @-1
+                    token: f @79
             returnType: void
 ''');
   }
@@ -13709,8 +13826,8 @@
                 constantInitializer
                   InstanceCreationExpression
                     argumentList: ArgumentList
-                      leftParenthesis: ( @0
-                      rightParenthesis: ) @0
+                      leftParenthesis: ( @81
+                      rightParenthesis: ) @82
                     constructorName: ConstructorName
                       staticElement: ConstructorMember
                         base: self::@class::B::@constructor::•
@@ -13719,9 +13836,9 @@
                         name: SimpleIdentifier
                           staticElement: self::@class::B
                           staticType: null
-                          token: B @-1
+                          token: B @80
                         type: B<int, double>
-                    keyword: const @0
+                    keyword: const @74
                     staticType: B<int, double>
             returnType: void
 ''');
@@ -13758,8 +13875,8 @@
                 constantInitializer
                   InstanceCreationExpression
                     argumentList: ArgumentList
-                      leftParenthesis: ( @0
-                      rightParenthesis: ) @0
+                      leftParenthesis: ( @68
+                      rightParenthesis: ) @69
                     constructorName: ConstructorName
                       staticElement: ConstructorMember
                         base: self::@class::B::@constructor::•
@@ -13768,9 +13885,9 @@
                         name: SimpleIdentifier
                           staticElement: self::@class::B
                           staticType: null
-                          token: B @-1
+                          token: B @67
                         type: B<Never>
-                    keyword: const @0
+                    keyword: const @61
                     staticType: B<Never>
 ''');
   }
@@ -13817,8 +13934,8 @@
                 constantInitializer
                   InstanceCreationExpression
                     argumentList: ArgumentList
-                      leftParenthesis: ( @0
-                      rightParenthesis: ) @0
+                      leftParenthesis: ( @133
+                      rightParenthesis: ) @134
                     constructorName: ConstructorName
                       staticElement: ConstructorMember
                         base: self::@class::B::@constructor::•
@@ -13827,9 +13944,9 @@
                         name: SimpleIdentifier
                           staticElement: self::@class::B
                           staticType: null
-                          token: B @-1
+                          token: B @132
                         type: B<Never>
-                    keyword: const @0
+                    keyword: const @126
                     staticType: B<Never>
 ''');
   }
@@ -13877,8 +13994,8 @@
                 constantInitializer
                   InstanceCreationExpression
                     argumentList: ArgumentList
-                      leftParenthesis: ( @0
-                      rightParenthesis: ) @0
+                      leftParenthesis: ( @133
+                      rightParenthesis: ) @134
                     constructorName: ConstructorName
                       staticElement: ConstructorMember
                         base: self::@class::B::@constructor::•
@@ -13887,9 +14004,9 @@
                         name: SimpleIdentifier
                           staticElement: self::@class::B
                           staticType: null
-                          token: B @-1
+                          token: B @132
                         type: B<Null*>*
-                    keyword: const @0
+                    keyword: const @126
                     staticType: B<Null*>*
 ''');
   }
@@ -13926,8 +14043,8 @@
                 constantInitializer
                   InstanceCreationExpression
                     argumentList: ArgumentList
-                      leftParenthesis: ( @0
-                      rightParenthesis: ) @0
+                      leftParenthesis: ( @68
+                      rightParenthesis: ) @69
                     constructorName: ConstructorName
                       staticElement: ConstructorMember
                         base: self::@class::B::@constructor::•
@@ -13936,9 +14053,9 @@
                         name: SimpleIdentifier
                           staticElement: self::@class::B
                           staticType: null
-                          token: B @-1
+                          token: B @67
                         type: B<Null*>*
-                    keyword: const @0
+                    keyword: const @61
                     staticType: B<Null*>*
 ''');
   }
@@ -13970,8 +14087,8 @@
             constantInitializer
               InstanceCreationExpression
                 argumentList: ArgumentList
-                  leftParenthesis: ( @0
-                  rightParenthesis: ) @0
+                  leftParenthesis: ( @57
+                  rightParenthesis: ) @58
                 constructorName: ConstructorName
                   staticElement: ConstructorMember
                     base: self::@class::B::@constructor::•
@@ -13980,9 +14097,9 @@
                     name: SimpleIdentifier
                       staticElement: self::@class::B
                       staticType: null
-                      token: B @-1
+                      token: B @56
                     type: B<Never>
-                keyword: const @0
+                keyword: const @50
                 staticType: B<Never>
         returnType: void
 ''');
@@ -14020,8 +14137,8 @@
                 constantInitializer
                   InstanceCreationExpression
                     argumentList: ArgumentList
-                      leftParenthesis: ( @0
-                      rightParenthesis: ) @0
+                      leftParenthesis: ( @69
+                      rightParenthesis: ) @70
                     constructorName: ConstructorName
                       staticElement: ConstructorMember
                         base: self::@class::B::@constructor::•
@@ -14030,9 +14147,9 @@
                         name: SimpleIdentifier
                           staticElement: self::@class::B
                           staticType: null
-                          token: B @-1
+                          token: B @68
                         type: B<Never>
-                    keyword: const @0
+                    keyword: const @62
                     staticType: B<Never>
             returnType: void
 ''');
@@ -14075,8 +14192,8 @@
                 constantInitializer
                   InstanceCreationExpression
                     argumentList: ArgumentList
-                      leftParenthesis: ( @0
-                      rightParenthesis: ) @0
+                      leftParenthesis: ( @84
+                      rightParenthesis: ) @85
                     constructorName: ConstructorName
                       staticElement: ConstructorMember
                         base: self::@class::B::@constructor::•
@@ -14085,9 +14202,9 @@
                         name: SimpleIdentifier
                           staticElement: self::@class::B
                           staticType: null
-                          token: B @-1
+                          token: B @83
                         type: B<Never, Never>
-                    keyword: const @0
+                    keyword: const @77
                     staticType: B<Never, Never>
             returnType: void
 ''');
@@ -14126,8 +14243,8 @@
                 constantInitializer
                   InstanceCreationExpression
                     argumentList: ArgumentList
-                      leftParenthesis: ( @0
-                      rightParenthesis: ) @0
+                      leftParenthesis: ( @69
+                      rightParenthesis: ) @70
                     constructorName: ConstructorName
                       staticElement: ConstructorMember
                         base: self::@class::B::@constructor::•
@@ -14136,9 +14253,9 @@
                         name: SimpleIdentifier
                           staticElement: self::@class::B
                           staticType: null
-                          token: B @-1
+                          token: B @68
                         type: B<Never>
-                    keyword: const @0
+                    keyword: const @62
                     staticType: B<Never>
             returnType: void
 ''');
@@ -14222,6 +14339,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::A::@constructor::•
+                superKeyword: super @0
       class alias X @48
         supertype: B
         mixins
@@ -14234,6 +14352,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::B::@constructor::•
+                superKeyword: super @0
     mixins
       mixin M @68
         superclassConstraints
@@ -14802,6 +14921,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: dart:core::@class::Object::@constructor::•
+                superKeyword: super @0
     enums
       enum E @5
         fields
@@ -15562,8 +15682,8 @@
                               token: int @58
                             type: int
                           type: int Function(double)
-                      leftBracket: < @0
-                      rightBracket: > @0
+                      leftBracket: < @57
+                      rightBracket: > @80
                 keyword: const @50
                 staticType: A<int Function(double)>
         constructors
@@ -15750,8 +15870,8 @@
                     staticElement: self::@getter::a
                     staticType: int
                     token: a @112
-                leftBracket: [ @0
-                rightBracket: ] @0
+                leftBracket: [ @111
+                rightBracket: ] @113
                 staticType: List<int>
         constructors
           const @94
@@ -16069,9 +16189,9 @@
             type: List<int>
             constantInitializer
               ListLiteral
-                constKeyword: const @0
-                leftBracket: [ @0
-                rightBracket: ] @0
+                constKeyword: const @35
+                leftBracket: [ @41
+                rightBracket: ] @42
                 staticType: List<int>
         constructors
           const @53
@@ -16247,7 +16367,7 @@
             type: int
             constantInitializer
               IntegerLiteral
-                literal: 42 @0
+                literal: 42 @20
                 staticType: int
         returnType: void
 ''');
@@ -17156,8 +17276,8 @@
                       token: int @32
                     type: int
                   type: int Function(String)
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @31
+              rightBracket: > @54
         constructors
           synthetic @-1
 ''');
@@ -17230,8 +17350,8 @@
                       token: int @32
                     type: int
                   type: int Function(String)
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @31
+              rightBracket: > @54
         type: int
     accessors
       synthetic static get v @62
@@ -17320,8 +17440,8 @@
                           token: String @41
                         type: String
                       type: String Function({int? a})
-                  leftBracket: < @0
-                  rightBracket: > @0
+                  leftBracket: < @40
+                  rightBracket: > @66
             staticType: A<String Function({int? a})>
     accessors
       synthetic static get v @35
@@ -17405,8 +17525,8 @@
                           token: String @41
                         type: String
                       type: String Function([int?])
-                  leftBracket: < @0
-                  rightBracket: > @0
+                  leftBracket: < @40
+                  rightBracket: > @66
             staticType: A<String Function([int?])>
     accessors
       synthetic static get v @35
@@ -17491,8 +17611,8 @@
                           token: String @41
                         type: String
                       type: String Function({required int a})
-                  leftBracket: < @0
-                  rightBracket: > @0
+                  leftBracket: < @40
+                  rightBracket: > @74
             staticType: A<String Function({required int a})>
     accessors
       synthetic static get v @35
@@ -17569,8 +17689,8 @@
                           token: String @41
                         type: String
                       type: String Function(int)
-                  leftBracket: < @0
-                  rightBracket: > @0
+                  leftBracket: < @40
+                  rightBracket: > @63
             staticType: A<String Function(int)>
     accessors
       synthetic static get v @35
@@ -17626,6 +17746,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::A::@constructor::•
+                superKeyword: super @0
     mixins
       mixin M @20
         superclassConstraints
@@ -17888,6 +18009,7 @@
                 staticElement: self::@class::C::@constructor::named
                 staticType: null
                 token: named @67
+              period: . @66
               staticElement: self::@class::C::@constructor::named
               type: TypeName
                 name: SimpleIdentifier
@@ -20521,7 +20643,7 @@
                 staticElement: package:test/a.dart::@class::A
                 staticType: null
                 token: A @25
-              period: . @0
+              period: . @24
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::a
                 staticType: null
@@ -20561,7 +20683,7 @@
                 staticElement: package:test/a.dart::@class::A::@constructor::named
                 staticType: null
                 token: named @20
-              period: . @0
+              period: . @19
               prefix: SimpleIdentifier
                 staticElement: package:test/a.dart::@class::A
                 staticType: null
@@ -20626,7 +20748,7 @@
               SimpleIdentifier
                 staticElement: <null>
                 staticType: dynamic
-                token: V @-1
+                token: V @43
         returnType: dynamic
 ''');
   }
@@ -20656,7 +20778,7 @@
               SimpleIdentifier
                 staticElement: a.dart::@function::V
                 staticType: dynamic Function()
-                token: V @-1
+                token: V @26
         returnType: dynamic
 ''');
   }
@@ -20690,7 +20812,7 @@
               SimpleIdentifier
                 staticElement: self::@getter::V
                 staticType: dynamic
-                token: V @-1
+                token: V @9
         returnType: dynamic
       V @16
         returnType: dynamic
@@ -21026,6 +21148,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::C::@constructor::•
+                superKeyword: super @0
       class C @29
         constructors
           synthetic @-1
@@ -21358,13 +21481,13 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
       static const b @22
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @26
             staticType: null
     accessors
       synthetic static get a @6
@@ -21401,6 +21524,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::D::@constructor::•
+                superKeyword: super @0
       class D @45
         constructors
           synthetic @-1
@@ -21412,7 +21536,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -21458,7 +21582,7 @@
                 staticElement: self::@class::A::@constructor::named
                 staticType: null
                 token: named @39
-              period: . @0
+              period: . @38
               prefix: SimpleIdentifier
                 staticElement: self::@class::A
                 staticType: null
@@ -21516,7 +21640,7 @@
                   substitution: {T: int}
                 staticType: null
                 token: named @41
-              period: . @0
+              period: . @40
               prefix: SimpleIdentifier
                 staticElement: self::@class::A
                 staticType: null
@@ -21580,8 +21704,8 @@
                     staticType: null
                     token: int @38
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @37
+              rightBracket: > @41
         constructors
           synthetic @-1
 ''');
@@ -21636,8 +21760,8 @@
                     staticType: null
                     token: int @38
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @37
+              rightBracket: > @41
         constructors
           synthetic @-1
 ''');
@@ -21682,7 +21806,7 @@
                 staticElement: package:test/foo.dart::@class::A
                 staticType: null
                 token: A @31
-              period: . @0
+              period: . @30
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::foo
                 staticType: null
@@ -21738,7 +21862,7 @@
                 staticElement: package:test/foo.dart::@class::A
                 staticType: null
                 token: A @31
-              period: . @0
+              period: . @30
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::foo
                 staticType: null
@@ -21790,7 +21914,7 @@
                 staticElement: package:test/foo.dart::@class::A
                 staticType: null
                 token: A @31
-              period: . @0
+              period: . @30
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::foo
                 staticType: null
@@ -21805,8 +21929,8 @@
                     staticType: null
                     token: int @33
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @32
+              rightBracket: > @36
         constructors
           synthetic @-1
 ''');
@@ -21852,7 +21976,9 @@
                   staticElement: self::@class::A::@constructor::named
                   staticType: null
                   token: named @-1
+                period: . @0
                 staticElement: self::@class::A::@constructor::named
+                superKeyword: super @0
       class D @85
         metadata
           Annotation
@@ -21870,7 +21996,7 @@
                   substitution: {T: dynamic}
                 staticType: null
                 token: named @71
-              period: . @0
+              period: . @70
               prefix: SimpleIdentifier
                 staticElement: self::@class::C
                 staticType: null
@@ -22018,8 +22144,8 @@
                     staticType: null
                     token: int @32
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @31
+              rightBracket: > @35
         constructors
           synthetic @-1
 ''');
@@ -22053,7 +22179,7 @@
                 staticElement: package:test/foo.dart::@class::A
                 staticType: null
                 token: A @31
-              period: . @0
+              period: . @30
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::foo
                 staticType: null
@@ -22103,7 +22229,7 @@
                 staticElement: package:test/foo.dart::@class::A
                 staticType: null
                 token: A @31
-              period: . @0
+              period: . @30
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::foo
                 staticType: null
@@ -22149,7 +22275,7 @@
                 staticElement: package:test/foo.dart::@class::A
                 staticType: null
                 token: A @31
-              period: . @0
+              period: . @30
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::foo
                 staticType: null
@@ -22164,8 +22290,8 @@
                     staticType: null
                     token: int @33
                   type: int
-              leftBracket: < @0
-              rightBracket: > @0
+              leftBracket: < @32
+              rightBracket: > @36
         constructors
           synthetic @-1
 ''');
@@ -22206,6 +22332,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::A::@constructor::•
+                superKeyword: super @0
       class D @73
         metadata
           Annotation
@@ -22250,7 +22377,7 @@
             arguments: ArgumentList
               arguments
                 NullLiteral
-                  literal: null @0
+                  literal: null @27
                   staticType: null
               leftParenthesis: ( @26
               rightParenthesis: ) @31
@@ -22290,7 +22417,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -22320,7 +22447,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -22536,7 +22663,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @32
             staticType: null
     accessors
       synthetic static get a @28
@@ -22653,7 +22780,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -22694,7 +22821,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -22725,12 +22852,12 @@
                 type: dynamic
                 metadata
                   Annotation
-                    atSign.offset: 0
+                    atSign.offset: 39
                     element: self::@getter::a
                     name: SimpleIdentifier
                       staticElement: self::@getter::a
                       staticType: null
-                      token: a @-1
+                      token: a @40
         accessors
           synthetic get x @32
             returnType: dynamic
@@ -22744,7 +22871,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -22770,15 +22897,15 @@
                 type: dynamic
                 metadata
                   Annotation
-                    atSign.offset: 0
+                    atSign.offset: 36
                     element: self::@getter::a
                     name: SimpleIdentifier
                       staticElement: self::@getter::a
                       staticType: null
-                      token: a @-1
+                      token: a @37
                 constantInitializer
                   NullLiteral
-                    literal: null @0
+                    literal: null @48
                     staticType: null
         accessors
           synthetic get x @30
@@ -22793,7 +22920,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -22815,7 +22942,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -22844,7 +22971,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
       synthetic static f @-1
         type: dynamic
@@ -22874,7 +23001,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
       synthetic static f @-1
         type: dynamic
@@ -22920,7 +23047,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -22938,7 +23065,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -22950,12 +23077,12 @@
             type: dynamic Function()
             metadata
               Annotation
-                atSign.offset: 0
+                atSign.offset: 18
                 element: self::@getter::a
                 name: SimpleIdentifier
                   staticElement: self::@getter::a
                   staticType: null
-                  token: a @-1
+                  token: a @19
         returnType: dynamic
 ''');
   }
@@ -22970,7 +23097,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -22982,15 +23109,15 @@
             type: dynamic Function()
             metadata
               Annotation
-                atSign.offset: 0
+                atSign.offset: 19
                 element: self::@getter::a
                 name: SimpleIdentifier
                   staticElement: self::@getter::a
                   staticType: null
-                  token: a @-1
+                  token: a @20
             constantInitializer
               NullLiteral
-                literal: null @0
+                literal: null @28
                 staticType: null
         returnType: dynamic
 ''');
@@ -23031,13 +23158,13 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
       static const b @22
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @26
             staticType: null
     accessors
       synthetic static get a @6
@@ -23299,7 +23426,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @24
             staticType: null
     accessors
       synthetic static get a @20
@@ -23336,7 +23463,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -23384,13 +23511,13 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
       static const b @22
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @26
             staticType: null
     accessors
       synthetic static get a @6
@@ -23442,13 +23569,13 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
       static const b @22
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @26
             staticType: null
     accessors
       synthetic static get a @6
@@ -23495,7 +23622,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -23612,13 +23739,13 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
       static const b @22
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @26
             staticType: null
     accessors
       synthetic static get a @6
@@ -23704,12 +23831,12 @@
                 type: int
                 metadata
                   Annotation
-                    atSign.offset: 0
+                    atSign.offset: 37
                     element: self::@getter::foo
                     name: SimpleIdentifier
                       staticElement: self::@getter::foo
                       staticType: null
-                      token: foo @-1
+                      token: foo @38
     topLevelVariables
       static const foo @6
         type: int
@@ -23808,12 +23935,12 @@
                 type: int
                 metadata
                   Annotation
-                    atSign.offset: 0
+                    atSign.offset: 55
                     element: self::@getter::foo
                     name: SimpleIdentifier
                       staticElement: self::@getter::foo
                       staticType: null
-                      token: foo @-1
+                      token: foo @56
             returnType: void
     topLevelVariables
       static const foo @6
@@ -23931,6 +24058,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::A::@constructor::•
+                superKeyword: super @0
     mixins
       mixin M @33
         superclassConstraints
@@ -24192,7 +24320,7 @@
 const foo = 0;
 
 @foo
-void f<@foo T>(@foo int a) {}
+void f<@foo T>({@foo int? a = 42}) {}
 ''');
     // TODO(scheglov) Enhance to show metadata on formal parameters?
     checkElementText(library, r'''
@@ -24229,16 +24357,20 @@
                   staticType: null
                   token: foo @29
         parameters
-          requiredPositional a @45
-            type: int
+          optionalNamed a @47
+            type: int?
             metadata
               Annotation
-                atSign.offset: 0
+                atSign.offset: 37
                 element: self::@getter::foo
                 name: SimpleIdentifier
                   staticElement: self::@getter::foo
                   staticType: null
-                  token: foo @-1
+                  token: foo @38
+            constantInitializer
+              IntegerLiteral
+                literal: 42 @51
+                staticType: int
         returnType: void
 ''');
   }
@@ -24401,7 +24533,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @41
             staticType: null
     accessors
       synthetic static get a @37
@@ -24455,7 +24587,7 @@
                 staticElement: a.dart::@getter::b
                 staticType: null
                 token: b @25
-              period: . @0
+              period: . @24
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::a
                 staticType: null
@@ -24477,7 +24609,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -24489,12 +24621,12 @@
             type: dynamic
             metadata
               Annotation
-                atSign.offset: 0
+                atSign.offset: 18
                 element: self::@getter::a
                 name: SimpleIdentifier
                   staticElement: self::@getter::a
                   staticType: null
-                  token: a @-1
+                  token: a @19
         returnType: dynamic
 ''');
   }
@@ -24521,19 +24653,19 @@
                 type: dynamic
                 metadata
                   Annotation
-                    atSign.offset: 0
+                    atSign.offset: 31
                     element: self::@getter::a
                     name: SimpleIdentifier
                       staticElement: self::@getter::a
                       staticType: null
-                      token: a @-1
+                      token: a @32
             returnType: dynamic
     topLevelVariables
       static const a @6
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -24555,7 +24687,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
       synthetic static foo @-1
         type: int
@@ -24588,7 +24720,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -24600,15 +24732,15 @@
             type: dynamic
             metadata
               Annotation
-                atSign.offset: 0
+                atSign.offset: 19
                 element: self::@getter::a
                 name: SimpleIdentifier
                   staticElement: self::@getter::a
                   staticType: null
-                  token: a @-1
+                  token: a @20
             constantInitializer
               NullLiteral
-                literal: null @0
+                literal: null @26
                 staticType: null
         returnType: dynamic
 ''');
@@ -24624,7 +24756,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
       static v @23
         metadata
@@ -24674,7 +24806,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -24715,6 +24847,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::D::@constructor::•
+                superKeyword: super @0
       class D @48
         constructors
           synthetic @-1
@@ -24726,7 +24859,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -24744,7 +24877,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -24791,7 +24924,7 @@
         type: dynamic
         constantInitializer
           NullLiteral
-            literal: null @0
+            literal: null @10
             staticType: null
     accessors
       synthetic static get a @6
@@ -24879,7 +25012,7 @@
                 staticElement: self::@class::A::@getter::x
                 staticType: null
                 token: x @37
-              period: . @0
+              period: . @36
               prefix: SimpleIdentifier
                 staticElement: self::@class::A
                 staticType: null
@@ -24912,7 +25045,7 @@
                 staticElement: self::@enum::E::@getter::b
                 staticType: null
                 token: b @20
-              period: . @0
+              period: . @19
               prefix: SimpleIdentifier
                 staticElement: self::@enum::E
                 staticType: null
@@ -24974,7 +25107,7 @@
                 staticElement: self::@extension::E::@getter::x
                 staticType: null
                 token: x @48
-              period: . @0
+              period: . @47
               prefix: SimpleIdentifier
                 staticElement: self::@extension::E
                 staticType: null
@@ -25031,7 +25164,7 @@
                 staticElement: package:test/foo.dart::@extension::E
                 staticType: null
                 token: E @31
-              period: . @0
+              period: . @30
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::foo
                 staticType: null
@@ -27181,7 +27314,7 @@
                 type: dynamic
                 constantInitializer
                   IntegerLiteral
-                    literal: 1 @0
+                    literal: 1 @30
                     staticType: int
           named @39
             periodOffset: 38
@@ -27191,7 +27324,7 @@
                 type: dynamic
                 constantInitializer
                   IntegerLiteral
-                    literal: 1 @0
+                    literal: 1 @49
                     staticType: int
 ''');
   }
@@ -27223,7 +27356,7 @@
                 type: dynamic
                 constantInitializer
                   IntegerLiteral
-                    literal: 1 @0
+                    literal: 1 @44
                     staticType: int
           named @53
             periodOffset: 52
@@ -27233,7 +27366,7 @@
                 type: dynamic
                 constantInitializer
                   IntegerLiteral
-                    literal: 1 @0
+                    literal: 1 @68
                     staticType: int
         accessors
           synthetic get x @16
@@ -27269,7 +27402,7 @@
                 type: dynamic
                 constantInitializer
                   IntegerLiteral
-                    literal: 1 @0
+                    literal: 1 @40
                     staticType: int
             returnType: void
           static named @61
@@ -27278,7 +27411,7 @@
                 type: dynamic
                 constantInitializer
                   IntegerLiteral
-                    literal: 1 @0
+                    literal: 1 @71
                     staticType: int
             returnType: void
 ''');
@@ -27302,7 +27435,7 @@
             type: dynamic
             constantInitializer
               IntegerLiteral
-                literal: 1 @0
+                literal: 1 @21
                 staticType: int
         returnType: void
       named @33
@@ -27311,7 +27444,7 @@
             type: dynamic
             constantInitializer
               IntegerLiteral
-                literal: 1 @0
+                literal: 1 @43
                 staticType: int
         returnType: void
 ''');
@@ -28154,6 +28287,7 @@
                   leftParenthesis: ( @0
                   rightParenthesis: ) @0
                 staticElement: self::@class::A::@constructor::•
+                superKeyword: super @0
       class C @78
         fields
           a @88
@@ -31865,7 +31999,7 @@
               arguments
                 SuperExpression
                   staticType: dynamic
-                  superKeyword: super @0
+                  superKeyword: super @30
               leftParenthesis: ( @29
               rightParenthesis: ) @35
             atSign.offset: 27
@@ -31905,7 +32039,7 @@
               arguments
                 ThisExpression
                   staticType: dynamic
-                  thisKeyword: this @0
+                  thisKeyword: this @30
               leftParenthesis: ( @29
               rightParenthesis: ) @34
             atSign.offset: 27
@@ -31939,7 +32073,7 @@
                 staticElement: <null>
                 staticType: null
                 token: bar @5
-              period: . @0
+              period: . @4
               prefix: SimpleIdentifier
                 staticElement: <null>
                 staticType: null
@@ -31971,7 +32105,7 @@
                 staticElement: <null>
                 staticType: null
                 token: foo @8
-              period: . @0
+              period: . @7
               prefix: SimpleIdentifier
                 staticElement: dart:core::@class::String
                 staticType: null
@@ -31999,7 +32133,7 @@
                 staticElement: <null>
                 staticType: null
                 token: bar @5
-              period: . @0
+              period: . @4
               prefix: SimpleIdentifier
                 staticElement: <null>
                 staticType: null
@@ -32031,7 +32165,7 @@
                 staticElement: <null>
                 staticType: null
                 token: bar @33
-              period: . @0
+              period: . @32
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::foo
                 staticType: null
@@ -32067,7 +32201,7 @@
                 staticElement: <null>
                 staticType: null
                 token: bar @5
-              period: . @0
+              period: . @4
               prefix: SimpleIdentifier
                 staticElement: <null>
                 staticType: null
@@ -32106,7 +32240,7 @@
                 staticElement: <null>
                 staticType: null
                 token: bar @33
-              period: . @0
+              period: . @32
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::foo
                 staticType: null
@@ -32145,7 +32279,7 @@
                 staticElement: dart:async::@class::Future
                 staticType: null
                 token: Future @33
-              period: . @0
+              period: . @32
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::foo
                 staticType: null
@@ -32177,7 +32311,7 @@
                 staticElement: <null>
                 staticType: null
                 token: bar @5
-              period: . @0
+              period: . @4
               prefix: SimpleIdentifier
                 staticElement: <null>
                 staticType: null
@@ -32212,7 +32346,7 @@
                 staticElement: <null>
                 staticType: null
                 token: bar @33
-              period: . @0
+              period: . @32
               prefix: SimpleIdentifier
                 staticElement: self::@prefix::foo
                 staticType: null
diff --git a/pkg/analyzer/test/src/summary/top_level_inference_test.dart b/pkg/analyzer/test/src/summary/top_level_inference_test.dart
index 217f91b..3225233 100644
--- a/pkg/analyzer/test/src/summary/top_level_inference_test.dart
+++ b/pkg/analyzer/test/src/summary/top_level_inference_test.dart
@@ -3476,7 +3476,7 @@
                 type: int
                 constantInitializer
                   SimpleStringLiteral
-                    literal: 'hello' @0
+                    literal: 'hello' @37
         accessors
           synthetic get f @16
             returnType: int
diff --git a/pkg/analyzer/test/verify_diagnostics_test.dart b/pkg/analyzer/test/verify_diagnostics_test.dart
index 5b35e41..1ccaa65 100644
--- a/pkg/analyzer/test/verify_diagnostics_test.dart
+++ b/pkg/analyzer/test/verify_diagnostics_test.dart
@@ -40,6 +40,8 @@
     'CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE',
     // Produces two diagnostics when it should only produce one.
     'CompileTimeErrorCode.CONST_DEFERRED_CLASS',
+    // Produces two diagnostics when it should only produce one.
+    'CompileTimeErrorCode.CONST_WITH_NON_CONSTANT_ARGUMENT',
     // The mock SDK doesn't define any internal libraries.
     'CompileTimeErrorCode.EXPORT_INTERNAL_LIBRARY',
     // Has code in the example section that needs to be skipped (because it's
diff --git a/pkg/analyzer/tool/diagnostics/diagnostics.md b/pkg/analyzer/tool/diagnostics/diagnostics.md
index 2579b39..85c48aa 100644
--- a/pkg/analyzer/tool/diagnostics/diagnostics.md
+++ b/pkg/analyzer/tool/diagnostics/diagnostics.md
@@ -523,22 +523,24 @@
 
 ### ambiguous_set_or_map_literal_both
 
-_This literal contains both 'Map' and 'Iterable' elements, which makes it
-impossible to determine whether the literal is a map or a set._
+_The literal can't be either a map or a set because it contains at least one
+literal map entry or a spread operator spreading a 'Map', and at least one element which is neither of these._
 
 #### Description
 
 Because map and set literals use the same delimiters (`{` and `}`), the
 analyzer looks at the type arguments and the elements to determine which
 kind of literal you meant. When there are no type arguments, then the
-analyzer uses the types of the elements. If all of the expressions have the
-type `Iterable`, then it's a set literal; if they all have the type `Map`,
-then it's a map literal.
+analyzer uses the types of the elements. If all of the elements are literal
+map entries and all of the spread operators are spreading a `Map` then it's
+a `Map`. If none of the elements are literal map entries and all of the
+spread operators are spreading an `Iterable`, then it's a `Set`. If neither
+of those is true then it's ambiguous.
 
-The analyzer produces this diagnostic when some of the elements have the
-type `Iterable` and others have the type `Map`, making it impossible for
-the analyzer to determine whether you are writing a map literal or a set
-literal.
+The analyzer produces this diagnostic when at least one element is a
+literal map entry or a spread operator spreading a `Map`, and at least one
+element is neither of these, making it impossible for the analyzer to
+determine whether you are writing a map literal or a set literal.
 
 #### Examples
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
index 34a34f9..14ea739 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
@@ -584,8 +584,9 @@
       optype.includeReturnValueSuggestions = true;
       optype.includeTypeNameSuggestions = true;
       var parent = node.parent;
+      DartType? type;
       if (parent is FunctionExpression) {
-        var type = parent.staticType;
+        type = parent.staticType;
         if (type is FunctionType) {
           if (type.returnType.isVoid) {
             // TODO(brianwilkerson) Determine whether the return type can ever
@@ -605,6 +606,11 @@
             }
           }
         }
+      } else if (parent is MethodDeclaration) {
+        type = parent.declaredElement?.returnType;
+        if (type != null && type.isVoid) {
+          optype.includeVoidReturnSuggestions = true;
+        }
       }
     }
   }
@@ -1033,20 +1039,23 @@
 
       // Check for named parameters in constructor calls.
       var grandparent = node.parent?.parent;
+      Element? element;
       if (grandparent is ConstructorReferenceNode) {
-        var element = grandparent.staticElement;
-        if (element != null) {
-          var parameters = element.parameters;
-          var parameterElement = parameters.firstWhereOrNull((e) {
-            if (e is DefaultFieldFormalParameterElementImpl) {
-              return e.field?.name == node.name.label.name;
-            }
-            return e.isNamed && e.name == node.name.label.name;
-          });
-          // Suggest tear-offs.
-          if (parameterElement?.type is FunctionType) {
-            optype.includeVoidReturnSuggestions = true;
+        element = grandparent.staticElement;
+      } else if (grandparent is MethodInvocation) {
+        element = grandparent.methodName.staticElement;
+      }
+      if (element is ExecutableElement) {
+        var parameters = element.parameters;
+        var parameterElement = parameters.firstWhereOrNull((e) {
+          if (e is DefaultFieldFormalParameterElementImpl) {
+            return e.field?.name == node.name.label.name;
           }
+          return e.isNamed && e.name == node.name.label.name;
+        });
+        // Suggest tear-offs.
+        if (parameterElement?.type is FunctionType) {
+          optype.includeVoidReturnSuggestions = true;
         }
       }
     }
diff --git a/pkg/dev_compiler/lib/src/kernel/compiler.dart b/pkg/dev_compiler/lib/src/kernel/compiler.dart
index 90beb07..51181ce 100644
--- a/pkg/dev_compiler/lib/src/kernel/compiler.dart
+++ b/pkg/dev_compiler/lib/src/kernel/compiler.dart
@@ -2792,6 +2792,20 @@
       // FutureOr<T?>? --> FutureOr<T?>
       return futureOr.withDeclaredNullability(Nullability.nonNullable);
     }
+    // The following is not part of the normalization spec but this is a
+    // convenient place to perform this change of nullability consistently. This
+    // only applies at compile-time and is not needed in the runtime version of
+    // the FutureOr normalization.
+    // FutureOr<T%>% --> FutureOr<T%>
+    //
+    // If the type argument has undetermined nullability the CFE propagates
+    // it to the FutureOr type as well. In this case we can represent the
+    // FutureOr type without any nullability wrappers and rely on the runtime to
+    // handle the nullability of the instantiated type appropriately.
+    if (futureOr.nullability == Nullability.undetermined &&
+        typeArgument.nullability == Nullability.undetermined) {
+      return futureOr.withDeclaredNullability(Nullability.nonNullable);
+    }
     return futureOr;
   }
 
diff --git a/pkg/kernel/lib/transformations/track_widget_constructor_locations.dart b/pkg/kernel/lib/transformations/track_widget_constructor_locations.dart
index 83bd899..74461fa 100644
--- a/pkg/kernel/lib/transformations/track_widget_constructor_locations.dart
+++ b/pkg/kernel/lib/transformations/track_widget_constructor_locations.dart
@@ -7,7 +7,7 @@
 import '../ast.dart';
 import '../target/changed_structure_notifier.dart';
 
-// Parameter name used to track were widget constructor calls were made from.
+// Parameter name used to track where widget constructor calls were made from.
 //
 // The parameter name contains a randomly generated hex string to avoid
 // collision with user generated parameters.
@@ -332,8 +332,7 @@
       final Uri importUri = library.importUri;
       // ignore: unnecessary_null_comparison
       if (importUri != null && importUri.scheme == 'package') {
-        if (importUri.path == 'flutter/src/widgets/framework.dart' ||
-            importUri.path == 'flutter_web/src/widgets/framework.dart') {
+        if (importUri.path == 'flutter/src/widgets/framework.dart') {
           for (Class class_ in library.classes) {
             if (class_.name == 'Widget') {
               _widgetClass = class_;
@@ -341,9 +340,7 @@
             }
           }
         } else {
-          if (importUri.path == 'flutter/src/widgets/widget_inspector.dart' ||
-              importUri.path ==
-                  'flutter_web/src/widgets/widget_inspector.dart') {
+          if (importUri.path == 'flutter/src/widgets/widget_inspector.dart') {
             for (Class class_ in library.classes) {
               if (class_.name == '_HasCreationLocation') {
                 _hasCreationLocationClass = class_;
diff --git a/runtime/vm/heap/marker.cc b/runtime/vm/heap/marker.cc
index 3a79f14..f6a984c 100644
--- a/runtime/vm/heap/marker.cc
+++ b/runtime/vm/heap/marker.cc
@@ -212,6 +212,10 @@
     }
   }
 
+  bool WaitForWork(RelaxedAtomic<uintptr_t>* num_busy) {
+    return work_list_.WaitForWork(num_busy);
+  }
+
   void AbandonWork() {
     work_list_.AbandonWork();
     deferred_work_list_.AbandonWork();
@@ -552,23 +556,7 @@
       do {
         do {
           visitor_->DrainMarkingStack();
-
-          // I can't find more work right now. If no other task is busy,
-          // then there will never be more work (NB: 1 is *before* decrement).
-          if (num_busy_->fetch_sub(1u) == 1) break;
-
-          // Wait for some work to appear.
-          // TODO(40695): Replace busy-waiting with a solution using Monitor,
-          // and redraw the boundaries between stack/visitor/task as needed.
-          while (marking_stack_->IsEmpty() && num_busy_->load() > 0) {
-          }
-
-          // If no tasks are busy, there will never be more work.
-          if (num_busy_->load() == 0) break;
-
-          // I saw some work; get busy and compete for it.
-          num_busy_->fetch_add(1u);
-        } while (true);
+        } while (visitor_->WaitForWork(num_busy_));
         // Wait for all markers to stop.
         barrier_->Sync();
 #if defined(DEBUG)
diff --git a/runtime/vm/heap/pointer_block.cc b/runtime/vm/heap/pointer_block.cc
index 2814465..daedab8 100644
--- a/runtime/vm/heap/pointer_block.cc
+++ b/runtime/vm/heap/pointer_block.cc
@@ -41,7 +41,7 @@
 }
 
 template <int BlockSize>
-BlockStack<BlockSize>::BlockStack() : mutex_() {}
+BlockStack<BlockSize>::BlockStack() : monitor_() {}
 
 template <int BlockSize>
 BlockStack<BlockSize>::~BlockStack() {
@@ -50,7 +50,7 @@
 
 template <int BlockSize>
 void BlockStack<BlockSize>::Reset() {
-  MutexLocker local_mutex_locker(&mutex_);
+  MonitorLocker local_mutex_locker(&monitor_);
   {
     // Empty all blocks and move them to the global cache.
     MutexLocker global_mutex_locker(global_mutex_);
@@ -70,7 +70,7 @@
 
 template <int BlockSize>
 typename BlockStack<BlockSize>::Block* BlockStack<BlockSize>::TakeBlocks() {
-  MutexLocker ml(&mutex_);
+  MonitorLocker ml(&monitor_);
   while (!partial_.IsEmpty()) {
     full_.Push(partial_.Pop());
   }
@@ -81,15 +81,45 @@
 void BlockStack<BlockSize>::PushBlockImpl(Block* block) {
   ASSERT(block->next() == NULL);  // Should be just a single block.
   if (block->IsFull()) {
-    MutexLocker ml(&mutex_);
+    MonitorLocker ml(&monitor_);
+    bool was_empty = IsEmptyLocked();
     full_.Push(block);
+    if (was_empty) ml.Notify();
   } else if (block->IsEmpty()) {
     MutexLocker ml(global_mutex_);
     global_empty_->Push(block);
     TrimGlobalEmpty();
   } else {
-    MutexLocker ml(&mutex_);
+    MonitorLocker ml(&monitor_);
+    bool was_empty = IsEmptyLocked();
     partial_.Push(block);
+    if (was_empty) ml.Notify();
+  }
+}
+
+template <int BlockSize>
+typename BlockStack<BlockSize>::Block* BlockStack<BlockSize>::WaitForWork(
+    RelaxedAtomic<uintptr_t>* num_busy) {
+  MonitorLocker ml(&monitor_);
+  if (num_busy->fetch_sub(1u) == 1 /* 1 is before subtraction */) {
+    // This is the last worker, wake the others now that we know no further work
+    // will come.
+    ml.NotifyAll();
+    return NULL;
+  }
+  for (;;) {
+    if (!full_.IsEmpty()) {
+      num_busy->fetch_add(1u);
+      return full_.Pop();
+    }
+    if (!partial_.IsEmpty()) {
+      num_busy->fetch_add(1u);
+      return partial_.Pop();
+    }
+    ml.Wait();
+    if (num_busy->load() == 0) {
+      return NULL;
+    }
   }
 }
 
@@ -103,7 +133,7 @@
 void StoreBuffer::PushBlock(Block* block, ThresholdPolicy policy) {
   BlockStack<Block::kSize>::PushBlockImpl(block);
   if ((policy == kCheckThreshold) && Overflowed()) {
-    MutexLocker ml(&mutex_);
+    MonitorLocker ml(&monitor_);
     Thread* thread = Thread::Current();
     // Sanity check: it makes no sense to schedule the GC in another isolate
     // group.
@@ -118,7 +148,7 @@
 typename BlockStack<BlockSize>::Block*
 BlockStack<BlockSize>::PopNonFullBlock() {
   {
-    MutexLocker ml(&mutex_);
+    MonitorLocker ml(&monitor_);
     if (!partial_.IsEmpty()) {
       return partial_.Pop();
     }
@@ -140,7 +170,7 @@
 template <int BlockSize>
 typename BlockStack<BlockSize>::Block*
 BlockStack<BlockSize>::PopNonEmptyBlock() {
-  MutexLocker ml(&mutex_);
+  MonitorLocker ml(&monitor_);
   if (!full_.IsEmpty()) {
     return full_.Pop();
   } else if (!partial_.IsEmpty()) {
@@ -152,7 +182,12 @@
 
 template <int BlockSize>
 bool BlockStack<BlockSize>::IsEmpty() {
-  MutexLocker ml(&mutex_);
+  MonitorLocker ml(&monitor_);
+  return IsEmptyLocked();
+}
+
+template <int BlockSize>
+bool BlockStack<BlockSize>::IsEmptyLocked() {
   return full_.IsEmpty() && partial_.IsEmpty();
 }
 
@@ -189,7 +224,7 @@
 }
 
 bool StoreBuffer::Overflowed() {
-  MutexLocker ml(&mutex_);
+  MonitorLocker ml(&monitor_);
   return (full_.length() + partial_.length()) > kMaxNonEmpty;
 }
 
diff --git a/runtime/vm/heap/pointer_block.h b/runtime/vm/heap/pointer_block.h
index 168a1cb..5ef6dc2 100644
--- a/runtime/vm/heap/pointer_block.h
+++ b/runtime/vm/heap/pointer_block.h
@@ -108,6 +108,8 @@
 
   bool IsEmpty();
 
+  Block* WaitForWork(RelaxedAtomic<uintptr_t>* num_busy);
+
  protected:
   class List {
    public:
@@ -126,6 +128,8 @@
     DISALLOW_COPY_AND_ASSIGN(List);
   };
 
+  bool IsEmptyLocked();
+
   // Adds and transfers ownership of the block to the buffer.
   void PushBlockImpl(Block* block);
 
@@ -134,7 +138,7 @@
 
   List full_;
   List partial_;
-  Mutex mutex_;
+  Monitor monitor_;
 
   // Note: This is shared on the basis of block size.
   static const intptr_t kMaxGlobalEmpty = 100;
@@ -191,6 +195,17 @@
     local_output_->Push(raw_obj);
   }
 
+  bool WaitForWork(RelaxedAtomic<uintptr_t>* num_busy) {
+    ASSERT(local_input_->IsEmpty());
+    Block* new_work = stack_->WaitForWork(num_busy);
+    if (new_work == NULL) {
+      return false;
+    }
+    stack_->PushBlock(local_input_);
+    local_input_ = new_work;
+    return true;
+  }
+
   void Finalize() {
     ASSERT(local_output_->IsEmpty());
     stack_->PushBlock(local_output_);
diff --git a/runtime/vm/heap/scavenger.cc b/runtime/vm/heap/scavenger.cc
index cf13c43..3faf889 100644
--- a/runtime/vm/heap/scavenger.cc
+++ b/runtime/vm/heap/scavenger.cc
@@ -261,6 +261,10 @@
            !promoted_list_.IsEmpty();
   }
 
+  bool WaitForWork(RelaxedAtomic<uintptr_t>* num_busy) {
+    return promoted_list_.WaitForWork(num_busy);
+  }
+
   void Finalize() {
     if (scavenger_->abort_) {
       promoted_list_.AbandonWork();
@@ -562,23 +566,7 @@
     do {
       do {
         visitor_->ProcessSurvivors();
-
-        // I can't find more work right now. If no other task is busy,
-        // then there will never be more work (NB: 1 is *before* decrement).
-        if (num_busy_->fetch_sub(1u) == 1) break;
-
-        // Wait for some work to appear.
-        // TODO(iposva): Replace busy-waiting with a solution using Monitor,
-        // and redraw the boundaries between stack/visitor/task as needed.
-        while (!visitor_->HasWork() && num_busy_->load() > 0) {
-        }
-
-        // If no tasks are busy, there will never be more work.
-        if (num_busy_->load() == 0) break;
-
-        // I saw some work; get busy and compete for it.
-        num_busy_->fetch_add(1u);
-      } while (true);
+      } while (visitor_->WaitForWork(num_busy_));
       // Wait for all scavengers to stop.
       barrier_->Sync();
 #if defined(DEBUG)
diff --git a/runtime/vm/profiler.cc b/runtime/vm/profiler.cc
index 51a7f20..568c78a 100644
--- a/runtime/vm/profiler.cc
+++ b/runtime/vm/profiler.cc
@@ -27,7 +27,7 @@
 
 namespace dart {
 
-static const intptr_t kMaxSamplesPerTick = 16;
+static const intptr_t kMaxSamplesPerTick = 4;
 
 DEFINE_FLAG(bool, trace_profiled_isolates, false, "Trace profiled isolates.");
 
diff --git a/runtime/vm/profiler.h b/runtime/vm/profiler.h
index 6dad274..2f9ea17 100644
--- a/runtime/vm/profiler.h
+++ b/runtime/vm/profiler.h
@@ -386,7 +386,7 @@
     set_metadata(cid);
   }
 
-  static constexpr int kPCArraySizeInWords = 8;
+  static constexpr int kPCArraySizeInWords = 32;
   uword* GetPCArray() { return &pc_array_[0]; }
 
   static constexpr int kStackBufferSizeInWords = 2;
diff --git a/tests/lib/async/regress46319_test.dart b/tests/lib/async/regress46319_test.dart
new file mode 100644
index 0000000..b590822
--- /dev/null
+++ b/tests/lib/async/regress46319_test.dart
@@ -0,0 +1,23 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// Regression test for https://github.com/dart-lang/sdk/issues/46319.
+
+import 'dart:async';
+
+void main() {}
+
+Future<T> fn<T>() {
+  // DDC was crashing during compilation when trying to tag the following
+  // function expression with a type.
+  return hn(() => gn());
+}
+
+S gn<S>() {
+  throw 'in gn';
+}
+
+Future<R> hn<R>(FutureOr<R> Function() foo) {
+  throw 'in hn';
+}
diff --git a/tools/VERSION b/tools/VERSION
index 88bd277..351246b 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 199
+PRERELEASE 200
 PRERELEASE_PATCH 0
\ No newline at end of file