Version 2.9.0-7.0.dev

Merge commit 'd5af40b640f78c9461e57584abc15a73ac138f3c' into dev
diff --git a/benchmarks/Utf8Decode/dart/Utf8Decode.dart b/benchmarks/Utf8Decode/dart/Utf8Decode.dart
index 23762d6..a1b423d 100644
--- a/benchmarks/Utf8Decode/dart/Utf8Decode.dart
+++ b/benchmarks/Utf8Decode/dart/Utf8Decode.dart
@@ -21,9 +21,7 @@
   final String text;
   final int size;
   final bool allowMalformed;
-  final Utf8Decoder decoder;
-  Uint8List data;
-  List<int> chunks;
+  List<Uint8List> chunks;
   int totalInputSize;
   int totalOutputSize;
 
@@ -37,27 +35,27 @@
   }
 
   Utf8Decode(this.language, this.text, this.size, this.allowMalformed)
-      : decoder = Utf8Decoder(allowMalformed: allowMalformed),
-        super(_makeName(language, size, allowMalformed));
+      : super(_makeName(language, size, allowMalformed));
 
   @override
   void setup() {
-    data = utf8.encode(text) as Uint8List;
+    Uint8List data = utf8.encode(text) as Uint8List;
     if (data.length != 10000) {
       throw "Expected input data of exactly 10000 bytes.";
     }
     if (size < data.length) {
       // Split into chunks.
-      chunks = <int>[];
-      chunks.add(0);
+      chunks = <Uint8List>[];
+      int startPos = 0;
       for (int pos = size; pos < data.length; pos += size) {
-        int chunkPos = pos;
-        while ((data[chunkPos] & 0xc0) == 0x80) {
-          chunkPos--;
+        int endPos = pos;
+        while ((data[endPos] & 0xc0) == 0x80) {
+          endPos--;
         }
-        chunks.add(chunkPos);
+        chunks.add(Uint8List.fromList(data.sublist(startPos, endPos)));
+        startPos = endPos;
       }
-      chunks.add(data.length);
+      chunks.add(Uint8List.fromList(data.sublist(startPos, data.length)));
       totalInputSize = data.length;
       totalOutputSize = text.length;
     } else if (size > data.length) {
@@ -66,13 +64,12 @@
       for (int i = 0; i < size; i++) {
         expanded[i] = data[i % data.length];
       }
-      chunks = <int>[0, size];
+      chunks = <Uint8List>[expanded];
       totalInputSize = size;
       totalOutputSize = text.length * size ~/ data.length;
-      data = expanded;
     } else {
       // Use data as is.
-      chunks = <int>[0, data.length];
+      chunks = <Uint8List>[data];
       totalInputSize = data.length;
       totalOutputSize = text.length;
     }
@@ -81,9 +78,8 @@
   @override
   void run() {
     int lengthSum = 0;
-    final int numChunks = chunks.length - 1;
-    for (int i = 0; i < numChunks; i++) {
-      final String s = decoder.convert(data, chunks[i], chunks[i + 1]);
+    for (int i = 0; i < chunks.length; i++) {
+      final String s = utf8.decode(chunks[i], allowMalformed: allowMalformed);
       lengthSum += s.length;
     }
     if (lengthSum != totalOutputSize) {
diff --git a/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart b/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart
index 890d581..3eb33ac 100644
--- a/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart
@@ -1852,26 +1852,10 @@
           [writtenType], tested, true, false, writeCaptured);
     }
 
-    List<Type> newPromotedTypes;
-    if (promotedTypes == null) {
-      newPromotedTypes = null;
-    } else if (typeOperations.isSubtypeOf(writtenType, promotedTypes.last)) {
-      newPromotedTypes = promotedTypes;
-    } else {
-      int numChainElementsToKeep = promotedTypes.length - 1;
-      while (true) {
-        if (numChainElementsToKeep == 0) {
-          newPromotedTypes = null;
-          break;
-        } else if (typeOperations.isSubtypeOf(
-            writtenType, promotedTypes[numChainElementsToKeep - 1])) {
-          newPromotedTypes = promotedTypes.sublist(0, numChainElementsToKeep);
-          break;
-        } else {
-          numChainElementsToKeep--;
-        }
-      }
-    }
+    List<Type> newPromotedTypes = _demoteViaAssignment(
+      writtenType,
+      typeOperations,
+    );
 
     Type declaredType = typeOperations.variableType(variable);
     newPromotedTypes = _tryPromoteToTypeOfInterest(
@@ -1896,6 +1880,29 @@
         null, const [], assigned, false, true);
   }
 
+  List<Type> _demoteViaAssignment(
+    Type writtenType,
+    TypeOperations<Variable, Type> typeOperations,
+  ) {
+    if (promotedTypes == null) {
+      return null;
+    }
+
+    int numElementsToKeep = promotedTypes.length;
+    for (;; numElementsToKeep--) {
+      if (numElementsToKeep == 0) {
+        return null;
+      }
+      Type promoted = promotedTypes[numElementsToKeep - 1];
+      if (typeOperations.isSubtypeOf(writtenType, promoted)) {
+        if (numElementsToKeep == promotedTypes.length) {
+          return promotedTypes;
+        }
+        return promotedTypes.sublist(0, numElementsToKeep);
+      }
+    }
+  }
+
   /// We say that a variable `x` is promotable via initialization given
   /// variable model `VM` if `x` is a local variable (not a formal parameter)
   /// and:
diff --git a/pkg/_fe_analyzer_shared/test/flow_analysis/flow_analysis_test.dart b/pkg/_fe_analyzer_shared/test/flow_analysis/flow_analysis_test.dart
index 67bd777..b03b714 100644
--- a/pkg/_fe_analyzer_shared/test/flow_analysis/flow_analysis_test.dart
+++ b/pkg/_fe_analyzer_shared/test/flow_analysis/flow_analysis_test.dart
@@ -2283,6 +2283,35 @@
       });
     });
 
+    group('demotion, to NonNull', () {
+      test('when promoted via test', () {
+        var x = _Var('x', _Type('Object?'));
+
+        var h = _Harness();
+
+        var s1 = FlowModel<_Var, _Type>(true)
+            .declare(x, true)
+            .tryPromoteForTypeCheck(h, x, _Type('num?'))
+            .ifTrue
+            .tryPromoteForTypeCheck(h, x, _Type('int?'))
+            .ifTrue;
+        expect(s1.variableInfo, {
+          x: _matchVariableModel(
+            chain: ['num?', 'int?'],
+            ofInterest: ['num?', 'int?'],
+          ),
+        });
+
+        var s2 = s1.write(x, _Type('double'), h);
+        expect(s2.variableInfo, {
+          x: _matchVariableModel(
+            chain: ['num?', 'num'],
+            ofInterest: ['num?', 'int?'],
+          ),
+        });
+      });
+    });
+
     group('declare', () {
       var objectQVar = _Var('x', _Type('Object?'));
 
@@ -3131,7 +3160,11 @@
 
 class _Harness implements TypeOperations<_Var, _Type> {
   static const Map<String, bool> _coreSubtypes = const {
+    'double <: Object': true,
+    'double <: num': true,
+    'double <: num?': true,
     'double <: int': false,
+    'double <: int?': false,
     'int <: double': false,
     'int <: int?': true,
     'int <: Iterable': false,
diff --git a/pkg/_fe_analyzer_shared/test/flow_analysis/type_promotion/data/assignment.dart b/pkg/_fe_analyzer_shared/test/flow_analysis/type_promotion/data/assignment.dart
index 929536a..83ff29a 100644
--- a/pkg/_fe_analyzer_shared/test/flow_analysis/type_promotion/data/assignment.dart
+++ b/pkg/_fe_analyzer_shared/test/flow_analysis/type_promotion/data/assignment.dart
@@ -18,6 +18,17 @@
   }
 }
 
+assignmentDepromotes_partial_nonNull(Object? x) {
+  if (x is num?) {
+    /*num?*/ x;
+    if (/*num?*/ x is int?) {
+      /*int?*/ x;
+      x = 1.2;
+      /*num*/ x;
+    }
+  }
+}
+
 assignmentPreservesPromotion(Object x) {
   if (x is num) {
     x = 42;
diff --git a/pkg/analysis_server/lib/src/edit/fix/non_nullable_fix.dart b/pkg/analysis_server/lib/src/edit/fix/non_nullable_fix.dart
index 48ecb59..2b2f011 100644
--- a/pkg/analysis_server/lib/src/edit/fix/non_nullable_fix.dart
+++ b/pkg/analysis_server/lib/src/edit/fix/non_nullable_fix.dart
@@ -75,6 +75,9 @@
 
   Future<void> Function([List<String>]) rerunFunction;
 
+  /// A list of the URLs corresponding to the included roots.
+  List<String> previewUrls;
+
   NonNullableFix(this.listener,
       {List<String> included = const [],
       this.preferredPort,
@@ -87,17 +90,6 @@
   @override
   int get numPhases => 3;
 
-  /// Return a list of the URLs corresponding to the included roots.
-  List<String> get previewUrls => [
-        // TODO(jcollins-g): Change protocol to only return a single string.
-        Uri(
-            scheme: 'http',
-            host: 'localhost',
-            port: port,
-            path: includedRoot,
-            queryParameters: {'authToken': authToken}).toString()
-      ];
-
   @override
   Future<void> finish() async {
     final state = MigrationState(
@@ -110,6 +102,16 @@
       _allServers.add(_server);
       port = await _server.boundPort;
       authToken = await _server.authToken;
+
+      previewUrls = [
+        // TODO(jcollins-g): Change protocol to only return a single string.
+        Uri(
+            scheme: 'http',
+            host: 'localhost',
+            port: port,
+            path: state.pathMapper.map(includedRoot),
+            queryParameters: {'authToken': authToken}).toString()
+      ];
     }
   }
 
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart b/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
index c6ed836..d81478d 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
@@ -12,7 +12,7 @@
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/visitor.dart';
 import 'package:analyzer/dart/element/element.dart'
-    show ClassElement, Element, FieldElement;
+    show ClassElement, CompilationUnitElement, Element, FieldElement;
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/dart/element/type_provider.dart';
 import 'package:analyzer/dart/element/type_system.dart';
@@ -545,13 +545,17 @@
   /// Return `true` if this element, or any enclosing element, has been
   /// annotated with the `@deprecated` annotation.
   bool get hasOrInheritsDeprecated {
-    var element = this;
-    while (element != null) {
+    if (hasDeprecated) {
+      return true;
+    }
+    var element = enclosingElement;
+    if (element is ClassElement) {
       if (element.hasDeprecated) {
         return true;
       }
       element = element.enclosingElement;
     }
-    return false;
+    return element is CompilationUnitElement &&
+        element.enclosingElement.hasDeprecated;
   }
 }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
index 19e0d3a..1164992 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
@@ -4,21 +4,15 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/src/computer/computer_hover.dart';
 import 'package:analysis_server/src/protocol_server.dart'
     show CompletionSuggestion, CompletionSuggestionKind;
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
-import 'package:analysis_server/src/services/completion/dart/feature_computer.dart';
 import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
-import 'package:analysis_server/src/services/completion/dart/utilities.dart';
 import 'package:analysis_server/src/utilities/strings.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/dart/element/type_provider.dart';
-import 'package:analyzer/src/util/comment.dart';
-import 'package:analyzer_plugin/protocol/protocol_common.dart' as protocol
-    show ElementKind;
 import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
 import 'package:analyzer_plugin/src/utilities/visitors/local_declaration_visitor.dart'
     show LocalDeclarationVisitor;
@@ -187,26 +181,16 @@
     if ((opType.includeReturnValueSuggestions &&
             (!opType.inStaticMethodBody || fieldDecl.isStatic)) ||
         suggestLocalFields) {
-      var deprecated = isDeprecated(fieldDecl) || isDeprecated(varDecl);
-      var fieldElement = varDecl.declaredElement;
-      var fieldType = fieldElement.type;
-      var typeName = fieldDecl.fields.type;
-      int relevance;
-      if (useNewRelevance) {
-        relevance = _relevanceForType(fieldType);
-      } else {
-        relevance = DART_RELEVANCE_LOCAL_FIELD;
+      var field = varDecl.declaredElement;
+      var inheritanceDistance = -1.0;
+      var enclosingClass = request.target.containingNode
+          .thisOrAncestorOfType<ClassDeclaration>();
+      if (enclosingClass != null) {
+        inheritanceDistance = request.featureComputer
+            .inheritanceDistanceFeature(
+                enclosingClass.declaredElement, field.enclosingElement);
       }
-      _addLocalSuggestion_includeReturnValueSuggestions(
-        fieldElement,
-        varDecl.name,
-        typeName,
-        protocol.ElementKind.FIELD,
-        isDeprecated: deprecated,
-        relevance: relevance,
-        classDecl: fieldDecl.parent,
-        type: fieldType,
-      );
+      builder.suggestField(field, inheritanceDistance: inheritanceDistance);
     }
   }
 
@@ -214,39 +198,23 @@
   void declaredFunction(FunctionDeclaration declaration) {
     if (opType.includeReturnValueSuggestions ||
         opType.includeVoidReturnSuggestions) {
-      var typeName = declaration.returnType;
-      protocol.ElementKind elemKind;
-      var relevance = DART_RELEVANCE_DEFAULT;
-      if (declaration.isGetter) {
-        elemKind = protocol.ElementKind.GETTER;
-        relevance = DART_RELEVANCE_LOCAL_ACCESSOR;
-      } else if (declaration.isSetter) {
+      if (declaration.isSetter) {
         if (!opType.includeVoidReturnSuggestions) {
           return;
         }
-        elemKind = protocol.ElementKind.SETTER;
-        typeName = NO_RETURN_TYPE;
-        relevance = DART_RELEVANCE_LOCAL_ACCESSOR;
-      } else {
-        if (!opType.includeVoidReturnSuggestions && _isVoid(typeName)) {
+      } else if (!declaration.isGetter) {
+        if (!opType.includeVoidReturnSuggestions &&
+            _isVoid(declaration.returnType)) {
           return;
         }
-        elemKind = protocol.ElementKind.FUNCTION;
-        relevance = DART_RELEVANCE_LOCAL_FUNCTION;
       }
-      if (useNewRelevance) {
-        relevance = _relevanceForType(declaration.declaredElement.returnType);
+      var declaredElement = declaration.declaredElement;
+      if (declaredElement is FunctionElement) {
+        builder.suggestTopLevelFunction(declaredElement, kind: _defaultKind);
+      } else if (declaredElement is PropertyAccessorElement) {
+        builder.suggestTopLevelPropertyAccessor(declaredElement,
+            kind: _defaultKind);
       }
-      _addLocalSuggestion_includeReturnValueSuggestions(
-        declaration.declaredElement,
-        declaration.name,
-        typeName,
-        elemKind,
-        isDeprecated: isDeprecated(declaration),
-        param: declaration.functionExpression.parameters,
-        relevance: relevance,
-        type: declaration.declaredElement.type,
-      );
     }
   }
 
@@ -274,23 +242,7 @@
   @override
   void declaredLocalVar(SimpleIdentifier id, TypeAnnotation typeName) {
     if (opType.includeReturnValueSuggestions) {
-      var variableType = (id.staticElement as LocalVariableElement)?.type;
-      int relevance;
-      if (useNewRelevance) {
-        // TODO(brianwilkerson) Use the distance to the local variable as
-        //  another feature.
-        relevance = _relevanceForType(variableType);
-      } else {
-        relevance = DART_RELEVANCE_LOCAL_VARIABLE;
-      }
-      _addLocalSuggestion_includeReturnValueSuggestions(
-        null,
-        id,
-        typeName,
-        protocol.ElementKind.LOCAL_VARIABLE,
-        relevance: relevance,
-        type: variableType ?? typeProvider.dynamicType,
-      );
+      builder.suggestLocalVariable(id.staticElement as LocalVariableElement);
     }
   }
 
@@ -299,49 +251,22 @@
     if ((opType.includeReturnValueSuggestions ||
             opType.includeVoidReturnSuggestions) &&
         (!opType.inStaticMethodBody || declaration.isStatic)) {
-//      var method = declaration.declaredElement;
-//      // TODO(brianwilkerson) Use request.featureComputer.inheritanceDistance to
-//      //  compute the inheritance distance.
-//      var inheritanceDistance = -1.0;
-//      builder.suggestMethod(method, inheritanceDistance: inheritanceDistance, kind: _defaultKind);
-      protocol.ElementKind elemKind;
-      FormalParameterList param;
-      var typeName = declaration.returnType;
-      var relevance = DART_RELEVANCE_DEFAULT;
-      if (declaration.isGetter) {
-        elemKind = protocol.ElementKind.GETTER;
-        param = null;
-        relevance = DART_RELEVANCE_LOCAL_ACCESSOR;
-      } else if (declaration.isSetter) {
-        if (!opType.includeVoidReturnSuggestions) {
-          return;
-        }
-        elemKind = protocol.ElementKind.SETTER;
-        typeName = NO_RETURN_TYPE;
-        relevance = DART_RELEVANCE_LOCAL_ACCESSOR;
-      } else {
-        if (!opType.includeVoidReturnSuggestions && _isVoid(typeName)) {
-          return;
-        }
-        elemKind = protocol.ElementKind.METHOD;
-        param = declaration.parameters;
-        relevance = DART_RELEVANCE_LOCAL_METHOD;
+      var element = declaration.declaredElement;
+      var inheritanceDistance = -1.0;
+      var enclosingClass = request.target.containingNode
+          .thisOrAncestorOfType<ClassDeclaration>();
+      if (enclosingClass != null) {
+        inheritanceDistance = request.featureComputer
+            .inheritanceDistanceFeature(
+                enclosingClass.declaredElement, element.enclosingElement);
       }
-      if (useNewRelevance) {
-        relevance = _relevanceForType(declaration.declaredElement.returnType);
+      if (element is MethodElement) {
+        builder.suggestMethod(element,
+            inheritanceDistance: inheritanceDistance, kind: _defaultKind);
+      } else if (element is PropertyAccessorElement) {
+        builder.suggestAccessor(element,
+            inheritanceDistance: inheritanceDistance);
       }
-      _addLocalSuggestion_includeReturnValueSuggestions(
-        declaration.declaredElement,
-        declaration.name,
-        typeName,
-        elemKind,
-        isAbstract: declaration.isAbstract,
-        isDeprecated: isDeprecated(declaration),
-        classDecl: declaration.parent,
-        param: param,
-        relevance: relevance,
-        type: declaration.declaredElement.type,
-      );
     }
   }
 
@@ -355,21 +280,15 @@
   @override
   void declaredParam(SimpleIdentifier id, TypeAnnotation typeName) {
     if (opType.includeReturnValueSuggestions) {
-      var parameterType = (id.staticElement as VariableElement).type;
-      int relevance;
-      if (useNewRelevance) {
-        relevance = _relevanceForType(parameterType);
-      } else {
-        relevance = DART_RELEVANCE_PARAMETER;
+      if (_isUnused(id.name)) {
+        return;
       }
-      _addLocalSuggestion_includeReturnValueSuggestions(
-        null,
-        id,
-        typeName,
-        protocol.ElementKind.PARAMETER,
-        relevance: relevance,
-        type: parameterType,
-      );
+      var element = id.staticElement;
+      if (element is ParameterElement) {
+        builder.suggestParameter(element);
+      } else if (element is LocalVariableElement) {
+        builder.suggestCatchParameter(element);
+      }
     }
   }
 
@@ -378,177 +297,21 @@
       VariableDeclarationList varList, VariableDeclaration varDecl) {
     if (opType.includeReturnValueSuggestions) {
       var variableElement = varDecl.declaredElement;
-//      builder.suggestTopLevelPropertyAccessor((variableElement as TopLevelVariableElement).getter);
-      var variableType = variableElement.type;
-      int relevance;
-      if (useNewRelevance) {
-        relevance = _relevanceForType(variableType);
-      } else {
-        relevance = DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE;
-      }
-      _addLocalSuggestion_includeReturnValueSuggestions(
-        variableElement,
-        varDecl.name,
-        varList.type,
-        protocol.ElementKind.TOP_LEVEL_VARIABLE,
-        isDeprecated: isDeprecated(varList) || isDeprecated(varDecl),
-        relevance: relevance,
-        type: variableType,
-      );
+      builder.suggestTopLevelPropertyAccessor(
+          (variableElement as TopLevelVariableElement).getter);
     }
   }
 
   @override
   void declaredTypeParameter(TypeParameter node) {
     if (opType.includeTypeNameSuggestions) {
-      int relevance;
-      if (useNewRelevance) {
-        relevance = Relevance.typeParameter;
-      } else {
-        relevance = DART_RELEVANCE_TYPE_PARAMETER;
-      }
-      _addLocalSuggestion(
-        null,
-        node.name,
-        null,
-        protocol.ElementKind.TYPE_PARAMETER,
-        isDeprecated: isDeprecated(node),
-        kind: CompletionSuggestionKind.IDENTIFIER,
-        relevance: relevance,
-      );
+      builder.suggestTypeParameter(node.declaredElement);
     }
   }
 
-  void _addLocalSuggestion(Element element, SimpleIdentifier id,
-      TypeAnnotation typeName, protocol.ElementKind elemKind,
-      {bool isAbstract = false,
-      bool isDeprecated = false,
-      ClassOrMixinDeclaration classDecl,
-      CompletionSuggestionKind kind,
-      FormalParameterList param,
-      int relevance = DART_RELEVANCE_DEFAULT}) {
-    if (id == null) {
-      return null;
-    }
-    kind ??= _defaultKind;
-    var suggestion = _createLocalSuggestion(
-        id, isDeprecated, relevance, typeName,
-        classDecl: classDecl, kind: kind);
-    if (suggestion != null) {
-      _setDocumentation(suggestion, element);
-      if (!useNewRelevance &&
-          privateMemberRelevance != null &&
-          suggestion.completion.startsWith('_')) {
-        suggestion.relevance = privateMemberRelevance;
-      }
-      suggestionMap.putIfAbsent(suggestion.completion, () => suggestion);
-      suggestion.element = createLocalElement(request.source, elemKind, id,
-          isAbstract: isAbstract,
-          isDeprecated: isDeprecated,
-          parameters: param?.toSource(),
-          returnType: typeName);
-      if ((elemKind == protocol.ElementKind.METHOD ||
-              elemKind == protocol.ElementKind.FUNCTION) &&
-          param != null) {
-        _addParameterInfo(suggestion, param);
-      }
-    }
-  }
-
-  void _addLocalSuggestion_includeReturnValueSuggestions(
-      Element element,
-      SimpleIdentifier id,
-      TypeAnnotation typeName,
-      protocol.ElementKind elemKind,
-      {bool isAbstract = false,
-      bool isDeprecated = false,
-      ClassOrMixinDeclaration classDecl,
-      FormalParameterList param,
-      int relevance = DART_RELEVANCE_DEFAULT,
-      @required DartType type}) {
-    if (!useNewRelevance) {
-      relevance = opType.returnValueSuggestionsFilter(type, relevance);
-    }
-    if (relevance != null) {
-      _addLocalSuggestion(element, id, typeName, elemKind,
-          isAbstract: isAbstract,
-          isDeprecated: isDeprecated,
-          classDecl: classDecl,
-          param: param,
-          relevance: relevance);
-    }
-  }
-
-  void _addParameterInfo(
-      CompletionSuggestion suggestion, FormalParameterList parameters) {
-    var paramList = parameters.parameters;
-    suggestion.parameterNames = paramList
-        .map((FormalParameter param) => param.identifier.name)
-        .toList();
-    suggestion.parameterTypes = paramList.map((FormalParameter param) {
-      TypeAnnotation type;
-      if (param is DefaultFormalParameter) {
-        var child = param.parameter;
-        if (child is SimpleFormalParameter) {
-          type = child.type;
-        } else if (child is FieldFormalParameter) {
-          type = child.type;
-        }
-      }
-      if (param is SimpleFormalParameter) {
-        type = param.type;
-      } else if (param is FieldFormalParameter) {
-        type = param.type;
-      }
-      if (type == null) {
-        return 'dynamic';
-      }
-      if (type is TypeName) {
-        var typeId = type.name;
-        if (typeId == null) {
-          return 'dynamic';
-        }
-        return typeId.name;
-      }
-      // TODO(brianwilkerson) Support function types.
-      return 'dynamic';
-    }).toList();
-
-    var requiredParameters = paramList
-        .where((FormalParameter param) => param.isRequiredPositional)
-        .map((p) => p.declaredElement);
-    suggestion.requiredParameterCount = requiredParameters.length;
-
-    var namedParameters = paramList
-        .where((FormalParameter param) => param.isNamed)
-        .map((p) => p.declaredElement);
-    suggestion.hasNamedParameters = namedParameters.isNotEmpty;
-
-    addDefaultArgDetails(suggestion, null, requiredParameters, namedParameters);
-  }
-
-  /// Create a new suggestion based upon the given information. Return the new
-  /// suggestion or `null` if it could not be created.
-  CompletionSuggestion _createLocalSuggestion(SimpleIdentifier id,
-      bool isDeprecated, int relevance, TypeAnnotation returnType,
-      {ClassOrMixinDeclaration classDecl,
-      @required CompletionSuggestionKind kind}) {
-    var completion = id.name;
-    if (completion == null || completion.isEmpty || completion == '_') {
-      return null;
-    }
-    if (!useNewRelevance) {
-      relevance = isDeprecated ? DART_RELEVANCE_LOW : relevance;
-    }
-    var suggestion = CompletionSuggestion(
-        kind, relevance, completion, completion.length, 0, isDeprecated, false,
-        returnType: nameForType(id, returnType));
-    var className = classDecl?.name?.name;
-    if (className != null && className.isNotEmpty) {
-      suggestion.declaringType = className;
-    }
-    return suggestion;
-  }
+  /// Return `true` if the [identifier] is composed of one or more underscore
+  /// characters and nothing else.
+  bool _isUnused(String identifier) => RegExp(r'^_+$').hasMatch(identifier);
 
   bool _isVoid(TypeAnnotation returnType) {
     if (returnType is TypeName) {
@@ -559,25 +322,4 @@
     }
     return false;
   }
-
-  /// Return the relevance for an element with the given [elementType].
-  int _relevanceForType(DartType elementType) {
-    var contextTypeFeature =
-        request.featureComputer.contextTypeFeature(contextType, elementType);
-    // TODO(brianwilkerson) Figure out whether there are other features that
-    //  ought to be used here and what the right default value is. It's possible
-    //  that the right default value depends on where this is called from.
-    return toRelevance(contextTypeFeature, 800);
-  }
-
-  /// If the given [documentationComment] is not `null`, fill the [suggestion]
-  /// documentation fields.
-  void _setDocumentation(CompletionSuggestion suggestion, Element element) {
-    var doc = DartUnitHoverComputer.computeDocumentation(
-        request.dartdocDirectiveInfo, element);
-    if (doc != null) {
-      suggestion.docComplete = doc;
-      suggestion.docSummary = getDartDocSummary(doc);
-    }
-  }
 }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/named_constructor_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/named_constructor_contributor.dart
index 04b783e..c8d6130 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/named_constructor_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/named_constructor_contributor.dart
@@ -32,7 +32,7 @@
         if (type != null) {
           var element = type.element;
           if (element is ClassElement) {
-            return _buildSuggestions(request, libraryElement, element);
+            _buildSuggestions(request, builder, libraryElement, element);
           }
         }
       }
@@ -40,27 +40,19 @@
     return const <CompletionSuggestion>[];
   }
 
-  List<CompletionSuggestion> _buildSuggestions(DartCompletionRequest request,
-      LibraryElement libElem, ClassElement classElem) {
+  void _buildSuggestions(
+      DartCompletionRequest request,
+      SuggestionBuilder builder,
+      LibraryElement libElem,
+      ClassElement classElem) {
     var isLocalClassDecl = classElem.library == libElem;
-    var suggestions = <CompletionSuggestion>[];
     for (var constructor in classElem.constructors) {
       if (isLocalClassDecl || !constructor.isPrivate) {
         var name = constructor.name;
         if (name != null) {
-          var relevance = request.useNewRelevance
-              ? Relevance.namedConstructor
-              : (constructor.hasDeprecated
-                  ? DART_RELEVANCE_LOW
-                  : DART_RELEVANCE_DEFAULT);
-          var suggestion = createSuggestion(request, constructor,
-              completion: name, relevance: relevance);
-          if (suggestion != null) {
-            suggestions.add(suggestion);
-          }
+          builder.suggestConstructor(constructor, hasClassName: true);
         }
       }
     }
-    return suggestions;
   }
 }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
index 6a4aeed..cad2006 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
@@ -15,6 +15,7 @@
 import 'package:analysis_server/src/services/completion/dart/utilities.dart';
 import 'package:analysis_server/src/utilities/flutter.dart';
 import 'package:analyzer/dart/analysis/features.dart';
+import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/nullability_suffix.dart';
 import 'package:analyzer/dart/element/type.dart';
@@ -26,6 +27,7 @@
 CompletionSuggestion createSuggestion(
     DartCompletionRequest request, Element element,
     {String completion,
+    protocol.ElementKind elementKind,
     CompletionSuggestionKind kind,
     int relevance = DART_RELEVANCE_DEFAULT}) {
   if (element == null) {
@@ -52,6 +54,9 @@
   }
 
   suggestion.element = protocol.convertElement(element);
+  if (elementKind != null) {
+    suggestion.element.kind = elementKind;
+  }
   var enclosingElement = element.enclosingElement;
   if (enclosingElement is ClassElement) {
     suggestion.declaringType = enclosingElement.displayName;
@@ -298,12 +303,22 @@
   //  approach is followed.
   bool laterReplacesEarlier = true;
 
+  /// A flag indicating whether the [_cachedContainingMemberName] has been
+  /// computed.
+  bool _hasContainingMemberName = false;
+
+  /// The name of the member containing the completion location, or `null` if
+  /// either the completion location isn't within a member, the target of the
+  /// completion isn't `super`, or the name of the member hasn't yet been
+  /// computed. In the latter case, [_hasContainingMemberName] will be `false`.
+  String _cachedContainingMemberName;
+
   /// A flag indicating whether the [_cachedContextType] has been computed.
   bool _hasContextType = false;
 
   /// The context type associated with the completion location, or `null` if
-  /// either the location does not have a context type, or if the context type
-  /// has not yet been computed. In the latter case, [_hasContextType] will be
+  /// either the location doesn't have a context type, or the context type
+  /// hasn't yet been computed. In the latter case, [_hasContextType] will be
   /// `false`.
   DartType _cachedContextType;
 
@@ -323,6 +338,28 @@
   /// that have been built.
   Iterable<CompletionSuggestion> get suggestions => _suggestionMap.values;
 
+  /// Return the name of the member containing the completion location, or
+  /// `null` if the completion location isn't within a member or if the target
+  /// of the completion isn't `super`.
+  String get _containingMemberName {
+    if (!_hasContainingMemberName) {
+      _hasContainingMemberName = true;
+      if (request.dotTarget is SuperExpression) {
+        var containingMethod = request.target.containingNode
+            .thisOrAncestorOfType<MethodDeclaration>();
+        if (containingMethod != null) {
+          var id = containingMethod.name;
+          if (id != null) {
+            _cachedContainingMemberName = id.name;
+          }
+        }
+      }
+    }
+    return _cachedContainingMemberName;
+  }
+
+  /// Return the context type associated with the completion location, or `null`
+  /// if the location doesn't have a context type.
   DartType get _contextType {
     if (!_hasContextType) {
       _hasContextType = true;
@@ -332,41 +369,29 @@
     return _cachedContextType;
   }
 
-  /// Add a suggestion for the [accessor]. If the accessor is being invoked with
-  /// a target of `super`, then the [containingMemberName] should be the name of
-  /// the member containing the invocation. The [inheritanceDistance] is the
-  /// value of the inheritance distance feature computed for the method.
+  /// Add a suggestion for an [accessor] declared within a class or extension.
+  /// If the accessor is being invoked with a target of `super`, then the
+  /// [containingMemberName] should be the name of the member containing the
+  /// invocation. The [inheritanceDistance] is the value of the inheritance
+  /// distance feature computed for the accessor (or `-1.0` if the accessor is a
+  /// static accessor).
   void suggestAccessor(PropertyAccessorElement accessor,
       {String containingMemberName, @required double inheritanceDistance}) {
+    // TODO(brianwilkerson) Remove [containingMemberName].
+    containingMemberName ??= _containingMemberName;
+    assert(accessor.enclosingElement is ClassElement ||
+        accessor.enclosingElement is ExtensionElement);
     if (accessor.isSynthetic) {
       // Avoid visiting a field twice. All fields induce a getter, but only
       // non-final fields induce a setter, so we don't add a suggestion for a
       // synthetic setter.
       if (accessor.isGetter) {
         var variable = accessor.variable;
-        int relevance;
-        if (request.useNewRelevance) {
-          var featureComputer = request.featureComputer;
-          var contextType = featureComputer.contextTypeFeature(
-              request.contextType, variable.type);
-          var elementKind = featureComputer.elementKindFeature(
-              variable, request.opType.completionLocation);
-          var hasDeprecated = featureComputer.hasDeprecatedFeature(accessor);
-          var startsWithDollar =
-              featureComputer.startsWithDollarFeature(accessor.name);
-          var superMatches = featureComputer.superMatchesFeature(
-              containingMemberName, accessor.name);
-          relevance = _computeMemberRelevance(
-              contextType: contextType,
-              elementKind: elementKind,
-              hasDeprecated: hasDeprecated,
-              inheritanceDistance: inheritanceDistance,
-              startsWithDollar: startsWithDollar,
-              superMatches: superMatches);
-        } else {
-          relevance = _computeOldMemberRelevance(accessor);
+        if (variable is FieldElement) {
+          suggestField(variable,
+              containingMemberName: containingMemberName,
+              inheritanceDistance: inheritanceDistance);
         }
-        _add(createSuggestion(request, variable, relevance: relevance));
       }
     } else {
       var type =
@@ -392,12 +417,40 @@
             superMatches: superMatches);
       } else {
         relevance = _computeOldMemberRelevance(accessor);
+        if (request.opType.includeReturnValueSuggestions) {
+          relevance =
+              request.opType.returnValueSuggestionsFilter(type, relevance);
+        }
+        if (relevance == null) {
+          return;
+        }
       }
       _add(createSuggestion(request, accessor, relevance: relevance));
     }
   }
 
-  /// Add a suggestion for the [classElement]. If a [kind] is provided it will
+  /// Add a suggestion for a catch [parameter].
+  void suggestCatchParameter(LocalVariableElement parameter) {
+    var variableType = parameter.type;
+    int relevance;
+    if (request.useNewRelevance) {
+      var contextTypeFeature = request.featureComputer
+          .contextTypeFeature(_contextType, variableType);
+      relevance = toRelevance(contextTypeFeature, 800);
+    } else {
+      relevance = _computeOldMemberRelevance(parameter);
+      relevance =
+          request.opType.returnValueSuggestionsFilter(variableType, relevance);
+      if (relevance == null) {
+        return;
+      }
+    }
+
+    _add(createSuggestion(request, parameter,
+        elementKind: protocol.ElementKind.PARAMETER, relevance: relevance));
+  }
+
+  /// Add a suggestion for a [classElement]. If a [kind] is provided it will
   /// be used as the kind for the suggestion.
   void suggestClass(ClassElement classElement,
       {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION}) {
@@ -419,10 +472,13 @@
         kind: kind, relevance: relevance));
   }
 
-  /// Add a suggestion for the [constructor]. If a [kind] is provided
-  /// it will be used as the kind for the suggestion.
+  /// Add a suggestion for a [constructor]. If a [kind] is provided it will be
+  /// used as the kind for the suggestion. The flag [hasClassName] should be
+  /// `true` if the completion is occurring after the name of the class and a
+  /// period, and hence should not include the name of the class.
   void suggestConstructor(ConstructorElement constructor,
-      {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION}) {
+      {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION,
+      bool hasClassName = false}) {
     var classElement = constructor.enclosingElement;
     if (classElement == null) {
       return;
@@ -435,7 +491,7 @@
     }
 
     var completion = constructor.displayName;
-    if (prefix != null && prefix.isNotEmpty) {
+    if (!hasClassName && prefix != null && prefix.isNotEmpty) {
       if (completion == null || completion.isEmpty) {
         completion = prefix;
       } else {
@@ -459,7 +515,7 @@
         completion: completion, kind: kind, relevance: relevance));
   }
 
-  /// Add a suggestion for the top-level [element]. If a [kind] is provided it
+  /// Add a suggestion for a top-level [element]. If a [kind] is provided it
   /// will be used as the kind for the suggestion.
   void suggestElement(Element element,
       {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION}) {
@@ -482,7 +538,7 @@
     }
   }
 
-  /// Add a suggestion for the enum [constant].
+  /// Add a suggestion for an enum [constant].
   void suggestEnumConstant(FieldElement constant) {
     var constantName = constant.name;
     var enumElement = constant.enclosingElement;
@@ -507,7 +563,7 @@
         completion: completion, relevance: relevance));
   }
 
-  /// Add a suggestion for the [extension]. If a [kind] is provided it will be
+  /// Add a suggestion for an [extension]. If a [kind] is provided it will be
   /// used as the kind for the suggestion.
   void suggestExtension(ExtensionElement extension,
       {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION}) {
@@ -525,7 +581,48 @@
         createSuggestion(request, extension, kind: kind, relevance: relevance));
   }
 
-  /// Add a suggestion to reference the [field] in a field formal parameter.
+  /// Add a suggestion for a [field]. If the field is being referenced with a
+  /// target of `super`, then the [containingMemberName] should be the name of
+  /// the member containing the reference. The [inheritanceDistance] is the
+  /// value of the inheritance distance feature computed for the field (or
+  /// `-1.0` if the field is a static field).
+  void suggestField(FieldElement field,
+      {String containingMemberName, @required double inheritanceDistance}) {
+    // TODO(brianwilkerson) Remove [containingMemberName].
+    containingMemberName ??= _containingMemberName;
+    int relevance;
+    if (request.useNewRelevance) {
+      var featureComputer = request.featureComputer;
+      var contextType =
+          featureComputer.contextTypeFeature(request.contextType, field.type);
+      var elementKind = featureComputer.elementKindFeature(
+          field, request.opType.completionLocation);
+      var hasDeprecated = featureComputer.hasDeprecatedFeature(field);
+      var startsWithDollar =
+          featureComputer.startsWithDollarFeature(field.name);
+      var superMatches =
+          featureComputer.superMatchesFeature(containingMemberName, field.name);
+      relevance = _computeMemberRelevance(
+          contextType: contextType,
+          elementKind: elementKind,
+          hasDeprecated: hasDeprecated,
+          inheritanceDistance: inheritanceDistance,
+          startsWithDollar: startsWithDollar,
+          superMatches: superMatches);
+    } else {
+      relevance = _computeOldMemberRelevance(field);
+      if (request.opType.includeReturnValueSuggestions) {
+        relevance =
+            request.opType.returnValueSuggestionsFilter(field.type, relevance);
+      }
+      if (relevance == null) {
+        return;
+      }
+    }
+    _add(createSuggestion(request, field, relevance: relevance));
+  }
+
+  /// Add a suggestion to reference a [field] in a field formal parameter.
   void suggestFieldFormalParameter(FieldElement field) {
     // TODO(brianwilkerson) Add a parameter (`bool includePrefix`) indicating
     //  whether to include the `this.` prefix in the completion.
@@ -559,7 +656,7 @@
     ));
   }
 
-  /// Add a suggestion for the [functionTypeAlias]. If a [kind] is provided it
+  /// Add a suggestion for a [functionTypeAlias]. If a [kind] is provided it
   /// will be used as the kind for the suggestion.
   void suggestFunctionTypeAlias(FunctionTypeAliasElement functionTypeAlias,
       {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION}) {
@@ -596,7 +693,29 @@
     _add(createSuggestion(request, function, relevance: relevance));
   }
 
-  /// Add a suggestion for the [method]. If the method is being invoked with a
+  /// Add a suggestion for a local [variable].
+  void suggestLocalVariable(LocalVariableElement variable) {
+    var variableType = variable.type;
+    int relevance;
+    if (request.useNewRelevance) {
+      // TODO(brianwilkerson) Use the distance to the local variable as
+      //  another feature.
+      var contextTypeFeature = request.featureComputer
+          .contextTypeFeature(_contextType, variableType);
+      relevance = toRelevance(contextTypeFeature, 800);
+    } else {
+      relevance = _computeOldMemberRelevance(variable);
+      relevance =
+          request.opType.returnValueSuggestionsFilter(variableType, relevance);
+      if (relevance == null) {
+        return;
+      }
+    }
+
+    _add(createSuggestion(request, variable, relevance: relevance));
+  }
+
+  /// Add a suggestion for a [method]. If the method is being invoked with a
   /// target of `super`, then the [containingMemberName] should be the name of
   /// the member containing the invocation. If a [kind] is provided it will be
   /// used as the kind for the suggestion. The [inheritanceDistance] is the
@@ -605,6 +724,8 @@
       {String containingMemberName,
       CompletionSuggestionKind kind,
       @required double inheritanceDistance}) {
+    // TODO(brianwilkerson) Remove [containingMemberName].
+    containingMemberName ??= _containingMemberName;
     // TODO(brianwilkerson) Refactor callers so that we're passing in the type
     //  of the target (assuming we don't already have that type available via
     //  the [request]) and compute the [inheritanceDistance] in this method.
@@ -630,6 +751,13 @@
     } else {
       relevance = _computeOldMemberRelevance(method,
           containingMethodName: containingMemberName);
+      if (request.opType.includeReturnValueSuggestions) {
+        relevance = request.opType
+            .returnValueSuggestionsFilter(method.returnType, relevance);
+      }
+      if (relevance == null) {
+        return;
+      }
     }
 
     var suggestion =
@@ -664,7 +792,29 @@
     }
   }
 
-  /// Add a suggestion for the top-level [function]. If a [kind] is provided it
+  /// Add a suggestion for a [parameter].
+  void suggestParameter(ParameterElement parameter) {
+    var variableType = parameter.type;
+    int relevance;
+    if (request.useNewRelevance) {
+      // TODO(brianwilkerson) Use the distance to the declaring function as
+      //  another feature.
+      var contextTypeFeature = request.featureComputer
+          .contextTypeFeature(_contextType, variableType);
+      relevance = toRelevance(contextTypeFeature, 800);
+    } else {
+      relevance = _computeOldMemberRelevance(parameter);
+      relevance =
+          request.opType.returnValueSuggestionsFilter(variableType, relevance);
+      if (relevance == null) {
+        return;
+      }
+    }
+
+    _add(createSuggestion(request, parameter, relevance: relevance));
+  }
+
+  /// Add a suggestion for a top-level [function]. If a [kind] is provided it
   /// will be used as the kind for the suggestion.
   void suggestTopLevelFunction(FunctionElement function,
       {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION}) {
@@ -678,42 +828,103 @@
       relevance = function.library == request.libraryElement
           ? DART_RELEVANCE_LOCAL_FUNCTION
           : DART_RELEVANCE_DEFAULT;
+      relevance =
+          request.opType.returnValueSuggestionsFilter(function.type, relevance);
+      if (relevance == null) {
+        return;
+      }
     }
 
     _add(createSuggestion(request, function, kind: kind, relevance: relevance));
   }
 
-  /// Add a suggestion for the top-level property [accessor]. If a [kind] is
+  /// Add a suggestion for a top-level property [accessor]. If a [kind] is
   /// provided it will be used as the kind for the suggestion.
   void suggestTopLevelPropertyAccessor(PropertyAccessorElement accessor,
       {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION}) {
-    if (accessor.isSetter && accessor.isSynthetic) {
-      // TODO(brianwilkerson) Only discard the setter if a suggestion is built
-      //  for the corresponding getter. Currently that's always the case.
-      //  Handling this more generally will require the ability to build
-      //  suggestions for setters and then remove them later when the
-      //  corresponding getter is found.
-      return;
+    assert(accessor.enclosingElement is CompilationUnitElement);
+    if (accessor.isSynthetic) {
+      // Avoid visiting a field twice. All fields induce a getter, but only
+      // non-final fields induce a setter, so we don't add a suggestion for a
+      // synthetic setter.
+      if (accessor.isGetter) {
+        var variable = accessor.variable;
+        if (variable is TopLevelVariableElement) {
+          suggestTopLevelVariable(variable, kind: kind);
+        }
+      }
+    } else {
+      var type =
+          accessor.isGetter ? accessor.returnType : accessor.parameters[0].type;
+      int relevance;
+      if (request.useNewRelevance) {
+        var featureComputer = request.featureComputer;
+        var contextType =
+            featureComputer.contextTypeFeature(request.contextType, type);
+        var elementKind = featureComputer.elementKindFeature(
+            accessor, request.opType.completionLocation);
+        var hasDeprecated = featureComputer.hasDeprecatedFeature(accessor);
+        var startsWithDollar =
+            featureComputer.startsWithDollarFeature(accessor.name);
+        relevance = _computeMemberRelevance(
+            contextType: contextType,
+            elementKind: elementKind,
+            hasDeprecated: hasDeprecated,
+            inheritanceDistance: -1.0,
+            startsWithDollar: startsWithDollar,
+            superMatches: -1.0);
+      } else {
+        relevance = _computeOldMemberRelevance(accessor);
+        if (request.opType.includeReturnValueSuggestions) {
+          relevance =
+              request.opType.returnValueSuggestionsFilter(type, relevance);
+        }
+        if (relevance == null) {
+          return;
+        }
+      }
+      _add(createSuggestion(request, accessor, relevance: relevance));
     }
-    // TODO(brianwilkerson) Should we use the variable only when the [element]
-    //  is synthetic?
-    var variable = accessor.variable;
+  }
+
+  /// Add a suggestion for a top-level [variable]. If a [kind] is provided it
+  /// will be used as the kind for the suggestion.
+  void suggestTopLevelVariable(TopLevelVariableElement variable,
+      {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION}) {
+    assert(variable.enclosingElement is CompilationUnitElement);
     int relevance;
     if (request.useNewRelevance) {
       relevance =
           _computeTopLevelRelevance(variable, elementType: variable.type);
-    } else if (accessor.hasOrInheritsDeprecated) {
+    } else if (variable.hasOrInheritsDeprecated) {
       relevance = DART_RELEVANCE_LOW;
     } else {
-      relevance = variable.library == request.libraryElement
-          ? DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE
-          : DART_RELEVANCE_DEFAULT;
+      var type = variable.type;
+      relevance = _computeOldMemberRelevance(variable);
+      relevance = request.opType.returnValueSuggestionsFilter(type, relevance);
+      if (relevance == null) {
+        return;
+      }
     }
 
     _add(createSuggestion(request, variable, kind: kind, relevance: relevance));
   }
 
-  /// Add the given [suggestion] if it isn't `null`.
+  /// Add a suggestion for a type [parameter].
+  void suggestTypeParameter(TypeParameterElement parameter) {
+    int relevance;
+    if (request.useNewRelevance) {
+      relevance = Relevance.typeParameter;
+    } else {
+      relevance = _computeOldMemberRelevance(parameter);
+    }
+
+    _add(createSuggestion(request, parameter,
+        kind: CompletionSuggestionKind.IDENTIFIER, relevance: relevance));
+  }
+
+  /// Add the given [suggestion] if it isn't `null` and if it isn't shadowed by
+  /// a previously added suggestion.
   void _add(protocol.CompletionSuggestion suggestion) {
     if (suggestion != null) {
       if (laterReplacesEarlier) {
@@ -762,6 +973,8 @@
   /// Compute the old relevance score for a member.
   int _computeOldMemberRelevance(Element member,
       {String containingMethodName}) {
+    // TODO(brianwilkerson) Remove [containingMethodName].
+    containingMethodName ??= _containingMemberName;
     if (member.hasOrInheritsDeprecated) {
       return DART_RELEVANCE_LOW;
     } else if (member.name == containingMethodName) {
@@ -775,6 +988,28 @@
       // https://github.com/dart-lang/sdk/issues/27303
       return DART_RELEVANCE_LOW;
     }
+    if (member is LocalVariableElement) {
+      return DART_RELEVANCE_LOCAL_VARIABLE;
+    }
+    if (!member.name.startsWith('_') &&
+        member.library == request.libraryElement) {
+      // Locally declared elements sometimes have a special relevance.
+      if (member is PropertyAccessorElement) {
+        return DART_RELEVANCE_LOCAL_ACCESSOR;
+      } else if (member is FieldElement) {
+        return DART_RELEVANCE_LOCAL_FIELD;
+      } else if (member is FunctionElement) {
+        return DART_RELEVANCE_LOCAL_FUNCTION;
+      } else if (member is MethodElement) {
+        return DART_RELEVANCE_LOCAL_METHOD;
+      } else if (member is ParameterElement) {
+        return DART_RELEVANCE_PARAMETER;
+      } else if (member is TopLevelVariableElement) {
+        return DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE;
+      } else if (member is TypeParameterElement) {
+        return DART_RELEVANCE_TYPE_PARAMETER;
+      }
+    }
     return DART_RELEVANCE_DEFAULT;
   }
 
diff --git a/pkg/analysis_server/test/domain_completion_test.dart b/pkg/analysis_server/test/domain_completion_test.dart
index 0d7f152..1db1f61 100644
--- a/pkg/analysis_server/test/domain_completion_test.dart
+++ b/pkg/analysis_server/test/domain_completion_test.dart
@@ -540,7 +540,8 @@
     return getSuggestions().then((_) {
       expect(replacementOffset, equals(completionOffset));
       expect(replacementLength, equals(0));
-      assertHasResult(CompletionSuggestionKind.INVOCATION, 'm');
+      assertHasResult(CompletionSuggestionKind.INVOCATION, 'm',
+          relevance: DART_RELEVANCE_LOCAL_METHOD);
     });
   }
 
@@ -569,7 +570,8 @@
     return getSuggestions().then((_) {
       expect(replacementOffset, equals(completionOffset));
       expect(replacementLength, equals(0));
-      assertHasResult(CompletionSuggestionKind.INVOCATION, 'b');
+      assertHasResult(CompletionSuggestionKind.INVOCATION, 'b',
+          relevance: DART_RELEVANCE_LOCAL_METHOD);
     });
   }
 
@@ -601,7 +603,8 @@
     return getSuggestions().then((_) {
       expect(replacementOffset, equals(completionOffset));
       expect(replacementLength, equals(0));
-      assertHasResult(CompletionSuggestionKind.INVOCATION, 'b');
+      assertHasResult(CompletionSuggestionKind.INVOCATION, 'b',
+          relevance: DART_RELEVANCE_LOCAL_METHOD);
     });
   }
 
@@ -611,7 +614,7 @@
 main(A p) { var v1 = p.is^; }''');
     await getSuggestions();
     assertHasResult(CompletionSuggestionKind.INVOCATION, 'isVisible',
-        relevance: DART_RELEVANCE_DEFAULT);
+        relevance: DART_RELEVANCE_LOCAL_FIELD);
   }
 
   Future<void> test_keyword() {
@@ -674,8 +677,7 @@
     return getSuggestions().then((_) {
       expect(replacementOffset, equals(completionOffset));
       expect(replacementLength, equals(0));
-      assertHasResult(CompletionSuggestionKind.INVOCATION, 'm',
-          relevance: DART_RELEVANCE_LOCAL_METHOD);
+      assertHasResult(CompletionSuggestionKind.INVOCATION, 'm');
     });
   }
 
@@ -741,8 +743,7 @@
     return getSuggestions().then((_) {
       expect(replacementOffset, equals(completionOffset));
       expect(replacementLength, equals(0));
-      assertHasResult(CompletionSuggestionKind.INVOCATION, 'm',
-          relevance: DART_RELEVANCE_LOCAL_METHOD);
+      assertHasResult(CompletionSuggestionKind.INVOCATION, 'm');
     });
   }
 
diff --git a/pkg/analysis_server/test/services/completion/dart/common_usage_sorter_test.dart b/pkg/analysis_server/test/services/completion/dart/common_usage_sorter_test.dart
index be5ab67..f917fa6 100644
--- a/pkg/analysis_server/test/services/completion/dart/common_usage_sorter_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/common_usage_sorter_test.dart
@@ -108,7 +108,8 @@
     });
     expect(replacementOffset, equals(completionOffset));
     expect(replacementLength, equals(0));
-    assertHasResult(CompletionSuggestionKind.INVOCATION, 'g1');
+    assertHasResult(CompletionSuggestionKind.INVOCATION, 'g1',
+        relevance: DART_RELEVANCE_LOCAL_ACCESSOR);
     assertHasResult(CompletionSuggestionKind.INVOCATION, 'g2',
         relevance: DART_RELEVANCE_COMMON_USAGE);
     assertNoResult('Future');
@@ -124,7 +125,8 @@
     });
     expect(replacementOffset, equals(completionOffset));
     expect(replacementLength, equals(0));
-    assertHasResult(CompletionSuggestionKind.INVOCATION, 's1');
+    assertHasResult(CompletionSuggestionKind.INVOCATION, 's1',
+        relevance: DART_RELEVANCE_LOCAL_ACCESSOR);
     assertHasResult(CompletionSuggestionKind.INVOCATION, 's2',
         relevance: DART_RELEVANCE_COMMON_USAGE);
     assertNoResult('Future');
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 3f94e1f..6827874 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
@@ -1552,7 +1552,18 @@
 
   Future<void> test_CatchClause_typed() async {
     // Block  CatchClause  TryStatement
-    addTestSource('class A {a() {try{var x;} on E catch (e) {^}}}');
+    addTestSource('''
+class A {
+  a() {
+    try {
+      var x;
+    } on E catch (e) {
+      ^
+    }
+  }
+}
+class E {}
+''');
     await computeSuggestions();
 
     expect(replacementOffset, completionOffset);
@@ -3016,8 +3027,12 @@
   Future<void> test_FunctionExpression_body_function() async {
     // Block  BlockFunctionBody  FunctionExpression
     addTestSource('''
-        void bar() { }
-        String foo(List args) {x.then((R b) {^});}''');
+void bar() { }
+String foo(List args) {
+  x.then((R b) {^});
+}
+class R {}
+''');
     await computeSuggestions();
 
     expect(replacementOffset, completionOffset);
@@ -3070,7 +3085,15 @@
   Future<void> test_IfStatement() async {
     // SimpleIdentifier  IfStatement
     addTestSource('''
-        class A {var b; X _c; foo() {A a; if (true) ^}}''');
+class A {
+  var b;
+  X _c;
+  foo() {
+    A a; if (true) ^
+  }
+}
+class X {}
+''');
     await computeSuggestions();
 
     expect(replacementOffset, completionOffset);
@@ -3101,7 +3124,16 @@
   Future<void> test_IfStatement_empty() async {
     // SimpleIdentifier  IfStatement
     addTestSource('''
-        class A {var b; X _c; foo() {A a; if (^) something}}''');
+class A {
+  var b;
+  X _c;
+  foo() {
+    A a;
+    if (^) something
+  }
+}
+class X {}
+''');
     await computeSuggestions();
 
     expect(replacementOffset, completionOffset);
@@ -3116,13 +3148,22 @@
   Future<void> test_IfStatement_empty_private() async {
     // SimpleIdentifier  IfStatement
     addTestSource('''
-        class A {var b; X _c; foo() {A a; if (_^) something}}''');
+class A {
+  var b;
+  X _c;
+  foo() {
+    A a;
+    if (_^) something
+  }
+}
+class X {}
+''');
     await computeSuggestions();
 
     expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestField('b', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
-    assertSuggestField('_c', 'X', relevance: DART_RELEVANCE_LOCAL_FIELD);
+    assertSuggestField('_c', 'X', relevance: DART_RELEVANCE_DEFAULT);
     assertNotSuggested('Object');
     assertSuggestClass('A');
     assertNotSuggested('==');
@@ -3739,7 +3780,16 @@
 
   Future<void> test_MethodDeclaration_body_getters() async {
     // Block  BlockFunctionBody  MethodDeclaration
-    addTestSource('class A {@deprecated X get f => 0; Z a() {^} get _g => 1;}');
+    addTestSource('''
+class A {
+  @deprecated
+  X get f => 0;
+  Z a() {^}
+  get _g => 1;
+}
+class X {}
+class Z {}
+''');
     await computeSuggestions();
 
     expect(replacementOffset, completionOffset);
@@ -3804,7 +3854,15 @@
 
   Future<void> test_MethodDeclaration_members() async {
     // Block  BlockFunctionBody  MethodDeclaration
-    addTestSource('class A {@deprecated X f; Z _a() {^} var _g;}');
+    addTestSource('''
+class A {
+  @deprecated X f;
+  Z _a() {^}
+  var _g;
+}
+class X {}
+class Z {}
+''');
     await computeSuggestions();
 
     expect(replacementOffset, completionOffset);
@@ -3835,13 +3893,22 @@
 
   Future<void> test_MethodDeclaration_members_private() async {
     // Block  BlockFunctionBody  MethodDeclaration
-    addTestSource('class A {@deprecated X f; Z _a() {_^} var _g;}');
+    addTestSource('''
+class A {
+  @deprecated
+  X f;
+  Z _a() {_^}
+  var _g;
+}
+class X {}
+class Z {}
+''');
     await computeSuggestions();
 
     expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
-    var methodA = assertSuggestMethod('_a', 'A', 'Z',
-        relevance: DART_RELEVANCE_LOCAL_METHOD);
+    var methodA =
+        assertSuggestMethod('_a', 'A', 'Z', relevance: DART_RELEVANCE_DEFAULT);
     if (methodA != null) {
       expect(methodA.element.isDeprecated, isFalse);
       expect(methodA.element.isPrivate, isTrue);
@@ -3856,7 +3923,7 @@
     // If user prefixed completion with '_' then suggestion of private members
     // should be the same as public members
     var getterG =
-        assertSuggestField('_g', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
+        assertSuggestField('_g', null, relevance: DART_RELEVANCE_DEFAULT);
     if (getterG != null) {
       expect(getterG.element.isDeprecated, isFalse);
       expect(getterG.element.isPrivate, isTrue);
@@ -3867,7 +3934,14 @@
 
   Future<void> test_MethodDeclaration_parameters_named() async {
     // Block  BlockFunctionBody  MethodDeclaration
-    addTestSource('class A {@deprecated Z a(X x, _, b, {y: boo}) {^}}');
+    addTestSource('''
+class A {
+  @deprecated
+  Z a(X x, _, b, {y: boo}) {^}
+}
+class X {}
+class Z {}
+''');
     await computeSuggestions();
 
     expect(replacementOffset, completionOffset);
@@ -3890,7 +3964,12 @@
     addTestSource('''
 foo() { }
 void bar() { }
-class A {Z a(X x, [int y=1]) {^}}''');
+class A {
+  Z a(X x, [int y=1]) {^}
+}
+class X {}
+class Z {}
+''');
     await computeSuggestions();
 
     expect(replacementOffset, completionOffset);
@@ -4583,7 +4662,7 @@
     addTestSource('main() {var ab; var _ab; ^}');
     await computeSuggestions();
     assertSuggestLocalVariable('ab', null);
-    assertSuggestLocalVariable('_ab', null, relevance: DART_RELEVANCE_DEFAULT);
+    assertSuggestLocalVariable('_ab', null);
   }
 
   Future<void> test_prioritization_private() async {
@@ -4597,7 +4676,7 @@
     addTestSource('main() {var ab; var _ab; a^}');
     await computeSuggestions();
     assertSuggestLocalVariable('ab', null);
-    assertSuggestLocalVariable('_ab', null, relevance: DART_RELEVANCE_DEFAULT);
+    assertSuggestLocalVariable('_ab', null);
   }
 
   Future<void> test_PropertyAccess_expression() async {
diff --git a/pkg/analyzer/lib/error/error.dart b/pkg/analyzer/lib/error/error.dart
index a9efa56..1ecfb41 100644
--- a/pkg/analyzer/lib/error/error.dart
+++ b/pkg/analyzer/lib/error/error.dart
@@ -293,6 +293,7 @@
   CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_WITH,
   CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR,
   CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_NON_GENERATIVE_CONSTRUCTOR,
+  CompileTimeErrorCode.REDIRECT_TO_ABSTRACT_CLASS_CONSTRUCTOR,
   CompileTimeErrorCode.REDIRECT_TO_MISSING_CONSTRUCTOR,
   CompileTimeErrorCode.REDIRECT_TO_NON_CLASS,
   CompileTimeErrorCode.REDIRECT_TO_NON_CONST_CONSTRUCTOR,
diff --git a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
index 469b161..d312773 100644
--- a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
+++ b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
@@ -336,7 +336,13 @@
     } else {
       Source source;
       if (workspace is WorkspaceWithDefaultAnalysisOptions) {
-        source = sourceFactory.forUri(WorkspaceWithDefaultAnalysisOptions.uri);
+        if (path.contains('/third_party/dart/')) {
+          source = sourceFactory
+              .forUri(WorkspaceWithDefaultAnalysisOptions.thirdPartyUri);
+        } else {
+          source =
+              sourceFactory.forUri(WorkspaceWithDefaultAnalysisOptions.uri);
+        }
       }
 
       if (source != null && source.exists()) {
diff --git a/pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart
index d36cdf0..cf532a4 100644
--- a/pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart
@@ -70,7 +70,12 @@
       return;
     }
 
-    _resolveOtherOperator(node);
+    if (operator.isUserDefinableOperator) {
+      _resolveUserDefinable(node);
+      return;
+    }
+
+    _resolveUnsupportedOperator(node);
   }
 
   /// Set the static type of [node] to be the least upper bound of the static
@@ -129,100 +134,26 @@
     return _resolveTypeParameter(type);
   }
 
-  void _resolve1(BinaryExpressionImpl node) {
-    Token operator = node.operator;
-    if (operator.isUserDefinableOperator) {
-      _resolveBinaryExpression(node, operator.lexeme);
-    } else if (operator.type == TokenType.BANG_EQ) {
-      _resolveBinaryExpression(node, TokenType.EQ_EQ.lexeme);
-    }
-  }
-
-  void _resolve2(BinaryExpressionImpl node) {
-    if (identical(node.leftOperand.staticType, NeverTypeImpl.instance)) {
-      _inferenceHelper.recordStaticType(node, NeverTypeImpl.instance);
-      return;
-    }
-
-    DartType staticType =
-        node.staticInvokeType?.returnType ?? DynamicTypeImpl.instance;
-    if (node.leftOperand is! ExtensionOverride) {
-      staticType = _typeSystem.refineBinaryExpressionType(
-        _getStaticType(node.leftOperand),
-        node.operator.type,
-        node.rightOperand.staticType,
-        staticType,
-      );
-    }
-    _inferenceHelper.recordStaticType(node, staticType);
-  }
-
-  void _resolveBinaryExpression(BinaryExpression node, String methodName) {
-    Expression leftOperand = node.leftOperand;
-
-    if (leftOperand is ExtensionOverride) {
-      ExtensionElement extension = leftOperand.extensionName.staticElement;
-      MethodElement member = extension.getMethod(methodName);
-      if (member == null) {
-        _errorReporter.reportErrorForToken(
-          CompileTimeErrorCode.UNDEFINED_EXTENSION_OPERATOR,
-          node.operator,
-          [methodName, extension.name],
-        );
-      }
-      node.staticElement = member;
-      return;
-    }
-
-    var leftType = _getStaticType(leftOperand);
-
-    if (identical(leftType, NeverTypeImpl.instance)) {
-      _resolver.errorReporter.reportErrorForNode(
-        HintCode.RECEIVER_OF_TYPE_NEVER,
-        leftOperand,
-      );
-      return;
-    }
-
-    ResolutionResult result = _typePropertyResolver.resolve(
-      receiver: leftOperand,
-      receiverType: leftType,
-      name: methodName,
-      receiverErrorNode: leftOperand,
-      nameErrorNode: node,
-    );
-
-    node.staticElement = result.getter;
-    node.staticInvokeType = result.getter?.type;
-    if (_shouldReportInvalidMember(leftType, result)) {
-      if (leftOperand is SuperExpression) {
-        _errorReporter.reportErrorForToken(
-          StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR,
-          node.operator,
-          [methodName, leftType],
-        );
-      } else {
-        _errorReporter.reportErrorForToken(
-          StaticTypeWarningCode.UNDEFINED_OPERATOR,
-          node.operator,
-          [methodName, leftType],
-        );
-      }
-    }
-  }
-
   void _resolveEqual(BinaryExpressionImpl node, {@required bool notEqual}) {
     var left = node.leftOperand;
-    var right = node.rightOperand;
-    var flow = _flowAnalysis?.flow;
-
     left.accept(_resolver);
+    left = node.leftOperand;
+
+    var flow = _flowAnalysis?.flow;
     flow?.equalityOp_rightBegin(left);
+
+    var right = node.rightOperand;
     right.accept(_resolver);
-    _resolve1(node);
+    right = node.rightOperand;
+
     flow?.equalityOp_end(node, right, notEqual: notEqual);
 
-    _resolve2(node);
+    _resolveUserDefinableElement(
+      node,
+      TokenType.EQ_EQ.lexeme,
+      promoteLeftTypeToNonNull: true,
+    );
+    _resolveUserDefinableType(node);
   }
 
   void _resolveIfNull(BinaryExpressionImpl node) {
@@ -297,8 +228,7 @@
     _checkNonBoolOperand(left, '&&');
     _checkNonBoolOperand(right, '&&');
 
-    _resolve1(node);
-    _resolve2(node);
+    _inferenceHelper.recordStaticType(node, _typeProvider.boolType);
   }
 
   void _resolveLogicalOr(BinaryExpressionImpl node) {
@@ -325,20 +255,29 @@
     _checkNonBoolOperand(left, '||');
     _checkNonBoolOperand(right, '||');
 
-    _resolve1(node);
-    _resolve2(node);
+    _inferenceHelper.recordStaticType(node, _typeProvider.boolType);
   }
 
-  void _resolveOtherOperator(BinaryExpressionImpl node) {
+  /// If the given [type] is a type parameter, resolve it to the type that should
+  /// be used when looking up members. Otherwise, return the original type.
+  ///
+  /// TODO(scheglov) this is duplicate
+  DartType _resolveTypeParameter(DartType type) =>
+      type?.resolveToBound(_typeProvider.objectType);
+
+  void _resolveUnsupportedOperator(BinaryExpressionImpl node) {
+    _inferenceHelper.recordStaticType(node, DynamicTypeImpl.instance);
+  }
+
+  void _resolveUserDefinable(BinaryExpressionImpl node) {
     Expression left = node.leftOperand;
     Expression right = node.rightOperand;
 
     // TODO(scheglov) Do we need these checks for null?
     left?.accept(_resolver);
 
-    // Call ElementResolver.visitBinaryExpression to resolve the user-defined
-    // operator method, if applicable.
-    _resolve1(node);
+    var operator = node.operator;
+    _resolveUserDefinableElement(node, operator.lexeme);
 
     var invokeType = node.staticInvokeType;
     if (invokeType != null && invokeType.parameters.isNotEmpty) {
@@ -351,15 +290,89 @@
     // TODO(scheglov) Do we need these checks for null?
     right?.accept(_resolver);
 
-    _resolve2(node);
+    _resolveUserDefinableType(node);
   }
 
-  /// If the given [type] is a type parameter, resolve it to the type that should
-  /// be used when looking up members. Otherwise, return the original type.
-  ///
-  /// TODO(scheglov) this is duplicate
-  DartType _resolveTypeParameter(DartType type) =>
-      type?.resolveToBound(_typeProvider.objectType);
+  void _resolveUserDefinableElement(
+    BinaryExpression node,
+    String methodName, {
+    bool promoteLeftTypeToNonNull = false,
+  }) {
+    Expression leftOperand = node.leftOperand;
+
+    if (leftOperand is ExtensionOverride) {
+      ExtensionElement extension = leftOperand.extensionName.staticElement;
+      MethodElement member = extension.getMethod(methodName);
+      if (member == null) {
+        _errorReporter.reportErrorForToken(
+          CompileTimeErrorCode.UNDEFINED_EXTENSION_OPERATOR,
+          node.operator,
+          [methodName, extension.name],
+        );
+      }
+      node.staticElement = member;
+      return;
+    }
+
+    var leftType = _getStaticType(leftOperand);
+
+    if (identical(leftType, NeverTypeImpl.instance)) {
+      _resolver.errorReporter.reportErrorForNode(
+        HintCode.RECEIVER_OF_TYPE_NEVER,
+        leftOperand,
+      );
+      return;
+    }
+
+    if (promoteLeftTypeToNonNull) {
+      leftType = _typeSystem.promoteToNonNull(leftType);
+    }
+
+    ResolutionResult result = _typePropertyResolver.resolve(
+      receiver: leftOperand,
+      receiverType: leftType,
+      name: methodName,
+      receiverErrorNode: leftOperand,
+      nameErrorNode: node,
+    );
+
+    node.staticElement = result.getter;
+    node.staticInvokeType = result.getter?.type;
+    if (_shouldReportInvalidMember(leftType, result)) {
+      if (leftOperand is SuperExpression) {
+        _errorReporter.reportErrorForToken(
+          StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR,
+          node.operator,
+          [methodName, leftType],
+        );
+      } else {
+        _errorReporter.reportErrorForToken(
+          StaticTypeWarningCode.UNDEFINED_OPERATOR,
+          node.operator,
+          [methodName, leftType],
+        );
+      }
+    }
+  }
+
+  void _resolveUserDefinableType(BinaryExpressionImpl node) {
+    if (identical(node.leftOperand.staticType, NeverTypeImpl.instance)) {
+      _inferenceHelper.recordStaticType(node, NeverTypeImpl.instance);
+      return;
+    }
+
+    DartType staticType =
+        node.staticInvokeType?.returnType ?? DynamicTypeImpl.instance;
+    if (node.leftOperand is! ExtensionOverride) {
+      staticType = _typeSystem.refineBinaryExpressionType(
+        _getStaticType(node.leftOperand),
+        node.operator.type,
+        node.rightOperand.staticType,
+        staticType,
+      );
+    }
+    _inferenceHelper.recordStaticType(node, staticType);
+  }
 
   /// Return `true` if we should report an error for the lookup [result] on
   /// the [type].
diff --git a/pkg/analyzer/lib/src/error/codes.dart b/pkg/analyzer/lib/src/error/codes.dart
index b7ad7d7..3a45736 100644
--- a/pkg/analyzer/lib/src/error/codes.dart
+++ b/pkg/analyzer/lib/src/error/codes.dart
@@ -5494,6 +5494,17 @@
           correction: "Try redirecting to a different constructor.");
 
   /**
+   * A factory constructor can't redirect to a non-generative constructor of an
+   * abstract class.
+   */
+  static const CompileTimeErrorCode REDIRECT_TO_ABSTRACT_CLASS_CONSTRUCTOR =
+      CompileTimeErrorCode(
+          'REDIRECT_TO_ABSTRACT_CLASS_CONSTRUCTOR',
+          "The redirecting constructor '{0}' can't redirect to a constructor "
+              "of the abstract class '{1}'.",
+          correction: "Try redirecting to a constructor of a different class.");
+
+  /**
    * 7.6.2 Factories: It is a compile-time error if <i>k</i> is prefixed with
    * the const modifier but <i>k'</i> is not a constant constructor.
    */
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index 3d0f25e..dc1011c 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -277,7 +277,7 @@
     assert(classElement is ClassElementImpl);
     assert(_enclosingClass == null);
     assert(_enclosingEnum == null);
-    assert(_enclosingExecutable == null);
+    assert(_enclosingExecutable.element == null);
     _enclosingClass = classElement;
   }
 
@@ -4017,6 +4017,21 @@
         redirectedConstructor.staticElement,
         redirectedConstructor,
       );
+      var redirectedClass =
+          redirectedConstructor.staticElement?.enclosingElement;
+      if (redirectedClass is ClassElement &&
+          redirectedClass.isAbstract &&
+          !redirectedConstructor.staticElement.isFactory) {
+        String enclosingTypeName = _enclosingClass.displayName;
+        String constructorStrName = enclosingTypeName;
+        if (declaration.name != null) {
+          constructorStrName += ".${declaration.name.name}";
+        }
+        _errorReporter.reportErrorForNode(
+            CompileTimeErrorCode.REDIRECT_TO_ABSTRACT_CLASS_CONSTRUCTOR,
+            redirectedConstructor,
+            [constructorStrName, redirectedClass.name]);
+      }
     }
     // check if there are redirected invocations
     int numRedirections = 0;
diff --git a/pkg/analyzer/lib/src/task/strong/checker.dart b/pkg/analyzer/lib/src/task/strong/checker.dart
index e1a6501..7f5b2d4 100644
--- a/pkg/analyzer/lib/src/task/strong/checker.dart
+++ b/pkg/analyzer/lib/src/task/strong/checker.dart
@@ -271,7 +271,8 @@
           checkBoolean(node.rightOperand);
           break;
         case TokenType.BANG_EQ:
-          break;
+        case TokenType.BANG_EQ_EQ:
+        case TokenType.EQ_EQ_EQ:
         case TokenType.QUESTION_QUESTION:
           break;
         default:
diff --git a/pkg/analyzer/lib/src/workspace/workspace.dart b/pkg/analyzer/lib/src/workspace/workspace.dart
index 3681cdf..51b67b3 100644
--- a/pkg/analyzer/lib/src/workspace/workspace.dart
+++ b/pkg/analyzer/lib/src/workspace/workspace.dart
@@ -79,7 +79,13 @@
  */
 class WorkspaceWithDefaultAnalysisOptions {
   /**
-   * The uri for the analysis options file.
+   * The uri for the default analysis options file.
    */
   static const String uri = 'package:dart.analysis_options/default.yaml';
+
+  /**
+   *  The uri for third_party analysis options file.
+   */
+  static const String thirdPartyUri =
+      'package:dart.analysis_options/third_party.yaml';
 }
diff --git a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
index 24b695d..82ce793 100644
--- a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
+++ b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
@@ -139,6 +139,23 @@
     ]);
   }
 
+  test_analysisOptions_file_inThirdParty() async {
+    newFile('/workspace/dart/analysis_options/lib/third_party.yaml',
+        content: r'''
+analyzer:
+  strong-mode:
+    implicit-casts: false
+''');
+
+    var aPath = '/workspace/third_party/dart/aaa/lib/a.dart';
+    await assertErrorsInFile(aPath, r'''
+num a = 0;
+int b = a;
+''', [
+      error(StaticTypeWarningCode.INVALID_ASSIGNMENT, 19, 1),
+    ]);
+  }
+
   test_analysisOptions_lints() async {
     newFile('/workspace/dart/analysis_options/lib/default.yaml', content: r'''
 linter:
diff --git a/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart
index f387181a2..27f64b1 100644
--- a/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart
@@ -4,6 +4,7 @@
 
 import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/src/dart/analysis/experiments.dart';
+import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -52,6 +53,22 @@
     );
   }
 
+  test_eqEqEq() async {
+    await assertErrorsInCode(r'''
+f(int a, int b) {
+  a === b;
+}
+''', [
+      error(ScannerErrorCode.UNSUPPORTED_OPERATOR, 22, 1),
+    ]);
+
+    assertBinaryExpression(
+      findNode.binary('a === b'),
+      element: null,
+      type: 'dynamic',
+    );
+  }
+
   test_ifNull() async {
     await assertNoErrorsInCode(r'''
 f(int a, double b) {
diff --git a/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart
index b471124..2cc6cb6 100644
--- a/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart
@@ -419,6 +419,24 @@
     ]);
   }
 
+  test_binary_eqEq_covariantParameterType() async {
+    await assertErrorsInCode(r'''
+class A {
+  bool operator==(covariant A other) => false;
+}
+
+main(A a, A? aq) {
+  a == 0;
+  aq == 1;
+  aq == aq;
+  aq == null;
+}
+''', [
+      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 86, 1),
+      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 97, 1),
+    ]);
+  }
+
   test_dynamicCast() async {
     await assertNoErrorsInCode(r'''
 m() {
diff --git a/pkg/analyzer/test/src/diagnostics/redirect_to_abstract_class_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/redirect_to_abstract_class_constructor_test.dart
new file mode 100644
index 0000000..a828062
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/redirect_to_abstract_class_constructor_test.dart
@@ -0,0 +1,52 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analyzer/src/error/codes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../dart/resolution/driver_resolution.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(RedirectToAbstractClassConstructorTest);
+  });
+}
+
+@reflectiveTest
+class RedirectToAbstractClassConstructorTest extends DriverResolutionTest {
+  test_abstractRedirectsToSelf() async {
+    await assertErrorsInCode(r'''
+abstract class A {
+  factory A() = A._;
+  A._();
+}
+''', [
+      error(CompileTimeErrorCode.REDIRECT_TO_ABSTRACT_CLASS_CONSTRUCTOR, 35, 3),
+    ]);
+  }
+
+  test_redirectsToAbstractSubclass() async {
+    await assertErrorsInCode(r'''
+class A {
+  factory A.named() = B;
+  A();
+}
+
+abstract class B extends A {}
+''', [
+      error(CompileTimeErrorCode.REDIRECT_TO_ABSTRACT_CLASS_CONSTRUCTOR, 32, 1),
+    ]);
+  }
+
+  test_redirectsToSubclass() async {
+    await assertNoErrorsInCode(r'''
+class A {
+  factory A.named() = B;
+  A();
+}
+
+class B extends A {}
+''');
+  }
+}
diff --git a/pkg/analyzer/test/src/diagnostics/test_all.dart b/pkg/analyzer/test/src/diagnostics/test_all.dart
index 37b0a05..76664cc 100644
--- a/pkg/analyzer/test/src/diagnostics/test_all.dart
+++ b/pkg/analyzer/test/src/diagnostics/test_all.dart
@@ -376,6 +376,8 @@
     as redirect_generative_to_missing_constructor;
 import 'redirect_generative_to_non_generative_constructor_test.dart'
     as redirect_generative_to_non_generative_constructor;
+import 'redirect_to_abstract_class_constructor_test.dart'
+    as redirect_to_abstract_class_constructor;
 import 'redirect_to_invalid_function_type_test.dart'
     as redirect_to_invalid_function_type;
 import 'redirect_to_invalid_return_type_test.dart'
@@ -758,6 +760,7 @@
     recursive_factory_redirect.main();
     redirect_generative_to_missing_constructor.main();
     redirect_generative_to_non_generative_constructor.main();
+    redirect_to_abstract_class_constructor.main();
     redirect_to_invalid_function_type.main();
     redirect_to_invalid_return_type.main();
     redirect_to_missing_constructor.main();
diff --git a/pkg/compiler/lib/src/js_backend/native_data.dart b/pkg/compiler/lib/src/js_backend/native_data.dart
index 1d7794a..3519633 100644
--- a/pkg/compiler/lib/src/js_backend/native_data.dart
+++ b/pkg/compiler/lib/src/js_backend/native_data.dart
@@ -339,6 +339,7 @@
       }
     });
     data.forEachJsInteropMember((ir.Member node, String name) {
+      if (memberIsIgnorable(node)) return;
       jsInteropMembers[map.getMember(node)] = name;
     });
 
diff --git a/pkg/compiler/lib/src/js_model/element_map_impl.dart b/pkg/compiler/lib/src/js_model/element_map_impl.dart
index 9ebf74a..90c7c44 100644
--- a/pkg/compiler/lib/src/js_model/element_map_impl.dart
+++ b/pkg/compiler/lib/src/js_model/element_map_impl.dart
@@ -2,7 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:front_end/src/api_unstable/dart2js.dart' show Link, LinkBuilder;
 import 'package:front_end/src/api_unstable/dart2js.dart' as ir;
 
 import 'package:kernel/ast.dart' as ir;
@@ -705,17 +704,41 @@
         data.isMixinApplication = false;
         data.interfaces = const <InterfaceType>[];
       } else {
-        InterfaceType processSupertype(ir.Supertype node) {
-          InterfaceType supertype = _typeConverter.visitSupertype(node);
+        // Set of canonical supertypes.
+        //
+        // This is necessary to support when a class implements the same
+        // supertype in multiple non-conflicting ways, like implementing A<int*>
+        // and A<int?> or B<Object?> and B<dynamic>.
+        Set<InterfaceType> canonicalSupertypes = <InterfaceType>{};
+
+        InterfaceType processSupertype(ir.Supertype supertypeNode) {
+          supertypeNode = classHierarchy.getClassAsInstanceOf(
+              node, supertypeNode.classNode);
+          InterfaceType supertype =
+              _typeConverter.visitSupertype(supertypeNode);
+          canonicalSupertypes.add(supertype);
           IndexedClass superclass = supertype.element;
           JClassData superdata = classes.getData(superclass);
           _ensureSupertypes(superclass, superdata);
+          for (InterfaceType supertype in superdata.orderedTypeSet.supertypes) {
+            ClassDefinition definition = getClassDefinition(supertype.element);
+            if (definition.kind == ClassKind.regular) {
+              ir.Supertype canonicalSupertype =
+                  classHierarchy.getClassAsInstanceOf(node, definition.node);
+              if (canonicalSupertype != null) {
+                supertype = _typeConverter.visitSupertype(canonicalSupertype);
+              } else {
+                assert(supertype.typeArguments.isEmpty,
+                    "Generic synthetic supertypes are not supported");
+              }
+            }
+            canonicalSupertypes.add(supertype);
+          }
           return supertype;
         }
 
         InterfaceType supertype;
-        LinkBuilder<InterfaceType> linkBuilder =
-            new LinkBuilder<InterfaceType>();
+        List<InterfaceType> interfaces = <InterfaceType>[];
         if (node.isMixinDeclaration) {
           // A mixin declaration
           //
@@ -733,7 +756,7 @@
           // so we need get the superclasses from the on-clause, A, B, and C,
           // through [superclassConstraints].
           for (ir.Supertype constraint in node.superclassConstraints()) {
-            linkBuilder.addLast(processSupertype(constraint));
+            interfaces.add(processSupertype(constraint));
           }
           // Set superclass to `Object`.
           supertype = _commonElements.objectType;
@@ -744,26 +767,26 @@
           ClassEntity defaultSuperclass =
               _commonElements.getDefaultSuperclass(cls, nativeData);
           data.supertype = _elementEnvironment.getRawType(defaultSuperclass);
+          assert(data.supertype.typeArguments.isEmpty,
+              "Generic default supertypes are not supported");
+          canonicalSupertypes.add(data.supertype);
         } else {
           data.supertype = supertype;
         }
         if (node.mixedInType != null) {
           data.isMixinApplication = true;
-          linkBuilder
-              .addLast(data.mixedInType = processSupertype(node.mixedInType));
+          interfaces.add(data.mixedInType = processSupertype(node.mixedInType));
         } else {
           data.isMixinApplication = false;
         }
         node.implementedTypes.forEach((ir.Supertype supertype) {
-          linkBuilder.addLast(processSupertype(supertype));
+          interfaces.add(processSupertype(supertype));
         });
-        Link<InterfaceType> interfaces =
-            linkBuilder.toLink(const Link<InterfaceType>());
         OrderedTypeSetBuilder setBuilder =
             new KernelOrderedTypeSetBuilder(this, cls);
-        data.orderedTypeSet = setBuilder.createOrderedTypeSet(
-            data.supertype, interfaces.reverse(const Link<InterfaceType>()));
-        data.interfaces = new List<InterfaceType>.from(interfaces.toList());
+        data.orderedTypeSet =
+            setBuilder.createOrderedTypeSet(canonicalSupertypes);
+        data.interfaces = interfaces;
       }
     }
   }
diff --git a/pkg/compiler/lib/src/kernel/element_map.dart b/pkg/compiler/lib/src/kernel/element_map.dart
index 8fbb7d9..4b3917c8 100644
--- a/pkg/compiler/lib/src/kernel/element_map.dart
+++ b/pkg/compiler/lib/src/kernel/element_map.dart
@@ -185,3 +185,31 @@
   JS_INTERCEPTOR_CONSTANT,
   NONE,
 }
+
+// Members which dart2js ignores.
+bool memberIsIgnorable(ir.Member node, {ir.Class cls}) {
+  if (node is! ir.Procedure) return false;
+  ir.Procedure member = node;
+  if ((member.isMemberSignature || member.isForwardingStub) &&
+      member.isAbstract) {
+    // Skip abstract forwarding stubs. These are never emitted but they
+    // might shadow the inclusion of a mixed in method in code like:
+    //
+    //     class Super {}
+    //     class Mixin<T> {
+    //       void method(T t) {}
+    //     }
+    //     class Class extends Super with Mixin<int> {}
+    //     main() => new Class().method();
+    //
+    // Here a stub is created for `Super&Mixin.method` hiding that
+    // `Mixin.method` is inherited by `Class`.
+    return true;
+  }
+  if (cls != null &&
+      (member.isMemberSignature || member.isForwardingStub) &&
+      cls.isAnonymousMixin) {
+    return true;
+  }
+  return false;
+}
diff --git a/pkg/compiler/lib/src/kernel/element_map_impl.dart b/pkg/compiler/lib/src/kernel/element_map_impl.dart
index 3d53600..8c34549 100644
--- a/pkg/compiler/lib/src/kernel/element_map_impl.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart
@@ -325,17 +325,38 @@
         data.isMixinApplication = false;
         data.interfaces = const <InterfaceType>[];
       } else {
-        InterfaceType processSupertype(ir.Supertype node) {
-          InterfaceType supertype = _typeConverter.visitSupertype(node);
+        // Set of canonical supertypes.
+        //
+        // This is necessary to support when a class implements the same
+        // supertype in multiple non-conflicting ways, like implementing A<int*>
+        // and A<int?> or B<Object?> and B<dynamic>.
+        Set<InterfaceType> canonicalSupertypes = <InterfaceType>{};
+
+        InterfaceType processSupertype(ir.Supertype supertypeNode) {
+          supertypeNode = classHierarchy.getClassAsInstanceOf(
+              node, supertypeNode.classNode);
+          InterfaceType supertype =
+              _typeConverter.visitSupertype(supertypeNode);
+          canonicalSupertypes.add(supertype);
           IndexedClass superclass = supertype.element;
           KClassData superdata = classes.getData(superclass);
           _ensureSupertypes(superclass, superdata);
+          for (InterfaceType supertype in superdata.orderedTypeSet.supertypes) {
+            ir.Supertype canonicalSupertype = classHierarchy
+                .getClassAsInstanceOf(node, getClassNode(supertype.element));
+            if (canonicalSupertype != null) {
+              supertype = _typeConverter.visitSupertype(canonicalSupertype);
+            } else {
+              assert(supertype.typeArguments.isEmpty,
+                  "Generic synthetic supertypes are not supported");
+            }
+            canonicalSupertypes.add(supertype);
+          }
           return supertype;
         }
 
         InterfaceType supertype;
-        ir.LinkBuilder<InterfaceType> linkBuilder =
-            new ir.LinkBuilder<InterfaceType>();
+        List<InterfaceType> interfaces = <InterfaceType>[];
         if (node.isMixinDeclaration) {
           // A mixin declaration
           //
@@ -353,7 +374,7 @@
           // so we need get the superclasses from the on-clause, A, B, and C,
           // through [superclassConstraints].
           for (ir.Supertype constraint in node.superclassConstraints()) {
-            linkBuilder.addLast(processSupertype(constraint));
+            interfaces.add(processSupertype(constraint));
           }
           // Set superclass to `Object`.
           supertype = _commonElements.objectType;
@@ -364,26 +385,26 @@
           ClassEntity defaultSuperclass =
               _commonElements.getDefaultSuperclass(cls, nativeBasicData);
           data.supertype = _elementEnvironment.getRawType(defaultSuperclass);
+          assert(data.supertype.typeArguments.isEmpty,
+              "Generic default supertypes are not supported");
+          canonicalSupertypes.add(data.supertype);
         } else {
           data.supertype = supertype;
         }
         if (node.mixedInType != null) {
           data.isMixinApplication = true;
-          linkBuilder
-              .addLast(data.mixedInType = processSupertype(node.mixedInType));
+          interfaces.add(data.mixedInType = processSupertype(node.mixedInType));
         } else {
           data.isMixinApplication = false;
         }
         node.implementedTypes.forEach((ir.Supertype supertype) {
-          linkBuilder.addLast(processSupertype(supertype));
+          interfaces.add(processSupertype(supertype));
         });
-        ir.Link<InterfaceType> interfaces =
-            linkBuilder.toLink(const ir.Link<InterfaceType>());
         OrderedTypeSetBuilder setBuilder =
             new KernelOrderedTypeSetBuilder(this, cls);
-        data.orderedTypeSet = setBuilder.createOrderedTypeSet(
-            data.supertype, interfaces.reverse(const ir.Link<InterfaceType>()));
-        data.interfaces = new List<InterfaceType>.from(interfaces.toList());
+        data.orderedTypeSet =
+            setBuilder.createOrderedTypeSet(canonicalSupertypes);
+        data.interfaces = interfaces;
       }
     }
   }
diff --git a/pkg/compiler/lib/src/kernel/env.dart b/pkg/compiler/lib/src/kernel/env.dart
index 517787b..23a170d 100644
--- a/pkg/compiler/lib/src/kernel/env.dart
+++ b/pkg/compiler/lib/src/kernel/env.dart
@@ -25,6 +25,7 @@
 import '../ordered_typeset.dart';
 import '../ssa/type_builder.dart';
 import '../universe/member_usage.dart';
+import 'element_map.dart';
 import 'element_map_impl.dart';
 
 /// Environment for fast lookup of component libraries.
@@ -388,26 +389,7 @@
 
     void addProcedure(ir.Procedure member,
         {bool includeStatic, bool includeNoSuchMethodForwarders}) {
-      if ((member.isMemberSignature || member.isForwardingStub) &&
-          member.isAbstract) {
-        // Skip abstract forwarding stubs. These are never emitted but they
-        // might shadow the inclusion of a mixed in method in code like:
-        //
-        //     class Super {}
-        //     class Mixin<T> {
-        //       void method(T t) {}
-        //     }
-        //     class Class extends Super with Mixin<int> {}
-        //     main() => new Class().method();
-        //
-        // Here a stub is created for `Super&Mixin.method` hiding that
-        // `Mixin.method` is inherited by `Class`.
-        return;
-      }
-      if ((member.isMemberSignature || member.isForwardingStub) &&
-          cls.isAnonymousMixin) {
-        return;
-      }
+      if (memberIsIgnorable(member, cls: cls)) return;
       if (!includeStatic && member.isStatic) return;
       if (member.isNoSuchMethodForwarder) {
         // TODO(sigmund): remove once #33732 is fixed.
diff --git a/pkg/compiler/lib/src/ordered_typeset.dart b/pkg/compiler/lib/src/ordered_typeset.dart
index d732744..dcbcf37 100644
--- a/pkg/compiler/lib/src/ordered_typeset.dart
+++ b/pkg/compiler/lib/src/ordered_typeset.dart
@@ -195,8 +195,7 @@
 ///     B: [B, Object]
 ///     C: [C, B, A, Object]
 abstract class OrderedTypeSetBuilder {
-  OrderedTypeSet createOrderedTypeSet(
-      InterfaceType supertype, Link<DartType> interfaces);
+  OrderedTypeSet createOrderedTypeSet(Set<InterfaceType> canonicalSupertypes);
 }
 
 abstract class OrderedTypeSetBuilderBase implements OrderedTypeSetBuilder {
@@ -215,41 +214,14 @@
   OrderedTypeSet getOrderedTypeSet(covariant ClassEntity cls);
 
   @override
-  OrderedTypeSet createOrderedTypeSet(
-      InterfaceType supertype, Link<DartType> interfaces) {
-    // TODO(15296): Collapse these iterations to one when the order is not
-    // needed.
-    add(supertype);
-    for (Link<DartType> link = interfaces; !link.isEmpty; link = link.tail) {
-      add(link.head);
-    }
-
-    _addAllSupertypes(supertype);
-    for (Link<DartType> link = interfaces; !link.isEmpty; link = link.tail) {
-      _addAllSupertypes(link.head);
+  OrderedTypeSet createOrderedTypeSet(Set<InterfaceType> canonicalSupertypes) {
+    for (InterfaceType supertype in canonicalSupertypes) {
+      add(supertype);
     }
     add(getThisType(cls));
     return toTypeSet();
   }
 
-  /// Adds [type] and all supertypes of [type] to [allSupertypes] while
-  /// substituting type variables.
-  void _addAllSupertypes(InterfaceType type) {
-    ClassEntity classElement = type.element;
-    Link<InterfaceType> supertypes = getOrderedTypeSet(classElement).supertypes;
-    assert(
-        supertypes != null,
-        failedAt(
-            cls,
-            "Supertypes not computed on $classElement "
-            "during resolution of $cls"));
-    while (!supertypes.isEmpty) {
-      InterfaceType supertype = supertypes.head;
-      add(substByContext(supertype, type));
-      supertypes = supertypes.tail;
-    }
-  }
-
   void add(InterfaceType type) {
     if (type.element == cls) {
       _addAtDepth(type, maxDepth + 1);
diff --git a/pkg/dds/dds_protocol.md b/pkg/dds/dds_protocol.md
index fb6fd82..c40b84d 100644
--- a/pkg/dds/dds_protocol.md
+++ b/pkg/dds/dds_protocol.md
@@ -8,14 +8,19 @@
 
 [JSON-RPC 2.0]: http://www.jsonrpc.org/specification
 
-
-**Table of Contents**
+## Table of Contents
 
 - [RPCs, Requests, and Responses](#rpcs-requests-and-responses)
 - [Events](#events)
 - [Types](#types)
 - [IDs and Names](#ids-and-names)
 - [Revision History](#revision-history)
+- [Public RPCs](#public-rpcs)
+  - [getClientName](#getclientname)
+  - [requirePermissionToResume](#requirepermissiontoresume)
+  - [setClientName](#setclientname)
+- [Public Types](#public-types)
+  - [ClientName](#clientname)
 
 ## RPCs, Requests, and Responses
 
@@ -41,16 +46,95 @@
 
 The DDS Protocol supports all [public RPCs defined in the VM Service protocol][service-protocol-public-rpcs].
 
+### getClientName
+
+```
+ClientName getClientName()
+```
+
+The _getClientName_ RPC is used to retrieve the name associated with the currently
+connected VM service client. If no name was previously set through the
+[setClientName](#setclientname) RPC, a default name will be returned.
+
+See [ClientName](#clientname)
+
+### requirePermissionToResume
+
+```
+Success requirePermissionToResume(bool onPauseStart [optional],
+                                  bool onPauseReload[optional],
+                                  bool onPauseExit [optional])
+```
+
+The _requirePermissionToResume_ RPC is used to change the pause/resume behavior
+of isolates by providing a way for the VM service to wait for approval to resume
+from some set of clients. This is useful for clients which want to perform some
+operation on an isolate after a pause without it being resumed by another client.
+
+If the _onPauseStart_ parameter is `true`, isolates will not resume after pausing
+on start until the client sends a `resume` request and all other clients which
+need to provide resume approval for this pause type have done so.
+
+If the _onPauseReload_ parameter is `true`, isolates will not resume after pausing
+after a reload until the client sends a `resume` request and all other clients
+which need to provide resume approval for this pause type have done so.
+
+If the _onPauseExit_ parameter is `true`, isolates will not resume after pausing
+on exit until the client sends a `resume` request and all other clients which
+need to provide resume approval for this pause type have done so.
+
+**Important Notes:**
+
+- All clients with the same client name share resume permissions. Only a
+  single client of a given name is required to provide resume approval.
+- When a client requiring approval disconnects from the service, a paused
+  isolate may resume if all other clients requiring resume approval have
+  already given approval. In the case that no other client requires resume
+  approval for the current pause event, the isolate will be resumed if at
+  least one other client has attempted to [resume](resume) the isolate.
+
+### setClientName
+
+```
+Success setClientName(string name)
+```
+
+The _setClientName_ RPC is used to set a name to be associated with the currently
+connected VM service client. If the _name_ parameter is a non-empty string, _name_
+will become the new name associated with the client. If _name_ is an empty string,
+the client's name will be reset to its default name.
+
+See [Success](#success).
+
+## Public Types
+
+The DDS Protocol supports all [public types defined in the VM Service protocol][service-protocol-public-types].
+
+### ClientName
+
+```
+class ClientName extends Response {
+  // The name of the currently connected VM service client.
+  string name;
+}
+```
+
+See [getClientName](#getclientname) and [setClientName](#setclientname).
+
 ## Revision History
 
 version | comments
 ------- | --------
 0.x | Initial revision
 
+[resume]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#resume
+[success]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#success
+
 [service-protocol]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md
 [service-protocol-rpcs-requests-and-responses]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#rpcs-requests-and-responses
 [service-protocol-events]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#events
 [service-protocol-binary-events]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#binary-events
 [service-protocol-types]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#types
 [service-protocol-ids-and-names]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#ids-and-names
-[service-protocol-public-rpcs]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#public-rpcs
\ No newline at end of file
+[service-protocol-public-rpcs]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#public-rpcs
+[service-protocol-public-types]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#public-types
\ No newline at end of file
diff --git a/pkg/dds/lib/dds.dart b/pkg/dds/lib/dds.dart
index c71a3d6..4312c28 100644
--- a/pkg/dds/lib/dds.dart
+++ b/pkg/dds/lib/dds.dart
@@ -25,7 +25,10 @@
 
 part 'src/binary_compatible_peer.dart';
 part 'src/client.dart';
+part 'src/client_manager.dart';
+part 'src/constants.dart';
 part 'src/dds_impl.dart';
+part 'src/isolate_manager.dart';
 part 'src/named_lookup.dart';
 part 'src/rpc_error_codes.dart';
 part 'src/stream_manager.dart';
diff --git a/pkg/dds/lib/src/client.dart b/pkg/dds/lib/src/client.dart
index a6e39c2..2c19752 100644
--- a/pkg/dds/lib/src/client.dart
+++ b/pkg/dds/lib/src/client.dart
@@ -51,13 +51,13 @@
     _clientPeer.registerMethod('streamListen', (parameters) async {
       final streamId = parameters['streamId'].asString;
       await dds.streamManager.streamListen(this, streamId);
-      return _success;
+      return _RPCResponses.success;
     });
 
     _clientPeer.registerMethod('streamCancel', (parameters) async {
       final streamId = parameters['streamId'].asString;
       await dds.streamManager.streamCancel(this, streamId);
-      return _success;
+      return _RPCResponses.success;
     });
 
     _clientPeer.registerMethod('registerService', (parameters) async {
@@ -75,9 +75,30 @@
         serviceId,
         alias,
       );
-      return _success;
+      return _RPCResponses.success;
     });
 
+    _clientPeer.registerMethod(
+      'getClientName',
+      (parameters) => {'type': 'ClientName', 'name': name},
+    );
+
+    _clientPeer.registerMethod(
+      'setClientName',
+      (parameters) => dds.clientManager.setClientName(this, parameters),
+    );
+
+    _clientPeer.registerMethod(
+      'requirePermissionToResume',
+      (parameters) =>
+          dds.clientManager.requirePermissionToResume(this, parameters),
+    );
+
+    _clientPeer.registerMethod(
+      'resume',
+      (parameters) => dds.isolateManager.resumeIsolate(this, parameters),
+    );
+
     // When invoked within a fallback, the next fallback will start executing.
     // The final fallback forwards the request to the VM service directly.
     @alwaysThrows
@@ -96,7 +117,7 @@
       // method, forward the request to that client.
       final method = getMethod(parameters.method);
       final namespace = getNamespace(parameters.method);
-      final serviceClient = dds._clients[namespace];
+      final serviceClient = dds.clientManager.clients[namespace];
       if (serviceClient != null && serviceClient.services.containsKey(method)) {
         return await Future.any(
           [
@@ -123,9 +144,20 @@
         await _vmServicePeer.sendRequest(parameters.method, parameters.asMap));
   }
 
-  static const _success = <String, dynamic>{
-    'type': 'Success',
-  };
+  static int _idCounter = 0;
+  final int _id = ++_idCounter;
+
+  /// The name given to the client upon its creation.
+  String get defaultClientName => 'client$_id';
+
+  /// The current name associated with this client.
+  String get name => _name;
+
+  // NOTE: this should not be called directly except from:
+  //   - `_ClientManager._clearClientName`
+  //   - `_ClientManager._setClientNameHelper`
+  set name(String n) => _name = n ?? defaultClientName;
+  String _name;
 
   final _DartDevelopmentService dds;
   final Map<String, String> services = {};
diff --git a/pkg/dds/lib/src/client_manager.dart b/pkg/dds/lib/src/client_manager.dart
new file mode 100644
index 0000000..a7e066e
--- /dev/null
+++ b/pkg/dds/lib/src/client_manager.dart
@@ -0,0 +1,146 @@
+// Copyright (c) 2020, 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.
+
+part of dds;
+
+/// [_ClientResumePermissions] associates a list of
+/// [_DartDevelopmentServiceClient]s, all of the same client name, with a
+/// permissions mask used to determine which pause event types require approval
+/// from one of the listed clients before resuming an isolate.
+class _ClientResumePermissions {
+  final List<_DartDevelopmentServiceClient> clients = [];
+  int permissionsMask = 0;
+}
+
+/// The [_ClientManager] has the responsibility of managing all state and
+/// requests related to client connections, including:
+///   - A list of all currently connected clients
+///   - Tracking client names and associated permissions for isolate resume
+///     synchronization
+///   - Handling RPC invocations which change client state
+class _ClientManager {
+  _ClientManager(this.dds);
+
+  /// Initialize state for a newly connected client.
+  void addClient(_DartDevelopmentServiceClient client) {
+    _setClientNameHelper(
+      client,
+      client.defaultClientName,
+    );
+    clients.add(client);
+    client.listen().then((_) => removeClient(client));
+  }
+
+  /// Cleanup state for a disconnected client.
+  void removeClient(_DartDevelopmentServiceClient client) {
+    _clearClientName(client);
+    clients.remove(client);
+  }
+
+  /// Cleanup clients on DDS shutdown.
+  Future<void> shutdown() async {
+    // Close all incoming websocket connections.
+    final futures = <Future>[];
+    for (final client in clients) {
+      futures.add(client.close());
+    }
+    await Future.wait(futures);
+  }
+
+  /// Associates a name with a given client.
+  ///
+  /// The provided client name is used to track isolate resume approvals.
+  Map<String, dynamic> setClientName(
+    _DartDevelopmentServiceClient client,
+    json_rpc.Parameters parameters,
+  ) {
+    _setClientNameHelper(client, parameters['name'].asString);
+    return _RPCResponses.success;
+  }
+
+  /// Require permission from this client before resuming an isolate.
+  Map<String, dynamic> requirePermissionToResume(
+    _DartDevelopmentServiceClient client,
+    json_rpc.Parameters parameters,
+  ) {
+    int pauseTypeMask = 0;
+    if (parameters['onPauseStart'].asBoolOr(false)) {
+      pauseTypeMask |= _PauseTypeMasks.pauseOnStartMask;
+    }
+    if (parameters['onPauseReload'].asBoolOr(false)) {
+      pauseTypeMask |= _PauseTypeMasks.pauseOnReloadMask;
+    }
+    if (parameters['onPauseExit'].asBoolOr(false)) {
+      pauseTypeMask |= _PauseTypeMasks.pauseOnExitMask;
+    }
+
+    clientResumePermissions[client.name].permissionsMask = pauseTypeMask;
+    return _RPCResponses.success;
+  }
+
+  /// Changes `client`'s name to `name` while also updating resume permissions
+  /// and approvals.
+  void _setClientNameHelper(
+    _DartDevelopmentServiceClient client,
+    String name,
+  ) {
+    _clearClientName(client);
+    client.name = name.isEmpty ? client.defaultClientName : name;
+    clientResumePermissions.putIfAbsent(
+      client.name,
+      () => _ClientResumePermissions(),
+    );
+    clientResumePermissions[client.name].clients.add(client);
+  }
+
+  /// Resets the client's name while also cleaning up resume permissions and
+  /// approvals.
+  void _clearClientName(
+    _DartDevelopmentServiceClient client,
+  ) {
+    final name = client.name;
+    client.name = null;
+    final clientsForName = clientResumePermissions[name];
+    if (clientsForName != null) {
+      clientsForName.clients.remove(client);
+      // If this was the last client with a given name, cleanup resume
+      // permissions.
+      if (clientsForName.clients.isEmpty) {
+        clientResumePermissions.remove(name);
+
+        // Check to see if we need to resume any isolates now that the last
+        // client of a given name has disconnected or changed names.
+        //
+        // An isolate will be resumed in this situation if:
+        //
+        // 1) This client required resume approvals for the current pause event
+        // associated with the isolate and all other required resume approvals
+        // have been provided by other clients.
+        //
+        // OR
+        //
+        // 2) This client required resume approvals for the current pause event
+        // associated with the isolate, no other clients require resume approvals
+        // for the current pause event, and at least one client has issued a resume
+        // request.
+        dds.isolateManager.isolates.forEach(
+          (_, isolate) async =>
+              await isolate.maybeResumeAfterClientChange(name),
+        );
+      }
+    }
+  }
+
+  // Handles namespace generation for service extensions.
+  static const _kServicePrologue = 's';
+  final NamedLookup<_DartDevelopmentServiceClient> clients = NamedLookup(
+    prologue: _kServicePrologue,
+  );
+
+  /// Mapping of client names to all clients of that name and their resume
+  /// permissions.
+  final Map<String, _ClientResumePermissions> clientResumePermissions = {};
+
+  final _DartDevelopmentService dds;
+}
diff --git a/pkg/dds/lib/src/constants.dart b/pkg/dds/lib/src/constants.dart
new file mode 100644
index 0000000..6a41e0b
--- /dev/null
+++ b/pkg/dds/lib/src/constants.dart
@@ -0,0 +1,33 @@
+// Copyright (c) 2020, 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.
+
+part of dds;
+
+abstract class _RPCResponses {
+  static const success = <String, dynamic>{
+    'type': 'Success',
+  };
+
+  static const collectedSentinel = <String, dynamic>{
+    'type': 'Sentinel',
+    'kind': 'Collected',
+    'valueAsString': '<collected>',
+  };
+}
+
+abstract class _PauseTypeMasks {
+  static const pauseOnStartMask = 1 << 0;
+  static const pauseOnReloadMask = 1 << 1;
+  static const pauseOnExitMask = 1 << 2;
+}
+
+abstract class _ServiceEvents {
+  static const isolateExit = 'IsolateExit';
+  static const isolateSpawn = 'IsolateSpawn';
+  static const isolateStart = 'IsolateStart';
+  static const pauseExit = 'PauseExit';
+  static const pausePostRequest = 'PausePostRequest';
+  static const pauseStart = 'PauseStart';
+  static const resume = 'Resume';
+}
diff --git a/pkg/dds/lib/src/dds_impl.dart b/pkg/dds/lib/src/dds_impl.dart
index 4cd7b2d..f47d909f 100644
--- a/pkg/dds/lib/src/dds_impl.dart
+++ b/pkg/dds/lib/src/dds_impl.dart
@@ -6,18 +6,24 @@
 
 class _DartDevelopmentService implements DartDevelopmentService {
   _DartDevelopmentService(this._remoteVmServiceUri, this._uri) {
+    _clientManager = _ClientManager(this);
+    _isolateManager = _IsolateManager(this);
     _streamManager = _StreamManager(this);
   }
 
   Future<void> startService() async {
+    // TODO(bkonyi): throw if we've already shutdown.
     // Establish the connection to the VM service.
     _vmServiceSocket = WebSocketChannel.connect(remoteVmServiceWsUri);
     _vmServiceClient = _BinaryCompatiblePeer(_vmServiceSocket, _streamManager);
     // Setup the JSON RPC client with the VM service.
-    unawaited(_vmServiceClient.listen());
+    unawaited(_vmServiceClient.listen().then((_) => shutdown()));
 
     // Setup stream event handling.
-    streamManager.listen();
+    await streamManager.listen();
+
+    // Populate initial isolate state.
+    await _isolateManager.initialize();
 
     // Once we have a connection to the VM service, we're ready to spawn the intermediary.
     await _startDDSServer();
@@ -52,15 +58,16 @@
 
   /// Stop accepting requests after gracefully handling existing requests.
   Future<void> shutdown() async {
+    if (_done.isCompleted || _shuttingDown) {
+      // Already shutdown.
+      return;
+    }
+    _shuttingDown = true;
     // Don't accept anymore HTTP requests.
     await _server.close();
 
-    // Close all incoming websocket connections.
-    final futures = <Future>[];
-    for (final client in _clients) {
-      futures.add(client.close());
-    }
-    await Future.wait(futures);
+    // Close connections to clients.
+    await clientManager.shutdown();
 
     // Close connection to VM service.
     await _vmServiceSocket.sink.close();
@@ -79,8 +86,7 @@
           ws,
           _vmServiceClient,
         );
-        _clients.add(client);
-        client.listen().then((_) => _clients.remove(client));
+        clientManager.addClient(client);
       });
 
   Handler _httpHandler() {
@@ -108,7 +114,7 @@
   }
 
   String _getNamespace(_DartDevelopmentServiceClient client) =>
-      _clients.keyOf(client);
+      clientManager.clients.keyOf(client);
 
   Uri get remoteVmServiceUri => _remoteVmServiceUri;
   Uri get remoteVmServiceWsUri => _toWebSocket(_remoteVmServiceUri);
@@ -122,16 +128,17 @@
 
   Future<void> get done => _done.future;
   Completer _done = Completer<void>();
+  bool _shuttingDown = false;
+
+  _ClientManager get clientManager => _clientManager;
+  _ClientManager _clientManager;
+
+  _IsolateManager get isolateManager => _isolateManager;
+  _IsolateManager _isolateManager;
 
   _StreamManager get streamManager => _streamManager;
   _StreamManager _streamManager;
 
-  // Handles namespace generation for service extensions.
-  static const _kServicePrologue = 's';
-  final NamedLookup<_DartDevelopmentServiceClient> _clients = NamedLookup(
-    prologue: _kServicePrologue,
-  );
-
   json_rpc.Peer _vmServiceClient;
   WebSocketChannel _vmServiceSocket;
   HttpServer _server;
diff --git a/pkg/dds/lib/src/isolate_manager.dart b/pkg/dds/lib/src/isolate_manager.dart
new file mode 100644
index 0000000..1ebc9f7
--- /dev/null
+++ b/pkg/dds/lib/src/isolate_manager.dart
@@ -0,0 +1,237 @@
+// Copyright (c) 2020, 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.
+
+part of dds;
+
+/// This file contains functionality used to track the running state of
+/// all isolates in a given Dart process.
+///
+/// [_RunningIsolate] is a representation of a single live isolate and contains
+/// running state information for that isolate. In addition, approvals from
+/// clients used to synchronize isolate resuming across multiple clients are
+/// tracked in this class.
+///
+/// The [_IsolateManager] keeps track of all the isolates in the
+/// target process and handles isolate lifecycle events including:
+///   - Startup
+///   - Shutdown
+///   - Pauses
+///
+/// The [_IsolateManager] also handles the `resume` RPC, which checks the
+/// resume approvals in the target [_RunningIsolate] to determine if the
+/// isolate should be resumed or wait for additional approvals to be granted.
+
+enum _IsolateState {
+  start,
+  running,
+  pauseStart,
+  pauseExit,
+  pausePostRequest,
+}
+
+class _RunningIsolate {
+  _RunningIsolate(this.isolateManager, this.portId, this.name);
+
+  // State setters.
+  void pausedOnExit() => _state = _IsolateState.pauseExit;
+  void pausedOnStart() => _state = _IsolateState.pauseStart;
+  void pausedPostRequest() => _state = _IsolateState.pausePostRequest;
+  void resumed() => running();
+  void running() => _state = _IsolateState.running;
+  void started() => _state = _IsolateState.start;
+
+  /// Resumes the isolate if all clients which need to approve a resume have
+  /// done so. Called when the last client of a given name disconnects or
+  /// changes name to ensure we don't deadlock waiting for approval to resume
+  /// from a disconnected client.
+  Future<void> maybeResumeAfterClientChange(String clientName) async {
+    // Remove approvals from the disconnected client.
+    _resumeApprovalsByName.remove(clientName);
+
+    if (shouldResume()) {
+      clearResumeApprovals();
+      await isolateManager.dds._vmServiceClient.sendRequest('resume', {
+        'isolateId': 'isolates/$portId',
+      });
+    }
+  }
+
+  /// Returns true if this isolate should resume given its client approvals
+  /// state.
+  ///
+  /// If `resumingClient` is provided, it will be added to the set of clients
+  /// which have provided approval to resume this isolate. If not provided,
+  /// the existing approvals state will be examined to see if the isolate
+  /// should resume due to a client disconnect or name change.
+  bool shouldResume({_DartDevelopmentServiceClient resumingClient}) {
+    if (resumingClient != null) {
+      // Mark approval by the client.
+      _resumeApprovalsByName.add(resumingClient.name);
+    }
+    final requiredClientApprovals = <String>{};
+    final permissions =
+        isolateManager.dds.clientManager.clientResumePermissions;
+
+    // Determine which clients require approval for this pause type.
+    permissions.forEach((name, clientNamePermissions) {
+      if (clientNamePermissions.permissionsMask & _isolateStateMask != 0) {
+        requiredClientApprovals.add(name);
+      }
+    });
+
+    // We require at least a single client to resume, even if that client
+    // doesn't require resume approval.
+    if (_resumeApprovalsByName.isEmpty) {
+      return false;
+    }
+
+    // If all the required approvals are present, we should resume.
+    return _resumeApprovalsByName.containsAll(requiredClientApprovals);
+  }
+
+  /// Resets the internal resume approvals state.
+  ///
+  /// Should always be called after an isolate is resumed.
+  void clearResumeApprovals() => _resumeApprovalsByName.clear();
+
+  int get _isolateStateMask => isolateStateToMaskMapping[_state] ?? 0;
+
+  static const isolateStateToMaskMapping = {
+    _IsolateState.pauseStart: _PauseTypeMasks.pauseOnStartMask,
+    _IsolateState.pausePostRequest: _PauseTypeMasks.pauseOnReloadMask,
+    _IsolateState.pauseExit: _PauseTypeMasks.pauseOnExitMask,
+  };
+
+  final _IsolateManager isolateManager;
+  final String name;
+  final String portId;
+  final Set<String> _resumeApprovalsByName = {};
+  _IsolateState _state;
+}
+
+class _IsolateManager {
+  _IsolateManager(this.dds);
+
+  /// Handles state changes for isolates.
+  void handleIsolateEvent(json_rpc.Parameters parameters) {
+    final event = parameters['event'];
+    final eventKind = event['kind'].asString;
+
+    // There's no interesting information about isolate state associated with
+    // and IsolateSpawn event.
+    if (eventKind == _ServiceEvents.isolateSpawn) {
+      return;
+    }
+
+    final isolateData = event['isolate'];
+    final id = isolateData['number'].asString;
+    final name = isolateData['name'].asString;
+    _updateIsolateState(id, name, eventKind);
+  }
+
+  void _updateIsolateState(String id, String name, String eventKind) {
+    switch (eventKind) {
+      case _ServiceEvents.isolateStart:
+        isolateStarted(id, name);
+        break;
+      case _ServiceEvents.isolateExit:
+        isolateExited(id);
+        break;
+      default:
+        final isolate = isolates[id];
+        switch (eventKind) {
+          case _ServiceEvents.pauseExit:
+            isolate.pausedOnExit();
+            break;
+          case _ServiceEvents.pausePostRequest:
+            isolate.pausedPostRequest();
+            break;
+          case _ServiceEvents.pauseStart:
+            isolate.pausedOnStart();
+            break;
+          case _ServiceEvents.resume:
+            isolate.resumed();
+            break;
+          default:
+            break;
+        }
+    }
+  }
+
+  /// Initializes the set of running isolates.
+  Future<void> initialize() async {
+    final vm = await dds._vmServiceClient.sendRequest('getVM');
+    final List<Map> isolateRefs = vm['isolates'].cast<Map<String, dynamic>>();
+    // Check the pause event for each isolate to determine whether or not the
+    // isolate is already paused.
+    for (final isolateRef in isolateRefs) {
+      final isolate = await dds._vmServiceClient.sendRequest('getIsolate', {
+        'isolateId': isolateRef['id'],
+      });
+      final portId = isolate['number'];
+      final name = isolate['name'];
+      final eventKind = isolate['pauseEvent']['kind'];
+      isolates[portId] = _RunningIsolate(this, portId, name);
+      _updateIsolateState(portId, name, eventKind);
+    }
+  }
+
+  /// Initializes state for a newly started isolate.
+  void isolateStarted(String portId, String name) {
+    final isolate = _RunningIsolate(this, portId, name);
+    isolate.running();
+    isolates[portId] = isolate;
+  }
+
+  /// Cleans up state for an isolate that has exited.
+  void isolateExited(String portId) {
+    isolates.remove(portId);
+  }
+
+  /// Handles `resume` RPC requests. If the client requires that approval be
+  /// given before resuming an isolate, this method will:
+  ///
+  ///   - Update the approval state for the isolate.
+  ///   - Resume the isolate if approval has been given by all clients which
+  ///     require approval.
+  ///
+  /// Returns a collected sentinel if the isolate no longer exists.
+  Future<Map<String, dynamic>> resumeIsolate(
+    _DartDevelopmentServiceClient client,
+    json_rpc.Parameters parameters,
+  ) async {
+    final isolateId = parameters['isolateId'].asString;
+    final portId = _isolateIdToPortId(isolateId);
+    final isolate = isolates[portId];
+    if (isolate == null) {
+      return _RPCResponses.collectedSentinel;
+    }
+    if (isolate.shouldResume(resumingClient: client)) {
+      isolate.clearResumeApprovals();
+      return await _sendResumeRequest(isolateId, parameters);
+    }
+    return _RPCResponses.success;
+  }
+
+  /// Forwards a `resume` request to the VM service.
+  Future<Map<String, dynamic>> _sendResumeRequest(
+    String isolateId,
+    json_rpc.Parameters parameters,
+  ) async {
+    final step = parameters['step'].asStringOr(null);
+    final frameIndex = parameters['frameIndex'].asIntOr(null);
+    final resumeResult = await dds._vmServiceClient.sendRequest('resume', {
+      'isolateId': isolateId,
+      if (step != null) 'step': step,
+      if (frameIndex != null) 'frameIndex': frameIndex,
+    });
+    return resumeResult;
+  }
+
+  static String _isolateIdToPortId(String isolateId) =>
+      isolateId.substring('isolates/'.length);
+
+  final _DartDevelopmentService dds;
+  final Map<String, _RunningIsolate> isolates = {};
+}
diff --git a/pkg/dds/lib/src/stream_manager.dart b/pkg/dds/lib/src/stream_manager.dart
index 6e2d8dd..217471f 100644
--- a/pkg/dds/lib/src/stream_manager.dart
+++ b/pkg/dds/lib/src/stream_manager.dart
@@ -83,13 +83,24 @@
 
   /// Start listening for `streamNotify` events from the VM service and forward
   /// them to the clients which have subscribed to the stream.
-  void listen() => dds._vmServiceClient.registerMethod(
-        'streamNotify',
-        (parameters) {
-          final streamId = parameters['streamId'].asString;
-          streamNotify(streamId, parameters.value);
-        },
-      );
+  Future<void> listen() async {
+    // The _IsolateManager requires information from both the Debug and
+    // Isolate streams, so they must always be subscribed to by DDS.
+    for (final stream in ddsCoreStreams) {
+      await streamListen(null, stream);
+    }
+    dds._vmServiceClient.registerMethod(
+      'streamNotify',
+      (parameters) {
+        final streamId = parameters['streamId'].asString;
+        // Forward events from the streams _IsolateManager subscribes to.
+        if (isolateManagerStreams.contains(streamId)) {
+          dds.isolateManager.handleIsolateEvent(parameters);
+        }
+        streamNotify(streamId, parameters.value);
+      },
+    );
+  }
 
   /// Subscribes `client` to a stream.
   ///
@@ -112,7 +123,9 @@
     if (streamListeners[stream].contains(client)) {
       throw kStreamAlreadySubscribedException;
     }
-    streamListeners[stream].add(client);
+    if (client != null) {
+      streamListeners[stream].add(client);
+    }
   }
 
   /// Unsubscribes `client` from a stream.
@@ -129,7 +142,8 @@
       throw kStreamNotSubscribedException;
     }
     listeners.remove(client);
-    if (listeners.isEmpty) {
+    // Don't cancel streams DDS needs to function.
+    if (listeners.isEmpty && !ddsCoreStreams.contains(stream)) {
       streamListeners.remove(stream);
       final result = await dds._vmServiceClient.sendRequest('streamCancel', {
         'streamId': stream,
@@ -165,6 +179,21 @@
     _RpcErrorCodes.kStreamNotSubscribed,
   );
 
+  static const kDebugStream = 'Debug';
+  static const kIsolateStream = 'Isolate';
+
+  // Never cancel the Debug or Isolate stream as `_IsolateManager` requires
+  // them for isolate state notifications.
+  static const isolateManagerStreams = <String>{
+    kDebugStream,
+    kIsolateStream,
+  };
+
+  // The set of streams that DDS requires to function.
+  static final ddsCoreStreams = <String>{
+    ...isolateManagerStreams,
+  };
+
   final _DartDevelopmentService dds;
   final streamListeners = <String, List<_DartDevelopmentServiceClient>>{};
 }
diff --git a/pkg/front_end/lib/src/api_prototype/language_version.dart b/pkg/front_end/lib/src/api_prototype/language_version.dart
index af123e5..2ce4a67 100644
--- a/pkg/front_end/lib/src/api_prototype/language_version.dart
+++ b/pkg/front_end/lib/src/api_prototype/language_version.dart
@@ -7,7 +7,7 @@
 import 'package:_fe_analyzer_shared/src/scanner/scanner.dart'
     show LanguageVersionToken, Scanner, ScannerConfiguration, scan;
 
-import 'package:kernel/ast.dart' show Version;
+import 'package:kernel/ast.dart' show Version, defaultLanguageVersion;
 export 'package:kernel/ast.dart' show Version;
 
 import 'package:package_config/package_config.dart'
@@ -17,6 +17,8 @@
 
 import '../fasta/compiler_context.dart' show CompilerContext;
 
+import '../fasta/source/source_library_builder.dart' show SourceLibraryBuilder;
+
 import '../fasta/uri_translator.dart' show UriTranslator;
 
 import 'compiler_options.dart' show CompilerOptions;
@@ -122,3 +124,12 @@
     return new Version(currentSdkVersionMajor, currentSdkVersionMinor);
   });
 }
+
+Future<bool> uriUsesLegacyLanguageVersion(
+    Uri uri, CompilerOptions options) async {
+  // This method is here in order to use the opt out hack here for test
+  // sources.
+  if (SourceLibraryBuilder.isOptOutTest(uri)) return true;
+  Version uriVersion = await languageVersionForUri(uri, options);
+  return (uriVersion < defaultLanguageVersion);
+}
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index 2ce9496..6b0594b 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -386,7 +386,7 @@
       languageVersion.version >= enableNonNullableVersion &&
       !isOptOutTest(library.importUri);
 
-  bool isOptOutTest(Uri uri) {
+  static bool isOptOutTest(Uri uri) {
     String path = uri.path;
     for (String testDir in ['/tests/', '/generated_tests/']) {
       int start = path.indexOf(testDir);
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart
new file mode 100644
index 0000000..ed232d2
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart
@@ -0,0 +1,9 @@
+class C {
+  int with() => 7;
+  int with = 7;
+  int get with => 7;
+  void set with(int x) {}
+}
+
+int with() => 7;
+int with = 7;
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.expect
new file mode 100644
index 0000000..eac2ae2
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.expect
@@ -0,0 +1,326 @@
+Problems reported:
+
+parser/error_recovery/method_called_with:2:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int with() => 7;
+  ^^^
+
+parser/error_recovery/method_called_with:2:3: Expected ';' after this.
+  int with() => 7;
+  ^^^
+
+parser/error_recovery/method_called_with:2:7: Expected a class member, but got 'with'.
+  int with() => 7;
+      ^^^^
+
+parser/error_recovery/method_called_with:2:11: Expected an identifier, but got '('.
+  int with() => 7;
+          ^
+
+parser/error_recovery/method_called_with:3:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int with = 7;
+  ^^^
+
+parser/error_recovery/method_called_with:3:3: Expected ';' after this.
+  int with = 7;
+  ^^^
+
+parser/error_recovery/method_called_with:3:7: Expected a class member, but got 'with'.
+  int with = 7;
+      ^^^^
+
+parser/error_recovery/method_called_with:3:12: Operator declarations must be preceded by the keyword 'operator'.
+  int with = 7;
+           ^
+
+parser/error_recovery/method_called_with:3:12: The string '=' isn't a user-definable operator.
+  int with = 7;
+           ^
+
+parser/error_recovery/method_called_with:3:12: A method declaration needs an explicit list of parameters.
+  int with = 7;
+           ^
+
+parser/error_recovery/method_called_with:3:14: Expected a function body, but got '7'.
+  int with = 7;
+             ^
+
+parser/error_recovery/method_called_with:3:14: Expected a class member, but got '7'.
+  int with = 7;
+             ^
+
+parser/error_recovery/method_called_with:3:15: Expected a class member, but got ';'.
+  int with = 7;
+              ^
+
+parser/error_recovery/method_called_with:4:7: Expected ';' after this.
+  int get with => 7;
+      ^^^
+
+parser/error_recovery/method_called_with:4:11: Expected a class member, but got 'with'.
+  int get with => 7;
+          ^^^^
+
+parser/error_recovery/method_called_with:4:16: Expected an identifier, but got '=>'.
+  int get with => 7;
+               ^^
+
+parser/error_recovery/method_called_with:4:16: A method declaration needs an explicit list of parameters.
+  int get with => 7;
+               ^^
+
+parser/error_recovery/method_called_with:5:8: Expected ';' after this.
+  void set with(int x) {}
+       ^^^
+
+parser/error_recovery/method_called_with:5:12: Expected a class member, but got 'with'.
+  void set with(int x) {}
+           ^^^^
+
+parser/error_recovery/method_called_with:5:16: Expected an identifier, but got '('.
+  void set with(int x) {}
+               ^
+
+parser/error_recovery/method_called_with:8:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int with() => 7;
+^^^
+
+parser/error_recovery/method_called_with:8:1: Expected ';' after this.
+int with() => 7;
+^^^
+
+parser/error_recovery/method_called_with:8:5: Expected an identifier, but got 'with'.
+int with() => 7;
+    ^^^^
+
+parser/error_recovery/method_called_with:9:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int with = 7;
+^^^
+
+parser/error_recovery/method_called_with:9:1: Expected ';' after this.
+int with = 7;
+^^^
+
+parser/error_recovery/method_called_with:9:5: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int with = 7;
+    ^^^^
+
+parser/error_recovery/method_called_with:9:5: Expected an identifier, but got 'with'.
+int with = 7;
+    ^^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(C, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, C)
+      handleNoType(C)
+      handleClassExtends(null)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          handleRecoverableError(MissingConstFinalVarOrType, int, int)
+          handleNoType({)
+          handleIdentifier(int, fieldDeclaration)
+          handleNoFieldInitializer(with)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+        endClassFields(null, null, null, null, 1, int, ;)
+      endMember()
+      beginMetadataStar(with)
+      endMetadataStar(0)
+      beginMember()
+        handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
+        handleInvalidMember(with)
+      endMember()
+      beginMetadataStar(()
+      endMetadataStar(0)
+      beginMember()
+        beginMethod(null, null, null, null, null, ()
+          handleNoType(with)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+          handleIdentifier(, methodDeclaration)
+          handleNoTypeVariables(()
+          beginFormalParameters((, MemberKind.NonStaticMethod)
+          endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+          handleNoInitializers()
+          handleAsyncModifier(null, null)
+          handleLiteralInt(7)
+          handleExpressionFunctionBody(=>, ;)
+        endClassMethod(null, , (, null, ;)
+      endMember()
+      beginMetadataStar(int)
+      endMetadataStar(0)
+      beginMember()
+        handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        handleNoType(;)
+        handleIdentifier(int, fieldDeclaration)
+        handleNoFieldInitializer(with)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+      endClassFields(null, null, null, null, 1, int, ;)
+    endMember()
+    beginMetadataStar(with)
+    endMetadataStar(0)
+    beginMember()
+      handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
+      handleInvalidMember(with)
+    endMember()
+    beginMetadataStar(=)
+    endMetadataStar(0)
+    beginMember()
+      handleRecoverableError(MissingOperatorKeyword, =, =)
+      beginMethod(null, null, null, null, null, operator)
+        handleNoType(with)
+        handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+        handleInvalidOperatorName(operator, =)
+        handleNoTypeVariables(7)
+        handleRecoverableError(MissingMethodParameters, =, =)
+        beginFormalParameters((, MemberKind.NonStaticMethod)
+        endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+        handleNoInitializers()
+        handleAsyncModifier(null, null)
+        handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '7'., null, {token: 7}], 7, 7)
+        handleInvalidFunctionBody({)
+      endClassMethod(null, operator, (, null, })
+    endMember()
+    beginMetadataStar(7)
+    endMetadataStar(0)
+    beginMember()
+      handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '7'., null, {token: 7}], 7, 7)
+      handleInvalidMember(7)
+    endMember()
+    beginMetadataStar(;)
+    endMetadataStar(0)
+    beginMember()
+      handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+      handleInvalidMember(;)
+    endMember()
+    beginMetadataStar(int)
+    endMetadataStar(0)
+    beginMember()
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(get)
+      handleType(int, null)
+      handleIdentifier(get, fieldDeclaration)
+      handleNoFieldInitializer(with)
+      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], get, get)
+    endClassFields(null, null, null, null, 1, int, ;)
+  endMember()
+  beginMetadataStar(with)
+  endMetadataStar(0)
+  beginMember()
+    handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
+    handleInvalidMember(with)
+  endMember()
+  beginMetadataStar(=>)
+  endMetadataStar(0)
+  beginMember()
+    beginMethod(null, null, null, null, null, =>)
+      handleNoType(with)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '=>'., null, {token: =>}], =>, =>)
+      handleIdentifier(, methodDeclaration)
+      handleNoTypeVariables(=>)
+      handleRecoverableError(MissingMethodParameters, =>, =>)
+      beginFormalParameters((, MemberKind.NonStaticMethod)
+      endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+      handleNoInitializers()
+      handleAsyncModifier(null, null)
+      handleLiteralInt(7)
+      handleExpressionFunctionBody(=>, ;)
+    endClassMethod(null, , (, null, ;)
+  endMember()
+  beginMetadataStar(void)
+  endMetadataStar(0)
+  beginMember()
+    handleVoidKeyword(void)
+    handleIdentifier(set, fieldDeclaration)
+    handleNoFieldInitializer(with)
+    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], set, set)
+  endClassFields(null, null, null, null, 1, void, ;)
+endMember()
+beginMetadataStar(with)
+endMetadataStar(0)
+beginMember()
+  handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
+  handleInvalidMember(with)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+  beginMethod(null, null, null, null, null, ()
+    handleNoType(with)
+    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+    handleIdentifier(, methodDeclaration)
+    handleNoTypeVariables(()
+    beginFormalParameters((, MemberKind.NonStaticMethod)
+      beginMetadataStar(int)
+      endMetadataStar(0)
+      beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(x)
+        handleType(int, null)
+        handleIdentifier(x, formalParameterDeclaration)
+        handleFormalParameterWithoutValue())
+      endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+    endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+    handleNoInitializers()
+    handleAsyncModifier(null, null)
+    beginBlockFunctionBody({)
+    endBlockFunctionBody(0, {, })
+  endClassMethod(null, , (, null, })
+endMember()
+endClassOrMixinBody(DeclarationKind.Class, 14, {, })
+endClassDeclaration(class, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(with)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(with)
+beginMetadataStar(with)
+endMetadataStar(0)
+beginTopLevelMember(with)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+handleIdentifier(with, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+handleLiteralInt(7)
+handleExpressionFunctionBody(=>, ;)
+endTopLevelMethod(with, null, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(with)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(with)
+beginMetadataStar(with)
+endMetadataStar(0)
+beginTopLevelMember(with)
+handleRecoverableError(MissingConstFinalVarOrType, with, with)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+handleIdentifier(with, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(7)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, with, ;)
+endTopLevelDeclaration()
+endCompilationUnit(5, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.intertwined.expect
new file mode 100644
index 0000000..3335498
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.intertwined.expect
@@ -0,0 +1,461 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(C, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, C)
+        parseClass(C, class, class, C)
+          parseClassHeaderOpt(C, class, class)
+            parseClassExtendsOpt(C)
+              listener: handleNoType(C)
+              listener: handleClassExtends(null)
+            parseWithClauseOpt(C)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(C)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
+              parseMetadataStar({)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, {, Instance of 'NoType', int, DeclarationKind.Class, C)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType({)
+                ensureIdentifier({, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, C)
+                  listener: handleNoFieldInitializer(with)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, with)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(with)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, C)
+                reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
+                listener: handleInvalidMember(with)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(with, DeclarationKind.Class, C)
+              parseMetadataStar(with)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(with, with, null, null, null, null, null, with, Instance of 'NoType', null, DeclarationKind.Class, C)
+                parseMethod(with, null, null, null, null, null, with, Instance of 'NoType', null, (, DeclarationKind.Class, C)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(with)
+                  ensureIdentifier(with, methodDeclaration)
+                    insertSyntheticIdentifier(with, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    parseExpressionFunctionBody(=>, false)
+                      parseExpression(=>)
+                        parsePrecedenceExpression(=>, 1, true)
+                          parseUnaryExpression(=>, true)
+                            parsePrimary(=>, expression)
+                              parseLiteralInt(=>)
+                                listener: handleLiteralInt(7)
+                      ensureSemicolon(7)
+                      listener: handleExpressionFunctionBody(=>, ;)
+                      inGenerator()
+                  listener: endClassMethod(null, , (, null, ;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, C)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, C)
+                  listener: handleNoFieldInitializer(with)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, with)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(with)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, C)
+                reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
+                listener: handleInvalidMember(with)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(with, DeclarationKind.Class, C)
+              parseMetadataStar(with)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(with, with, null, null, null, null, null, with, Instance of 'NoType', null, DeclarationKind.Class, C)
+                parseInvalidOperatorDeclaration(with, null, null, null, null, null, with, DeclarationKind.Class, C)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(with, null, null, null, null, null, with, Instance of 'NoType', null, operator, DeclarationKind.Class, C)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(with)
+                    parseOperatorName(with)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(7)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(7, Message[ExpectedFunctionBody, Expected a function body, but got '7'., null, {token: 7}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '7'., null, {token: 7}], 7, 7)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 7)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, C)
+              parseMetadataStar(})
+                listener: beginMetadataStar(7)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, C)
+                reportRecoverableErrorWithToken(7, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '7'., null, {token: 7}], 7, 7)
+                listener: handleInvalidMember(7)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(7, DeclarationKind.Class, C)
+              parseMetadataStar(7)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(7, 7, null, null, null, null, null, 7, Instance of 'NoType', null, DeclarationKind.Class, C)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', get, DeclarationKind.Class, C)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(get)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(get, fieldDeclaration)
+                parseFieldInitializerOpt(get, get, null, null, DeclarationKind.Class, C)
+                  listener: handleNoFieldInitializer(with)
+                ensureSemicolon(get)
+                  reportRecoverableError(get, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], get, get)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, with)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(with)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, C)
+                reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
+                listener: handleInvalidMember(with)
+                listener: endMember()
+            notEofOrValue(}, =>)
+            parseClassOrMixinOrExtensionMemberImpl(with, DeclarationKind.Class, C)
+              parseMetadataStar(with)
+                listener: beginMetadataStar(=>)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(with, with, null, null, null, null, null, with, Instance of 'NoType', null, DeclarationKind.Class, C)
+                parseMethod(with, null, null, null, null, null, with, Instance of 'NoType', null, =>, DeclarationKind.Class, C)
+                  listener: beginMethod(null, null, null, null, null, =>)
+                  listener: handleNoType(with)
+                  ensureIdentifier(with, methodDeclaration)
+                    insertSyntheticIdentifier(with, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError(=>, Message[ExpectedIdentifier, Expected an identifier, but got '=>'., null, {token: =>}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '=>'., null, {token: =>}], =>, =>)
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(=>)
+                  parseGetterOrFormalParameters(, =>, false, MemberKind.NonStaticMethod)
+                    missingParameterMessage(MemberKind.NonStaticMethod)
+                    reportRecoverableError(=>, MissingMethodParameters)
+                      listener: handleRecoverableError(MissingMethodParameters, =>, =>)
+                    rewriter()
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    parseExpressionFunctionBody(=>, false)
+                      parseExpression(=>)
+                        parsePrecedenceExpression(=>, 1, true)
+                          parseUnaryExpression(=>, true)
+                            parsePrimary(=>, expression)
+                              parseLiteralInt(=>)
+                                listener: handleLiteralInt(7)
+                      ensureSemicolon(7)
+                      listener: handleExpressionFunctionBody(=>, ;)
+                      inGenerator()
+                  listener: endClassMethod(null, , (, null, ;)
+                listener: endMember()
+            notEofOrValue(}, void)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(void)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'VoidType', set, DeclarationKind.Class, C)
+                listener: handleVoidKeyword(void)
+                ensureIdentifier(void, fieldDeclaration)
+                  listener: handleIdentifier(set, fieldDeclaration)
+                parseFieldInitializerOpt(set, set, null, null, DeclarationKind.Class, C)
+                  listener: handleNoFieldInitializer(with)
+                ensureSemicolon(set)
+                  reportRecoverableError(set, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], set, set)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, void, ;)
+              listener: endMember()
+            notEofOrValue(}, with)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(with)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, C)
+                reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
+                listener: handleInvalidMember(with)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(with, DeclarationKind.Class, C)
+              parseMetadataStar(with)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(with, with, null, null, null, null, null, with, Instance of 'NoType', null, DeclarationKind.Class, C)
+                parseMethod(with, null, null, null, null, null, with, Instance of 'NoType', null, (, DeclarationKind.Class, C)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(with)
+                  ensureIdentifier(with, methodDeclaration)
+                    insertSyntheticIdentifier(with, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(0, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 14, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(with)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(with)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(with)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(with)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, with)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+          listener: handleIdentifier(with, topLevelFunctionDeclaration)
+        parseMethodTypeVar(with)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(with, with, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(with, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          parseExpressionFunctionBody(=>, false)
+            parseExpression(=>)
+              parsePrecedenceExpression(=>, 1, true)
+                parseUnaryExpression(=>, true)
+                  parsePrimary(=>, expression)
+                    parseLiteralInt(=>)
+                      listener: handleLiteralInt(7)
+            ensureSemicolon(7)
+            listener: handleExpressionFunctionBody(=>, ;)
+            inGenerator()
+        listener: endTopLevelMethod(with, null, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(with)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(with)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(with)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(with)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', with, DeclarationKind.TopLevel, null)
+        reportRecoverableError(with, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, with, with)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelVariableDeclaration)
+          reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+          listener: handleIdentifier(with, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(with, with, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(7)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, with, ;)
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(5, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.parser.expect
new file mode 100644
index 0000000..0d88f7f
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.parser.expect
@@ -0,0 +1,23 @@
+NOTICE: Stream was rewritten by parser!
+
+class C {
+int ;with() => 7;
+int ;with operator= (){}7;
+int get ;with ()=> 7;
+void set ;with(int x) {}
+}
+
+int ;with() => 7;
+int ;with = 7;
+
+
+class[KeywordToken] C[StringToken] {[BeginToken]
+int[StringToken] ;[SyntheticToken]with[KeywordToken][SyntheticStringToken]([BeginToken])[SimpleToken] =>[SimpleToken] 7[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]with[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]7[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] ;[SyntheticToken]with[KeywordToken] [SyntheticStringToken]([SyntheticBeginToken])[SyntheticToken]=>[SimpleToken] 7[StringToken];[SimpleToken]
+void[KeywordToken] set[KeywordToken] ;[SyntheticToken]with[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]with[KeywordToken]([BeginToken])[SimpleToken] =>[SimpleToken] 7[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]with[KeywordToken] =[SimpleToken] 7[StringToken];[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.scanner.expect
new file mode 100644
index 0000000..8295b68
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.scanner.expect
@@ -0,0 +1,21 @@
+class C {
+int with() => 7;
+int with = 7;
+int get with => 7;
+void set with(int x) {}
+}
+
+int with() => 7;
+int with = 7;
+
+
+class[KeywordToken] C[StringToken] {[BeginToken]
+int[StringToken] with[KeywordToken]([BeginToken])[SimpleToken] =>[SimpleToken] 7[StringToken];[SimpleToken]
+int[StringToken] with[KeywordToken] =[SimpleToken] 7[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] with[KeywordToken] =>[SimpleToken] 7[StringToken];[SimpleToken]
+void[KeywordToken] set[KeywordToken] with[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] with[KeywordToken]([BeginToken])[SimpleToken] =>[SimpleToken] 7[StringToken];[SimpleToken]
+int[StringToken] with[KeywordToken] =[SimpleToken] 7[StringToken];[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart
new file mode 100644
index 0000000..ed5ce5e
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart
@@ -0,0 +1,9 @@
+class C {
+  int With() => 7;
+  int With = 7;
+  int get With => 7;
+  void set With(int x) {}
+}
+
+int With() => 7;
+int With = 7;
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.expect
new file mode 100644
index 0000000..5dd0a88
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.expect
@@ -0,0 +1,114 @@
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(C, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, C)
+      handleNoType(C)
+      handleClassExtends(null)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, With)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(With)
+            handleType(int, null)
+            handleIdentifier(With, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+            endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            handleLiteralInt(7)
+            handleExpressionFunctionBody(=>, ;)
+          endClassMethod(null, int, (, null, ;)
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(With)
+          handleType(int, null)
+          handleIdentifier(With, fieldDeclaration)
+          beginFieldInitializer(=)
+            handleLiteralInt(7)
+          endFieldInitializer(=, ;)
+        endClassFields(null, null, null, null, 1, int, ;)
+      endMember()
+      beginMetadataStar(int)
+      endMetadataStar(0)
+      beginMember()
+        beginMethod(null, null, null, null, get, With)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(get)
+          handleType(int, null)
+          handleIdentifier(With, methodDeclaration)
+          handleNoTypeVariables(=>)
+          handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+          handleNoInitializers()
+          handleAsyncModifier(null, null)
+          handleLiteralInt(7)
+          handleExpressionFunctionBody(=>, ;)
+        endClassMethod(get, int, =>, null, ;)
+      endMember()
+      beginMetadataStar(void)
+      endMetadataStar(0)
+      beginMember()
+        beginMethod(null, null, null, null, set, With)
+          handleVoidKeyword(void)
+          handleIdentifier(With, methodDeclaration)
+          handleNoTypeVariables(()
+          beginFormalParameters((, MemberKind.NonStaticMethod)
+            beginMetadataStar(int)
+            endMetadataStar(0)
+            beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(x)
+              handleType(int, null)
+              handleIdentifier(x, formalParameterDeclaration)
+              handleFormalParameterWithoutValue())
+            endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+          endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+          handleNoInitializers()
+          handleAsyncModifier(null, null)
+          beginBlockFunctionBody({)
+          endBlockFunctionBody(0, {, })
+        endClassMethod(set, void, (, null, })
+      endMember()
+    endClassOrMixinBody(DeclarationKind.Class, 4, {, })
+  endClassDeclaration(class, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+  beginTopLevelMethod(}, null)
+    handleIdentifier(int, typeReference)
+    handleNoTypeArguments(With)
+    handleType(int, null)
+    handleIdentifier(With, topLevelFunctionDeclaration)
+    handleNoTypeVariables(()
+    beginFormalParameters((, MemberKind.TopLevelMethod)
+    endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+    handleAsyncModifier(null, null)
+    handleLiteralInt(7)
+    handleExpressionFunctionBody(=>, ;)
+  endTopLevelMethod(int, null, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+  handleIdentifier(int, typeReference)
+  handleNoTypeArguments(With)
+  handleType(int, null)
+  handleIdentifier(With, topLevelVariableDeclaration)
+  beginFieldInitializer(=)
+    handleLiteralInt(7)
+  endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration()
+endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.intertwined.expect
new file mode 100644
index 0000000..695beee
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.intertwined.expect
@@ -0,0 +1,236 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(C, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, C)
+        parseClass(C, class, class, C)
+          parseClassHeaderOpt(C, class, class)
+            parseClassExtendsOpt(C)
+              listener: handleNoType(C)
+              listener: handleClassExtends(null)
+            parseWithClauseOpt(C)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(C)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
+              parseMetadataStar({)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', null, With, DeclarationKind.Class, C)
+                listener: beginMethod(null, null, null, null, null, With)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(With)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(With, methodDeclaration)
+                parseQualifiedRestOpt(With, methodDeclarationContinuation)
+                parseMethodTypeVar(With)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(With, With, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(With, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  parseExpressionFunctionBody(=>, false)
+                    parseExpression(=>)
+                      parsePrecedenceExpression(=>, 1, true)
+                        parseUnaryExpression(=>, true)
+                          parsePrimary(=>, expression)
+                            parseLiteralInt(=>)
+                              listener: handleLiteralInt(7)
+                    ensureSemicolon(7)
+                    listener: handleExpressionFunctionBody(=>, ;)
+                    inGenerator()
+                listener: endClassMethod(null, int, (, null, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', With, DeclarationKind.Class, C)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(With)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(With, fieldDeclaration)
+                parseFieldInitializerOpt(With, With, null, null, DeclarationKind.Class, C)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(7)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'SimpleType', get, With, DeclarationKind.Class, C)
+                listener: beginMethod(null, null, null, null, get, With)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(get)
+                listener: handleType(int, null)
+                ensureIdentifier(get, methodDeclaration)
+                  listener: handleIdentifier(With, methodDeclaration)
+                parseQualifiedRestOpt(With, methodDeclarationContinuation)
+                listener: handleNoTypeVariables(=>)
+                parseGetterOrFormalParameters(With, With, true, MemberKind.NonStaticMethod)
+                  listener: handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+                parseInitializersOpt(With)
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt(With)
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                inPlainSync()
+                parseFunctionBody(With, false, true)
+                  parseExpressionFunctionBody(=>, false)
+                    parseExpression(=>)
+                      parsePrecedenceExpression(=>, 1, true)
+                        parseUnaryExpression(=>, true)
+                          parsePrimary(=>, expression)
+                            parseLiteralInt(=>)
+                              listener: handleLiteralInt(7)
+                    ensureSemicolon(7)
+                    listener: handleExpressionFunctionBody(=>, ;)
+                    inGenerator()
+                listener: endClassMethod(get, int, =>, null, ;)
+              listener: endMember()
+            notEofOrValue(}, void)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(void)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'VoidType', set, With, DeclarationKind.Class, C)
+                listener: beginMethod(null, null, null, null, set, With)
+                listener: handleVoidKeyword(void)
+                ensureIdentifier(set, methodDeclaration)
+                  listener: handleIdentifier(With, methodDeclaration)
+                parseQualifiedRestOpt(With, methodDeclarationContinuation)
+                listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(With, With, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(With, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(0, {, })
+                listener: endClassMethod(set, void, (, null, })
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 4, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, With)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(With)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(With, topLevelFunctionDeclaration)
+        parseMethodTypeVar(With)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(With, With, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(With, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          parseExpressionFunctionBody(=>, false)
+            parseExpression(=>)
+              parsePrecedenceExpression(=>, 1, true)
+                parseUnaryExpression(=>, true)
+                  parsePrimary(=>, expression)
+                    parseLiteralInt(=>)
+                      listener: handleLiteralInt(7)
+            ensureSemicolon(7)
+            listener: handleExpressionFunctionBody(=>, ;)
+            inGenerator()
+        listener: endTopLevelMethod(int, null, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', With, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(With)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(With, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(With, With, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(7)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.parser.expect
new file mode 100644
index 0000000..285faf2
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.parser.expect
@@ -0,0 +1,21 @@
+class C {
+int With() => 7;
+int With = 7;
+int get With => 7;
+void set With(int x) {}
+}
+
+int With() => 7;
+int With = 7;
+
+
+class[KeywordToken] C[StringToken] {[BeginToken]
+int[StringToken] With[StringToken]([BeginToken])[SimpleToken] =>[SimpleToken] 7[StringToken];[SimpleToken]
+int[StringToken] With[StringToken] =[SimpleToken] 7[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] With[StringToken] =>[SimpleToken] 7[StringToken];[SimpleToken]
+void[KeywordToken] set[KeywordToken] With[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] With[StringToken]([BeginToken])[SimpleToken] =>[SimpleToken] 7[StringToken];[SimpleToken]
+int[StringToken] With[StringToken] =[SimpleToken] 7[StringToken];[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.scanner.expect
new file mode 100644
index 0000000..285faf2
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.scanner.expect
@@ -0,0 +1,21 @@
+class C {
+int With() => 7;
+int With = 7;
+int get With => 7;
+void set With(int x) {}
+}
+
+int With() => 7;
+int With = 7;
+
+
+class[KeywordToken] C[StringToken] {[BeginToken]
+int[StringToken] With[StringToken]([BeginToken])[SimpleToken] =>[SimpleToken] 7[StringToken];[SimpleToken]
+int[StringToken] With[StringToken] =[SimpleToken] 7[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] With[StringToken] =>[SimpleToken] 7[StringToken];[SimpleToken]
+void[KeywordToken] set[KeywordToken] With[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] With[StringToken]([BeginToken])[SimpleToken] =>[SimpleToken] 7[StringToken];[SimpleToken]
+int[StringToken] With[StringToken] =[SimpleToken] 7[StringToken];[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart
new file mode 100644
index 0000000..30ca978
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart
@@ -0,0 +1,35 @@
+class WrapperClass {
+  int assert = 42;
+  int break = 42;
+  int case = 42;
+  int catch = 42;
+  int class = 42;
+  int const = 42;
+  int continue = 42;
+  int default = 42;
+  int do = 42;
+  int else = 42;
+  int enum = 42;
+  int extends = 42;
+  int false = 42;
+  int final = 42;
+  int finally = 42;
+  int for = 42;
+  int if = 42;
+  int in = 42;
+  int is = 42;
+  int new = 42;
+  int null = 42;
+  int rethrow = 42;
+  int return = 42;
+  int super = 42;
+  int switch = 42;
+  int this = 42;
+  int throw = 42;
+  int true = 42;
+  int try = 42;
+  int var = 42;
+  int void = 42;
+  int while = 42;
+  int with = 42;
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.expect
new file mode 100644
index 0000000..313f38a
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.expect
@@ -0,0 +1,2633 @@
+Problems reported:
+
+parser/error_recovery/reserved_words_class_fields:2:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int assert = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:2:3: Expected ';' after this.
+  int assert = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:2:7: Expected a class member, but got 'assert'.
+  int assert = 42;
+      ^^^^^^
+
+parser/error_recovery/reserved_words_class_fields:2:14: Operator declarations must be preceded by the keyword 'operator'.
+  int assert = 42;
+             ^
+
+parser/error_recovery/reserved_words_class_fields:2:14: The string '=' isn't a user-definable operator.
+  int assert = 42;
+             ^
+
+parser/error_recovery/reserved_words_class_fields:2:14: A method declaration needs an explicit list of parameters.
+  int assert = 42;
+             ^
+
+parser/error_recovery/reserved_words_class_fields:2:16: Expected a function body, but got '42'.
+  int assert = 42;
+               ^^
+
+parser/error_recovery/reserved_words_class_fields:2:16: Expected a class member, but got '42'.
+  int assert = 42;
+               ^^
+
+parser/error_recovery/reserved_words_class_fields:2:18: Expected a class member, but got ';'.
+  int assert = 42;
+                 ^
+
+parser/error_recovery/reserved_words_class_fields:3:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int break = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:3:3: Expected ';' after this.
+  int break = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:3:7: Expected a class member, but got 'break'.
+  int break = 42;
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_fields:3:13: Operator declarations must be preceded by the keyword 'operator'.
+  int break = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:3:13: The string '=' isn't a user-definable operator.
+  int break = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:3:13: A method declaration needs an explicit list of parameters.
+  int break = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:3:15: Expected a function body, but got '42'.
+  int break = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:3:15: Expected a class member, but got '42'.
+  int break = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:3:17: Expected a class member, but got ';'.
+  int break = 42;
+                ^
+
+parser/error_recovery/reserved_words_class_fields:4:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int case = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:4:3: Expected ';' after this.
+  int case = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:4:7: Expected a class member, but got 'case'.
+  int case = 42;
+      ^^^^
+
+parser/error_recovery/reserved_words_class_fields:4:12: Operator declarations must be preceded by the keyword 'operator'.
+  int case = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:4:12: The string '=' isn't a user-definable operator.
+  int case = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:4:12: A method declaration needs an explicit list of parameters.
+  int case = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:4:14: Expected a function body, but got '42'.
+  int case = 42;
+             ^^
+
+parser/error_recovery/reserved_words_class_fields:4:14: Expected a class member, but got '42'.
+  int case = 42;
+             ^^
+
+parser/error_recovery/reserved_words_class_fields:4:16: Expected a class member, but got ';'.
+  int case = 42;
+               ^
+
+parser/error_recovery/reserved_words_class_fields:5:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int catch = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:5:3: Expected ';' after this.
+  int catch = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:5:7: Expected a class member, but got 'catch'.
+  int catch = 42;
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_fields:5:13: Operator declarations must be preceded by the keyword 'operator'.
+  int catch = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:5:13: The string '=' isn't a user-definable operator.
+  int catch = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:5:13: A method declaration needs an explicit list of parameters.
+  int catch = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:5:15: Expected a function body, but got '42'.
+  int catch = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:5:15: Expected a class member, but got '42'.
+  int catch = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:5:17: Expected a class member, but got ';'.
+  int catch = 42;
+                ^
+
+parser/error_recovery/reserved_words_class_fields:6:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int class = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:6:3: Expected ';' after this.
+  int class = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:6:7: Classes can't be declared inside other classes.
+  int class = 42;
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_fields:6:13: Operator declarations must be preceded by the keyword 'operator'.
+  int class = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:6:13: The string '=' isn't a user-definable operator.
+  int class = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:6:13: A method declaration needs an explicit list of parameters.
+  int class = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:6:15: Expected a function body, but got '42'.
+  int class = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:6:15: Expected a class member, but got '42'.
+  int class = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:6:17: Expected a class member, but got ';'.
+  int class = 42;
+                ^
+
+parser/error_recovery/reserved_words_class_fields:7:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int const = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:7:3: Expected ';' after this.
+  int const = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:7:13: Operator declarations must be preceded by the keyword 'operator'.
+  int const = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:7:13: The string '=' isn't a user-definable operator.
+  int const = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:7:13: A method declaration needs an explicit list of parameters.
+  int const = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:7:15: Expected a function body, but got '42'.
+  int const = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:7:7: Getters, setters and methods can't be declared to be 'const'.
+  int const = 42;
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_fields:7:15: Expected a class member, but got '42'.
+  int const = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:7:17: Expected a class member, but got ';'.
+  int const = 42;
+                ^
+
+parser/error_recovery/reserved_words_class_fields:8:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int continue = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:8:3: Expected ';' after this.
+  int continue = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:8:7: Expected a class member, but got 'continue'.
+  int continue = 42;
+      ^^^^^^^^
+
+parser/error_recovery/reserved_words_class_fields:8:16: Operator declarations must be preceded by the keyword 'operator'.
+  int continue = 42;
+               ^
+
+parser/error_recovery/reserved_words_class_fields:8:16: The string '=' isn't a user-definable operator.
+  int continue = 42;
+               ^
+
+parser/error_recovery/reserved_words_class_fields:8:16: A method declaration needs an explicit list of parameters.
+  int continue = 42;
+               ^
+
+parser/error_recovery/reserved_words_class_fields:8:18: Expected a function body, but got '42'.
+  int continue = 42;
+                 ^^
+
+parser/error_recovery/reserved_words_class_fields:8:18: Expected a class member, but got '42'.
+  int continue = 42;
+                 ^^
+
+parser/error_recovery/reserved_words_class_fields:8:20: Expected a class member, but got ';'.
+  int continue = 42;
+                   ^
+
+parser/error_recovery/reserved_words_class_fields:9:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int default = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:9:3: Expected ';' after this.
+  int default = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:9:7: Expected a class member, but got 'default'.
+  int default = 42;
+      ^^^^^^^
+
+parser/error_recovery/reserved_words_class_fields:9:15: Operator declarations must be preceded by the keyword 'operator'.
+  int default = 42;
+              ^
+
+parser/error_recovery/reserved_words_class_fields:9:15: The string '=' isn't a user-definable operator.
+  int default = 42;
+              ^
+
+parser/error_recovery/reserved_words_class_fields:9:15: A method declaration needs an explicit list of parameters.
+  int default = 42;
+              ^
+
+parser/error_recovery/reserved_words_class_fields:9:17: Expected a function body, but got '42'.
+  int default = 42;
+                ^^
+
+parser/error_recovery/reserved_words_class_fields:9:17: Expected a class member, but got '42'.
+  int default = 42;
+                ^^
+
+parser/error_recovery/reserved_words_class_fields:9:19: Expected a class member, but got ';'.
+  int default = 42;
+                  ^
+
+parser/error_recovery/reserved_words_class_fields:10:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int do = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:10:3: Expected ';' after this.
+  int do = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:10:7: Expected a class member, but got 'do'.
+  int do = 42;
+      ^^
+
+parser/error_recovery/reserved_words_class_fields:10:10: Operator declarations must be preceded by the keyword 'operator'.
+  int do = 42;
+         ^
+
+parser/error_recovery/reserved_words_class_fields:10:10: The string '=' isn't a user-definable operator.
+  int do = 42;
+         ^
+
+parser/error_recovery/reserved_words_class_fields:10:10: A method declaration needs an explicit list of parameters.
+  int do = 42;
+         ^
+
+parser/error_recovery/reserved_words_class_fields:10:12: Expected a function body, but got '42'.
+  int do = 42;
+           ^^
+
+parser/error_recovery/reserved_words_class_fields:10:12: Expected a class member, but got '42'.
+  int do = 42;
+           ^^
+
+parser/error_recovery/reserved_words_class_fields:10:14: Expected a class member, but got ';'.
+  int do = 42;
+             ^
+
+parser/error_recovery/reserved_words_class_fields:11:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int else = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:11:3: Expected ';' after this.
+  int else = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:11:7: Expected a class member, but got 'else'.
+  int else = 42;
+      ^^^^
+
+parser/error_recovery/reserved_words_class_fields:11:12: Operator declarations must be preceded by the keyword 'operator'.
+  int else = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:11:12: The string '=' isn't a user-definable operator.
+  int else = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:11:12: A method declaration needs an explicit list of parameters.
+  int else = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:11:14: Expected a function body, but got '42'.
+  int else = 42;
+             ^^
+
+parser/error_recovery/reserved_words_class_fields:11:14: Expected a class member, but got '42'.
+  int else = 42;
+             ^^
+
+parser/error_recovery/reserved_words_class_fields:11:16: Expected a class member, but got ';'.
+  int else = 42;
+               ^
+
+parser/error_recovery/reserved_words_class_fields:12:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int enum = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:12:3: Expected ';' after this.
+  int enum = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:12:7: Enums can't be declared inside classes.
+  int enum = 42;
+      ^^^^
+
+parser/error_recovery/reserved_words_class_fields:12:12: Operator declarations must be preceded by the keyword 'operator'.
+  int enum = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:12:12: The string '=' isn't a user-definable operator.
+  int enum = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:12:12: A method declaration needs an explicit list of parameters.
+  int enum = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:12:14: Expected a function body, but got '42'.
+  int enum = 42;
+             ^^
+
+parser/error_recovery/reserved_words_class_fields:12:14: Expected a class member, but got '42'.
+  int enum = 42;
+             ^^
+
+parser/error_recovery/reserved_words_class_fields:12:16: Expected a class member, but got ';'.
+  int enum = 42;
+               ^
+
+parser/error_recovery/reserved_words_class_fields:13:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int extends = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:13:3: Expected ';' after this.
+  int extends = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:13:7: Expected a class member, but got 'extends'.
+  int extends = 42;
+      ^^^^^^^
+
+parser/error_recovery/reserved_words_class_fields:13:15: Operator declarations must be preceded by the keyword 'operator'.
+  int extends = 42;
+              ^
+
+parser/error_recovery/reserved_words_class_fields:13:15: The string '=' isn't a user-definable operator.
+  int extends = 42;
+              ^
+
+parser/error_recovery/reserved_words_class_fields:13:15: A method declaration needs an explicit list of parameters.
+  int extends = 42;
+              ^
+
+parser/error_recovery/reserved_words_class_fields:13:17: Expected a function body, but got '42'.
+  int extends = 42;
+                ^^
+
+parser/error_recovery/reserved_words_class_fields:13:17: Expected a class member, but got '42'.
+  int extends = 42;
+                ^^
+
+parser/error_recovery/reserved_words_class_fields:13:19: Expected a class member, but got ';'.
+  int extends = 42;
+                  ^
+
+parser/error_recovery/reserved_words_class_fields:14:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int false = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:14:3: Expected ';' after this.
+  int false = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:14:7: Expected a class member, but got 'false'.
+  int false = 42;
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_fields:14:13: Operator declarations must be preceded by the keyword 'operator'.
+  int false = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:14:13: The string '=' isn't a user-definable operator.
+  int false = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:14:13: A method declaration needs an explicit list of parameters.
+  int false = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:14:15: Expected a function body, but got '42'.
+  int false = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:14:15: Expected a class member, but got '42'.
+  int false = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:14:17: Expected a class member, but got ';'.
+  int false = 42;
+                ^
+
+parser/error_recovery/reserved_words_class_fields:15:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int final = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:15:3: Expected ';' after this.
+  int final = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:15:13: Operator declarations must be preceded by the keyword 'operator'.
+  int final = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:15:7: Can't have modifier 'final' here.
+  int final = 42;
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_fields:15:13: The string '=' isn't a user-definable operator.
+  int final = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:15:13: A method declaration needs an explicit list of parameters.
+  int final = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:15:15: Expected a function body, but got '42'.
+  int final = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:15:15: Expected a class member, but got '42'.
+  int final = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:15:17: Expected a class member, but got ';'.
+  int final = 42;
+                ^
+
+parser/error_recovery/reserved_words_class_fields:16:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int finally = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:16:3: Expected ';' after this.
+  int finally = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:16:7: Expected a class member, but got 'finally'.
+  int finally = 42;
+      ^^^^^^^
+
+parser/error_recovery/reserved_words_class_fields:16:15: Operator declarations must be preceded by the keyword 'operator'.
+  int finally = 42;
+              ^
+
+parser/error_recovery/reserved_words_class_fields:16:15: The string '=' isn't a user-definable operator.
+  int finally = 42;
+              ^
+
+parser/error_recovery/reserved_words_class_fields:16:15: A method declaration needs an explicit list of parameters.
+  int finally = 42;
+              ^
+
+parser/error_recovery/reserved_words_class_fields:16:17: Expected a function body, but got '42'.
+  int finally = 42;
+                ^^
+
+parser/error_recovery/reserved_words_class_fields:16:17: Expected a class member, but got '42'.
+  int finally = 42;
+                ^^
+
+parser/error_recovery/reserved_words_class_fields:16:19: Expected a class member, but got ';'.
+  int finally = 42;
+                  ^
+
+parser/error_recovery/reserved_words_class_fields:17:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int for = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:17:3: Expected ';' after this.
+  int for = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:17:7: Expected a class member, but got 'for'.
+  int for = 42;
+      ^^^
+
+parser/error_recovery/reserved_words_class_fields:17:11: Operator declarations must be preceded by the keyword 'operator'.
+  int for = 42;
+          ^
+
+parser/error_recovery/reserved_words_class_fields:17:11: The string '=' isn't a user-definable operator.
+  int for = 42;
+          ^
+
+parser/error_recovery/reserved_words_class_fields:17:11: A method declaration needs an explicit list of parameters.
+  int for = 42;
+          ^
+
+parser/error_recovery/reserved_words_class_fields:17:13: Expected a function body, but got '42'.
+  int for = 42;
+            ^^
+
+parser/error_recovery/reserved_words_class_fields:17:13: Expected a class member, but got '42'.
+  int for = 42;
+            ^^
+
+parser/error_recovery/reserved_words_class_fields:17:15: Expected a class member, but got ';'.
+  int for = 42;
+              ^
+
+parser/error_recovery/reserved_words_class_fields:18:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int if = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:18:3: Expected ';' after this.
+  int if = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:18:7: Expected a class member, but got 'if'.
+  int if = 42;
+      ^^
+
+parser/error_recovery/reserved_words_class_fields:18:10: Operator declarations must be preceded by the keyword 'operator'.
+  int if = 42;
+         ^
+
+parser/error_recovery/reserved_words_class_fields:18:10: The string '=' isn't a user-definable operator.
+  int if = 42;
+         ^
+
+parser/error_recovery/reserved_words_class_fields:18:10: A method declaration needs an explicit list of parameters.
+  int if = 42;
+         ^
+
+parser/error_recovery/reserved_words_class_fields:18:12: Expected a function body, but got '42'.
+  int if = 42;
+           ^^
+
+parser/error_recovery/reserved_words_class_fields:18:12: Expected a class member, but got '42'.
+  int if = 42;
+           ^^
+
+parser/error_recovery/reserved_words_class_fields:18:14: Expected a class member, but got ';'.
+  int if = 42;
+             ^
+
+parser/error_recovery/reserved_words_class_fields:19:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int in = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:19:3: Expected ';' after this.
+  int in = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:19:7: Expected a class member, but got 'in'.
+  int in = 42;
+      ^^
+
+parser/error_recovery/reserved_words_class_fields:19:10: Operator declarations must be preceded by the keyword 'operator'.
+  int in = 42;
+         ^
+
+parser/error_recovery/reserved_words_class_fields:19:10: The string '=' isn't a user-definable operator.
+  int in = 42;
+         ^
+
+parser/error_recovery/reserved_words_class_fields:19:10: A method declaration needs an explicit list of parameters.
+  int in = 42;
+         ^
+
+parser/error_recovery/reserved_words_class_fields:19:12: Expected a function body, but got '42'.
+  int in = 42;
+           ^^
+
+parser/error_recovery/reserved_words_class_fields:19:12: Expected a class member, but got '42'.
+  int in = 42;
+           ^^
+
+parser/error_recovery/reserved_words_class_fields:19:14: Expected a class member, but got ';'.
+  int in = 42;
+             ^
+
+parser/error_recovery/reserved_words_class_fields:20:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int is = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:20:3: Expected ';' after this.
+  int is = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:20:7: Expected a class member, but got 'is'.
+  int is = 42;
+      ^^
+
+parser/error_recovery/reserved_words_class_fields:20:10: Operator declarations must be preceded by the keyword 'operator'.
+  int is = 42;
+         ^
+
+parser/error_recovery/reserved_words_class_fields:20:10: The string '=' isn't a user-definable operator.
+  int is = 42;
+         ^
+
+parser/error_recovery/reserved_words_class_fields:20:10: A method declaration needs an explicit list of parameters.
+  int is = 42;
+         ^
+
+parser/error_recovery/reserved_words_class_fields:20:12: Expected a function body, but got '42'.
+  int is = 42;
+           ^^
+
+parser/error_recovery/reserved_words_class_fields:20:12: Expected a class member, but got '42'.
+  int is = 42;
+           ^^
+
+parser/error_recovery/reserved_words_class_fields:20:14: Expected a class member, but got ';'.
+  int is = 42;
+             ^
+
+parser/error_recovery/reserved_words_class_fields:21:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int new = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:21:3: Expected ';' after this.
+  int new = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:21:7: Expected a class member, but got 'new'.
+  int new = 42;
+      ^^^
+
+parser/error_recovery/reserved_words_class_fields:21:11: Operator declarations must be preceded by the keyword 'operator'.
+  int new = 42;
+          ^
+
+parser/error_recovery/reserved_words_class_fields:21:11: The string '=' isn't a user-definable operator.
+  int new = 42;
+          ^
+
+parser/error_recovery/reserved_words_class_fields:21:11: A method declaration needs an explicit list of parameters.
+  int new = 42;
+          ^
+
+parser/error_recovery/reserved_words_class_fields:21:13: Expected a function body, but got '42'.
+  int new = 42;
+            ^^
+
+parser/error_recovery/reserved_words_class_fields:21:13: Expected a class member, but got '42'.
+  int new = 42;
+            ^^
+
+parser/error_recovery/reserved_words_class_fields:21:15: Expected a class member, but got ';'.
+  int new = 42;
+              ^
+
+parser/error_recovery/reserved_words_class_fields:22:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int null = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:22:3: Expected ';' after this.
+  int null = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:22:7: Expected a class member, but got 'null'.
+  int null = 42;
+      ^^^^
+
+parser/error_recovery/reserved_words_class_fields:22:12: Operator declarations must be preceded by the keyword 'operator'.
+  int null = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:22:12: The string '=' isn't a user-definable operator.
+  int null = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:22:12: A method declaration needs an explicit list of parameters.
+  int null = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:22:14: Expected a function body, but got '42'.
+  int null = 42;
+             ^^
+
+parser/error_recovery/reserved_words_class_fields:22:14: Expected a class member, but got '42'.
+  int null = 42;
+             ^^
+
+parser/error_recovery/reserved_words_class_fields:22:16: Expected a class member, but got ';'.
+  int null = 42;
+               ^
+
+parser/error_recovery/reserved_words_class_fields:23:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int rethrow = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:23:3: Expected ';' after this.
+  int rethrow = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:23:7: Expected a class member, but got 'rethrow'.
+  int rethrow = 42;
+      ^^^^^^^
+
+parser/error_recovery/reserved_words_class_fields:23:15: Operator declarations must be preceded by the keyword 'operator'.
+  int rethrow = 42;
+              ^
+
+parser/error_recovery/reserved_words_class_fields:23:15: The string '=' isn't a user-definable operator.
+  int rethrow = 42;
+              ^
+
+parser/error_recovery/reserved_words_class_fields:23:15: A method declaration needs an explicit list of parameters.
+  int rethrow = 42;
+              ^
+
+parser/error_recovery/reserved_words_class_fields:23:17: Expected a function body, but got '42'.
+  int rethrow = 42;
+                ^^
+
+parser/error_recovery/reserved_words_class_fields:23:17: Expected a class member, but got '42'.
+  int rethrow = 42;
+                ^^
+
+parser/error_recovery/reserved_words_class_fields:23:19: Expected a class member, but got ';'.
+  int rethrow = 42;
+                  ^
+
+parser/error_recovery/reserved_words_class_fields:24:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int return = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:24:3: Expected ';' after this.
+  int return = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:24:7: Expected a class member, but got 'return'.
+  int return = 42;
+      ^^^^^^
+
+parser/error_recovery/reserved_words_class_fields:24:14: Operator declarations must be preceded by the keyword 'operator'.
+  int return = 42;
+             ^
+
+parser/error_recovery/reserved_words_class_fields:24:14: The string '=' isn't a user-definable operator.
+  int return = 42;
+             ^
+
+parser/error_recovery/reserved_words_class_fields:24:14: A method declaration needs an explicit list of parameters.
+  int return = 42;
+             ^
+
+parser/error_recovery/reserved_words_class_fields:24:16: Expected a function body, but got '42'.
+  int return = 42;
+               ^^
+
+parser/error_recovery/reserved_words_class_fields:24:16: Expected a class member, but got '42'.
+  int return = 42;
+               ^^
+
+parser/error_recovery/reserved_words_class_fields:24:18: Expected a class member, but got ';'.
+  int return = 42;
+                 ^
+
+parser/error_recovery/reserved_words_class_fields:25:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int super = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:25:3: Expected ';' after this.
+  int super = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:25:7: Expected a class member, but got 'super'.
+  int super = 42;
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_fields:25:13: Operator declarations must be preceded by the keyword 'operator'.
+  int super = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:25:13: The string '=' isn't a user-definable operator.
+  int super = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:25:13: A method declaration needs an explicit list of parameters.
+  int super = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:25:15: Expected a function body, but got '42'.
+  int super = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:25:15: Expected a class member, but got '42'.
+  int super = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:25:17: Expected a class member, but got ';'.
+  int super = 42;
+                ^
+
+parser/error_recovery/reserved_words_class_fields:26:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int switch = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:26:3: Expected ';' after this.
+  int switch = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:26:7: Expected a class member, but got 'switch'.
+  int switch = 42;
+      ^^^^^^
+
+parser/error_recovery/reserved_words_class_fields:26:14: Operator declarations must be preceded by the keyword 'operator'.
+  int switch = 42;
+             ^
+
+parser/error_recovery/reserved_words_class_fields:26:14: The string '=' isn't a user-definable operator.
+  int switch = 42;
+             ^
+
+parser/error_recovery/reserved_words_class_fields:26:14: A method declaration needs an explicit list of parameters.
+  int switch = 42;
+             ^
+
+parser/error_recovery/reserved_words_class_fields:26:16: Expected a function body, but got '42'.
+  int switch = 42;
+               ^^
+
+parser/error_recovery/reserved_words_class_fields:26:16: Expected a class member, but got '42'.
+  int switch = 42;
+               ^^
+
+parser/error_recovery/reserved_words_class_fields:26:18: Expected a class member, but got ';'.
+  int switch = 42;
+                 ^
+
+parser/error_recovery/reserved_words_class_fields:27:7: Expected an identifier, but got 'this'.
+  int this = 42;
+      ^^^^
+
+parser/error_recovery/reserved_words_class_fields:28:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int throw = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:28:3: Expected ';' after this.
+  int throw = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:28:7: Expected a class member, but got 'throw'.
+  int throw = 42;
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_fields:28:13: Operator declarations must be preceded by the keyword 'operator'.
+  int throw = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:28:13: The string '=' isn't a user-definable operator.
+  int throw = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:28:13: A method declaration needs an explicit list of parameters.
+  int throw = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:28:15: Expected a function body, but got '42'.
+  int throw = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:28:15: Expected a class member, but got '42'.
+  int throw = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:28:17: Expected a class member, but got ';'.
+  int throw = 42;
+                ^
+
+parser/error_recovery/reserved_words_class_fields:29:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int true = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:29:3: Expected ';' after this.
+  int true = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:29:7: Expected a class member, but got 'true'.
+  int true = 42;
+      ^^^^
+
+parser/error_recovery/reserved_words_class_fields:29:12: Operator declarations must be preceded by the keyword 'operator'.
+  int true = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:29:12: The string '=' isn't a user-definable operator.
+  int true = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:29:12: A method declaration needs an explicit list of parameters.
+  int true = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:29:14: Expected a function body, but got '42'.
+  int true = 42;
+             ^^
+
+parser/error_recovery/reserved_words_class_fields:29:14: Expected a class member, but got '42'.
+  int true = 42;
+             ^^
+
+parser/error_recovery/reserved_words_class_fields:29:16: Expected a class member, but got ';'.
+  int true = 42;
+               ^
+
+parser/error_recovery/reserved_words_class_fields:30:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int try = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:30:3: Expected ';' after this.
+  int try = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:30:7: Expected a class member, but got 'try'.
+  int try = 42;
+      ^^^
+
+parser/error_recovery/reserved_words_class_fields:30:11: Operator declarations must be preceded by the keyword 'operator'.
+  int try = 42;
+          ^
+
+parser/error_recovery/reserved_words_class_fields:30:11: The string '=' isn't a user-definable operator.
+  int try = 42;
+          ^
+
+parser/error_recovery/reserved_words_class_fields:30:11: A method declaration needs an explicit list of parameters.
+  int try = 42;
+          ^
+
+parser/error_recovery/reserved_words_class_fields:30:13: Expected a function body, but got '42'.
+  int try = 42;
+            ^^
+
+parser/error_recovery/reserved_words_class_fields:30:13: Expected a class member, but got '42'.
+  int try = 42;
+            ^^
+
+parser/error_recovery/reserved_words_class_fields:30:15: Expected a class member, but got ';'.
+  int try = 42;
+              ^
+
+parser/error_recovery/reserved_words_class_fields:31:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int var = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:31:3: Expected ';' after this.
+  int var = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:31:11: Operator declarations must be preceded by the keyword 'operator'.
+  int var = 42;
+          ^
+
+parser/error_recovery/reserved_words_class_fields:31:7: The return type can't be 'var'.
+  int var = 42;
+      ^^^
+
+parser/error_recovery/reserved_words_class_fields:31:11: The string '=' isn't a user-definable operator.
+  int var = 42;
+          ^
+
+parser/error_recovery/reserved_words_class_fields:31:11: A method declaration needs an explicit list of parameters.
+  int var = 42;
+          ^
+
+parser/error_recovery/reserved_words_class_fields:31:13: Expected a function body, but got '42'.
+  int var = 42;
+            ^^
+
+parser/error_recovery/reserved_words_class_fields:31:13: Expected a class member, but got '42'.
+  int var = 42;
+            ^^
+
+parser/error_recovery/reserved_words_class_fields:31:15: Expected a class member, but got ';'.
+  int var = 42;
+              ^
+
+parser/error_recovery/reserved_words_class_fields:32:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int void = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:32:3: Expected ';' after this.
+  int void = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:32:12: Operator declarations must be preceded by the keyword 'operator'.
+  int void = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:32:12: The string '=' isn't a user-definable operator.
+  int void = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:32:12: A method declaration needs an explicit list of parameters.
+  int void = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:32:14: Expected a function body, but got '42'.
+  int void = 42;
+             ^^
+
+parser/error_recovery/reserved_words_class_fields:32:14: Expected a class member, but got '42'.
+  int void = 42;
+             ^^
+
+parser/error_recovery/reserved_words_class_fields:32:16: Expected a class member, but got ';'.
+  int void = 42;
+               ^
+
+parser/error_recovery/reserved_words_class_fields:33:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int while = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:33:3: Expected ';' after this.
+  int while = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:33:7: Expected a class member, but got 'while'.
+  int while = 42;
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_fields:33:13: Operator declarations must be preceded by the keyword 'operator'.
+  int while = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:33:13: The string '=' isn't a user-definable operator.
+  int while = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:33:13: A method declaration needs an explicit list of parameters.
+  int while = 42;
+            ^
+
+parser/error_recovery/reserved_words_class_fields:33:15: Expected a function body, but got '42'.
+  int while = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:33:15: Expected a class member, but got '42'.
+  int while = 42;
+              ^^
+
+parser/error_recovery/reserved_words_class_fields:33:17: Expected a class member, but got ';'.
+  int while = 42;
+                ^
+
+parser/error_recovery/reserved_words_class_fields:34:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int with = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:34:3: Expected ';' after this.
+  int with = 42;
+  ^^^
+
+parser/error_recovery/reserved_words_class_fields:34:7: Expected a class member, but got 'with'.
+  int with = 42;
+      ^^^^
+
+parser/error_recovery/reserved_words_class_fields:34:12: Operator declarations must be preceded by the keyword 'operator'.
+  int with = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:34:12: The string '=' isn't a user-definable operator.
+  int with = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:34:12: A method declaration needs an explicit list of parameters.
+  int with = 42;
+           ^
+
+parser/error_recovery/reserved_words_class_fields:34:14: Expected a function body, but got '42'.
+  int with = 42;
+             ^^
+
+parser/error_recovery/reserved_words_class_fields:34:14: Expected a class member, but got '42'.
+  int with = 42;
+             ^^
+
+parser/error_recovery/reserved_words_class_fields:34:16: Expected a class member, but got ';'.
+  int with = 42;
+               ^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(WrapperClass, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, WrapperClass)
+      handleNoType(WrapperClass)
+      handleClassExtends(null)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          handleRecoverableError(MissingConstFinalVarOrType, int, int)
+          handleNoType({)
+          handleIdentifier(int, fieldDeclaration)
+          handleNoFieldInitializer(assert)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+        endClassFields(null, null, null, null, 1, int, ;)
+      endMember()
+      beginMetadataStar(assert)
+      endMetadataStar(0)
+      beginMember()
+        handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'assert'., null, {token: assert}], assert, assert)
+        handleInvalidMember(assert)
+      endMember()
+      beginMetadataStar(=)
+      endMetadataStar(0)
+      beginMember()
+        handleRecoverableError(MissingOperatorKeyword, =, =)
+        beginMethod(null, null, null, null, null, operator)
+          handleNoType(assert)
+          handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+          handleInvalidOperatorName(operator, =)
+          handleNoTypeVariables(42)
+          handleRecoverableError(MissingMethodParameters, =, =)
+          beginFormalParameters((, MemberKind.NonStaticMethod)
+          endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+          handleNoInitializers()
+          handleAsyncModifier(null, null)
+          handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+          handleInvalidFunctionBody({)
+        endClassMethod(null, operator, (, null, })
+      endMember()
+      beginMetadataStar(42)
+      endMetadataStar(0)
+      beginMember()
+        handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+        handleInvalidMember(42)
+      endMember()
+      beginMetadataStar(;)
+      endMetadataStar(0)
+      beginMember()
+        handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+        handleInvalidMember(;)
+      endMember()
+      beginMetadataStar(int)
+      endMetadataStar(0)
+      beginMember()
+        handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        handleNoType(;)
+        handleIdentifier(int, fieldDeclaration)
+        handleNoFieldInitializer(break)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+      endClassFields(null, null, null, null, 1, int, ;)
+    endMember()
+    beginMetadataStar(break)
+    endMetadataStar(0)
+    beginMember()
+      handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'break'., null, {token: break}], break, break)
+      handleInvalidMember(break)
+    endMember()
+    beginMetadataStar(=)
+    endMetadataStar(0)
+    beginMember()
+      handleRecoverableError(MissingOperatorKeyword, =, =)
+      beginMethod(null, null, null, null, null, operator)
+        handleNoType(break)
+        handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+        handleInvalidOperatorName(operator, =)
+        handleNoTypeVariables(42)
+        handleRecoverableError(MissingMethodParameters, =, =)
+        beginFormalParameters((, MemberKind.NonStaticMethod)
+        endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+        handleNoInitializers()
+        handleAsyncModifier(null, null)
+        handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+        handleInvalidFunctionBody({)
+      endClassMethod(null, operator, (, null, })
+    endMember()
+    beginMetadataStar(42)
+    endMetadataStar(0)
+    beginMember()
+      handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+      handleInvalidMember(42)
+    endMember()
+    beginMetadataStar(;)
+    endMetadataStar(0)
+    beginMember()
+      handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+      handleInvalidMember(;)
+    endMember()
+    beginMetadataStar(int)
+    endMetadataStar(0)
+    beginMember()
+      handleRecoverableError(MissingConstFinalVarOrType, int, int)
+      handleNoType(;)
+      handleIdentifier(int, fieldDeclaration)
+      handleNoFieldInitializer(case)
+      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+    endClassFields(null, null, null, null, 1, int, ;)
+  endMember()
+  beginMetadataStar(case)
+  endMetadataStar(0)
+  beginMember()
+    handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'case'., null, {token: case}], case, case)
+    handleInvalidMember(case)
+  endMember()
+  beginMetadataStar(=)
+  endMetadataStar(0)
+  beginMember()
+    handleRecoverableError(MissingOperatorKeyword, =, =)
+    beginMethod(null, null, null, null, null, operator)
+      handleNoType(case)
+      handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+      handleInvalidOperatorName(operator, =)
+      handleNoTypeVariables(42)
+      handleRecoverableError(MissingMethodParameters, =, =)
+      beginFormalParameters((, MemberKind.NonStaticMethod)
+      endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+      handleNoInitializers()
+      handleAsyncModifier(null, null)
+      handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+      handleInvalidFunctionBody({)
+    endClassMethod(null, operator, (, null, })
+  endMember()
+  beginMetadataStar(42)
+  endMetadataStar(0)
+  beginMember()
+    handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+    handleInvalidMember(42)
+  endMember()
+  beginMetadataStar(;)
+  endMetadataStar(0)
+  beginMember()
+    handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+    handleInvalidMember(;)
+  endMember()
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginMember()
+    handleRecoverableError(MissingConstFinalVarOrType, int, int)
+    handleNoType(;)
+    handleIdentifier(int, fieldDeclaration)
+    handleNoFieldInitializer(catch)
+    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+  endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(catch)
+endMetadataStar(0)
+beginMember()
+  handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'catch'., null, {token: catch}], catch, catch)
+  handleInvalidMember(catch)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+  handleRecoverableError(MissingOperatorKeyword, =, =)
+  beginMethod(null, null, null, null, null, operator)
+    handleNoType(catch)
+    handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+    handleInvalidOperatorName(operator, =)
+    handleNoTypeVariables(42)
+    handleRecoverableError(MissingMethodParameters, =, =)
+    beginFormalParameters((, MemberKind.NonStaticMethod)
+    endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+    handleNoInitializers()
+    handleAsyncModifier(null, null)
+    handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+    handleInvalidFunctionBody({)
+  endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+  handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+  handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+  handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+  handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+  handleRecoverableError(MissingConstFinalVarOrType, int, int)
+  handleNoType(;)
+  handleIdentifier(int, fieldDeclaration)
+  handleNoFieldInitializer(class)
+  handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(class)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(ClassInClass, class, class)
+handleInvalidMember(class)
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+  handleRecoverableError(MissingOperatorKeyword, =, =)
+  beginMethod(null, null, null, null, null, operator)
+    handleNoType(class)
+    handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+    handleInvalidOperatorName(operator, =)
+    handleNoTypeVariables(42)
+    handleRecoverableError(MissingMethodParameters, =, =)
+    beginFormalParameters((, MemberKind.NonStaticMethod)
+    endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+    handleNoInitializers()
+    handleAsyncModifier(null, null)
+    handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+    handleInvalidFunctionBody({)
+  endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+  handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+  handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+  handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+  handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+  handleRecoverableError(MissingConstFinalVarOrType, int, int)
+  handleNoType(;)
+  handleIdentifier(int, fieldDeclaration)
+  handleNoFieldInitializer(const)
+  handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(const)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, const, null, operator)
+  handleNoType(const)
+  handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+  handleInvalidOperatorName(operator, =)
+  handleNoTypeVariables(42)
+  handleRecoverableError(MissingMethodParameters, =, =)
+  beginFormalParameters((, MemberKind.NonStaticMethod)
+  endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+  handleNoInitializers()
+  handleAsyncModifier(null, null)
+  handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+  handleInvalidFunctionBody({)
+  handleRecoverableError(ConstMethod, const, const)
+endClassMethod(null, const, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(continue)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(continue)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'continue'., null, {token: continue}], continue, continue)
+handleInvalidMember(continue)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(continue)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(default)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(default)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'default'., null, {token: default}], default, default)
+handleInvalidMember(default)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(default)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(do)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(do)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'do'., null, {token: do}], do, do)
+handleInvalidMember(do)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(do)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(else)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(else)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'else'., null, {token: else}], else, else)
+handleInvalidMember(else)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(else)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(enum)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(enum)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(EnumInClass, enum, enum)
+handleInvalidMember(enum)
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(enum)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(extends)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(extends)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'extends'., null, {token: extends}], extends, extends)
+handleInvalidMember(extends)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(extends)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(false)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(false)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'false'., null, {token: false}], false, false)
+handleInvalidMember(false)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(false)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(final)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(final)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'final' here., Try removing 'final'., {token: final}], final, final)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(final)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, final, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(finally)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(finally)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'finally'., null, {token: finally}], finally, finally)
+handleInvalidMember(finally)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(finally)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(for)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(for)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'for'., null, {token: for}], for, for)
+handleInvalidMember(for)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(for)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(if)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(if)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'if'., null, {token: if}], if, if)
+handleInvalidMember(if)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(if)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(in)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(in)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'in'., null, {token: in}], in, in)
+handleInvalidMember(in)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(in)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(is)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(is)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'is'., null, {token: is}], is, is)
+handleInvalidMember(is)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(is)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(new)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(new)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'new'., null, {token: new}], new, new)
+handleInvalidMember(new)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(new)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(null)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(null)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'null'., null, {token: null}], null, null)
+handleInvalidMember(null)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(null)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(rethrow)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(rethrow)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+handleInvalidMember(rethrow)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(rethrow)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(return)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(return)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'return'., null, {token: return}], return, return)
+handleInvalidMember(return)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(return)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(super)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(super)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'super'., null, {token: super}], super, super)
+handleInvalidMember(super)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(super)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(switch)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(switch)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'switch'., null, {token: switch}], switch, switch)
+handleInvalidMember(switch)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(switch)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(this)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
+handleIdentifier(this, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(throw)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(throw)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'throw'., null, {token: throw}], throw, throw)
+handleInvalidMember(throw)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(throw)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(true)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(true)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'true'., null, {token: true}], true, true)
+handleInvalidMember(true)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(true)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(try)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(try)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'try'., null, {token: try}], try, try)
+handleInvalidMember(try)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(try)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(var)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(var)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+handleRecoverableError(VarReturnType, var, var)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(var)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, var, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(void)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(void)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleVoidKeyword(void)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, void, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(while)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(while)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'while'., null, {token: while}], while, while)
+handleInvalidMember(while)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(while)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(;)
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(with)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(with)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
+handleInvalidMember(with)
+endMember()
+beginMetadataStar(=)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingOperatorKeyword, =, =)
+beginMethod(null, null, null, null, null, operator)
+handleNoType(with)
+handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+handleInvalidOperatorName(operator, =)
+handleNoTypeVariables(42)
+handleRecoverableError(MissingMethodParameters, =, =)
+beginFormalParameters((, MemberKind.NonStaticMethod)
+endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidFunctionBody({)
+endClassMethod(null, operator, (, null, })
+endMember()
+beginMetadataStar(42)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+handleInvalidMember(42)
+endMember()
+beginMetadataStar(;)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+handleInvalidMember(;)
+endMember()
+endClassOrMixinBody(DeclarationKind.Class, 157, {, })
+endClassDeclaration(class, })
+endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.intertwined.expect
new file mode 100644
index 0000000..3cd1733
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.intertwined.expect
@@ -0,0 +1,3158 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(WrapperClass, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, WrapperClass)
+        parseClass(WrapperClass, class, class, WrapperClass)
+          parseClassHeaderOpt(WrapperClass, class, class)
+            parseClassExtendsOpt(WrapperClass)
+              listener: handleNoType(WrapperClass)
+              listener: handleClassExtends(null)
+            parseWithClauseOpt(WrapperClass)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(WrapperClass)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(WrapperClass, DeclarationKind.Class, WrapperClass)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar({)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, {, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType({)
+                ensureIdentifier({, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(assert)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, assert)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(assert)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(assert, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'assert'., null, {token: assert}], assert, assert)
+                listener: handleInvalidMember(assert)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(assert, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(assert)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(assert, assert, null, null, null, null, null, assert, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(assert, null, null, null, null, null, assert, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(assert, null, null, null, null, null, assert, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(assert)
+                    parseOperatorName(assert)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(break)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, break)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(break)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'break'., null, {token: break}], break, break)
+                listener: handleInvalidMember(break)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(break, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(break)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(break, break, null, null, null, null, null, break, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(break, null, null, null, null, null, break, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(break, null, null, null, null, null, break, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(break)
+                    parseOperatorName(break)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(case)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, case)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(case)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'case'., null, {token: case}], case, case)
+                listener: handleInvalidMember(case)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(case, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(case)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(case, case, null, null, null, null, null, case, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(case, null, null, null, null, null, case, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(case, null, null, null, null, null, case, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(case)
+                    parseOperatorName(case)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(catch)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, catch)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(catch)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'catch'., null, {token: catch}], catch, catch)
+                listener: handleInvalidMember(catch)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(catch, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(catch)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(catch, catch, null, null, null, null, null, catch, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(catch, null, null, null, null, null, catch, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(catch, null, null, null, null, null, catch, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(catch)
+                    parseOperatorName(catch)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(class)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, class)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(class)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportAndSkipClassInClass(class)
+                  reportRecoverableError(class, ClassInClass)
+                    listener: handleRecoverableError(ClassInClass, class, class)
+                  listener: handleInvalidMember(class)
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(class, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(class)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(class, class, null, null, null, null, null, class, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(class, null, null, null, null, null, class, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(class, null, null, null, null, null, class, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(class)
+                    parseOperatorName(class)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(const)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, const)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(const)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(const, ;, null, null, null, null, const, const, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(;, null, null, null, null, const, const, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(;, null, null, null, null, const, const, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, const, null, operator)
+                    listener: handleNoType(const)
+                    parseOperatorName(const)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    reportRecoverableError(const, ConstMethod)
+                      listener: handleRecoverableError(ConstMethod, const, const)
+                    listener: endClassMethod(null, const, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(continue)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, continue)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(continue)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'continue'., null, {token: continue}], continue, continue)
+                listener: handleInvalidMember(continue)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(continue, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(continue)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(continue, continue, null, null, null, null, null, continue, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(continue, null, null, null, null, null, continue, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(continue, null, null, null, null, null, continue, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(continue)
+                    parseOperatorName(continue)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(default)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, default)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(default)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'default'., null, {token: default}], default, default)
+                listener: handleInvalidMember(default)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(default, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(default)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(default, default, null, null, null, null, null, default, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(default, null, null, null, null, null, default, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(default, null, null, null, null, null, default, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(default)
+                    parseOperatorName(default)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(do)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, do)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(do)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'do'., null, {token: do}], do, do)
+                listener: handleInvalidMember(do)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(do, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(do)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(do, do, null, null, null, null, null, do, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(do, null, null, null, null, null, do, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(do, null, null, null, null, null, do, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(do)
+                    parseOperatorName(do)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(else)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, else)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(else)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'else'., null, {token: else}], else, else)
+                listener: handleInvalidMember(else)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(else, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(else)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(else, else, null, null, null, null, null, else, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(else, null, null, null, null, null, else, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(else, null, null, null, null, null, else, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(else)
+                    parseOperatorName(else)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(enum)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, enum)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(enum)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportAndSkipEnumInClass(enum)
+                  reportRecoverableError(enum, EnumInClass)
+                    listener: handleRecoverableError(EnumInClass, enum, enum)
+                  listener: handleInvalidMember(enum)
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(enum, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(enum)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(enum, enum, null, null, null, null, null, enum, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(enum, null, null, null, null, null, enum, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(enum, null, null, null, null, null, enum, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(enum)
+                    parseOperatorName(enum)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(extends)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, extends)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(extends)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'extends'., null, {token: extends}], extends, extends)
+                listener: handleInvalidMember(extends)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(extends, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(extends)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(extends, extends, null, null, null, null, null, extends, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(extends, null, null, null, null, null, extends, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(extends, null, null, null, null, null, extends, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(extends)
+                    parseOperatorName(extends)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(false)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, false)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(false)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(false, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'false'., null, {token: false}], false, false)
+                listener: handleInvalidMember(false)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(false, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(false)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(false, false, null, null, null, null, null, false, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(false, null, null, null, null, null, false, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(false, null, null, null, null, null, false, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(false)
+                    parseOperatorName(false)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(final)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(final, ;, null, null, null, null, final, final, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(;, null, null, null, null, final, final, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(;, null, null, null, null, final, final, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
+                      listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'final' here., Try removing 'final'., {token: final}], final, final)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(final)
+                    parseOperatorName(final)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, final, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(finally)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, finally)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(finally)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'finally'., null, {token: finally}], finally, finally)
+                listener: handleInvalidMember(finally)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(finally, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(finally)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(finally, finally, null, null, null, null, null, finally, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(finally, null, null, null, null, null, finally, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(finally, null, null, null, null, null, finally, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(finally)
+                    parseOperatorName(finally)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(for)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, for)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(for)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'for'., null, {token: for}], for, for)
+                listener: handleInvalidMember(for)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(for, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(for)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(for, for, null, null, null, null, null, for, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(for, null, null, null, null, null, for, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(for, null, null, null, null, null, for, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(for)
+                    parseOperatorName(for)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(if)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, if)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(if)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'if'., null, {token: if}], if, if)
+                listener: handleInvalidMember(if)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(if, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(if)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(if, if, null, null, null, null, null, if, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(if, null, null, null, null, null, if, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(if, null, null, null, null, null, if, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(if)
+                    parseOperatorName(if)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(in)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, in)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(in)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'in'., null, {token: in}], in, in)
+                listener: handleInvalidMember(in)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(in, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(in)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(in, in, null, null, null, null, null, in, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(in, null, null, null, null, null, in, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(in, null, null, null, null, null, in, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(in)
+                    parseOperatorName(in)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(is)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, is)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(is)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'is'., null, {token: is}], is, is)
+                listener: handleInvalidMember(is)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(is, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(is)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(is, is, null, null, null, null, null, is, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(is, null, null, null, null, null, is, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(is, null, null, null, null, null, is, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(is)
+                    parseOperatorName(is)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(new)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, new)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(new)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'new'., null, {token: new}], new, new)
+                listener: handleInvalidMember(new)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(new, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(new)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(new, new, null, null, null, null, null, new, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(new, null, null, null, null, null, new, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(new, null, null, null, null, null, new, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(new)
+                    parseOperatorName(new)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(null)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, null)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(null)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(null, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'null'., null, {token: null}], null, null)
+                listener: handleInvalidMember(null)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(null, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(null)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(null, null, null, null, null, null, null, null, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(null, null, null, null, null, null, null, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(null, null, null, null, null, null, null, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(null)
+                    parseOperatorName(null)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(rethrow)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, rethrow)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(rethrow)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+                listener: handleInvalidMember(rethrow)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(rethrow, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(rethrow)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(rethrow, rethrow, null, null, null, null, null, rethrow, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(rethrow, null, null, null, null, null, rethrow, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(rethrow, null, null, null, null, null, rethrow, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(rethrow)
+                    parseOperatorName(rethrow)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(return)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, return)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(return)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'return'., null, {token: return}], return, return)
+                listener: handleInvalidMember(return)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(return, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(return)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(return, return, null, null, null, null, null, return, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(return, null, null, null, null, null, return, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(return, null, null, null, null, null, return, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(return)
+                    parseOperatorName(return)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(super)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, super)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(super)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'super'., null, {token: super}], super, super)
+                listener: handleInvalidMember(super)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(super, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(super)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(super, super, null, null, null, null, null, super, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(super, null, null, null, null, null, super, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(super, null, null, null, null, null, super, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(super)
+                    parseOperatorName(super)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(switch)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, switch)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(switch)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'switch'., null, {token: switch}], switch, switch)
+                listener: handleInvalidMember(switch)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(switch, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(switch)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(switch, switch, null, null, null, null, null, switch, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(switch, null, null, null, null, null, switch, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(switch, null, null, null, null, null, switch, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(switch)
+                    parseOperatorName(switch)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(int, ;, null, null, null, null, null, ;, Instance of 'SimpleType', null, DeclarationKind.Class, WrapperClass)
+                parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', this, DeclarationKind.Class, WrapperClass)
+                  listener: handleIdentifier(int, typeReference)
+                  listener: handleNoTypeArguments(this)
+                  listener: handleType(int, null)
+                  ensureIdentifier(int, fieldDeclaration)
+                    reportRecoverableErrorWithToken(this, Instance of 'Template<(Token) => Message>')
+                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
+                    listener: handleIdentifier(this, fieldDeclaration)
+                  parseFieldInitializerOpt(this, this, null, null, DeclarationKind.Class, WrapperClass)
+                    listener: beginFieldInitializer(=)
+                    parseExpression(=)
+                      parsePrecedenceExpression(=, 1, true)
+                        parseUnaryExpression(=, true)
+                          parsePrimary(=, expression)
+                            parseLiteralInt(=)
+                              listener: handleLiteralInt(42)
+                    listener: endFieldInitializer(=, ;)
+                  listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(throw)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, throw)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(throw)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(throw, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'throw'., null, {token: throw}], throw, throw)
+                listener: handleInvalidMember(throw)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(throw, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(throw)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(throw, throw, null, null, null, null, null, throw, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(throw, null, null, null, null, null, throw, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(throw, null, null, null, null, null, throw, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(throw)
+                    parseOperatorName(throw)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(true)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, true)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(true)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(true, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'true'., null, {token: true}], true, true)
+                listener: handleInvalidMember(true)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(true, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(true)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(true, true, null, null, null, null, null, true, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(true, null, null, null, null, null, true, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(true, null, null, null, null, null, true, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(true)
+                    parseOperatorName(true)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(try)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, try)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(try)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'try'., null, {token: try}], try, try)
+                listener: handleInvalidMember(try)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(try, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(try)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(try, try, null, null, null, null, null, try, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(try, null, null, null, null, null, try, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(try, null, null, null, null, null, try, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(try)
+                    parseOperatorName(try)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(var)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, var)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(var)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(var, ;, null, null, null, null, var, var, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(;, null, null, null, null, var, var, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(;, null, null, null, null, var, var, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    reportRecoverableError(var, VarReturnType)
+                      listener: handleRecoverableError(VarReturnType, var, var)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(var)
+                    parseOperatorName(var)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, var, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(void)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, void)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(void)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(void, ;, null, null, null, null, null, ;, Instance of 'VoidType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(;, null, null, null, null, null, ;, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(;, null, null, null, null, null, ;, Instance of 'VoidType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleVoidKeyword(void)
+                    parseOperatorName(void)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, void, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(while)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, while)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(while)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'while'., null, {token: while}], while, while)
+                listener: handleInvalidMember(while)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(while, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(while)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(while, while, null, null, null, null, null, while, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(while, null, null, null, null, null, while, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(while, null, null, null, null, null, while, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(while)
+                    parseOperatorName(while)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(;)
+                ensureIdentifier(;, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(with)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, with)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(with)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
+                listener: handleInvalidMember(with)
+                listener: endMember()
+            notEofOrValue(}, =)
+            parseClassOrMixinOrExtensionMemberImpl(with, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(with)
+                listener: beginMetadataStar(=)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(with, with, null, null, null, null, null, with, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseInvalidOperatorDeclaration(with, null, null, null, null, null, with, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(=, MissingOperatorKeyword)
+                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
+                  rewriter()
+                  parseMethod(with, null, null, null, null, null, with, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
+                    listener: beginMethod(null, null, null, null, null, operator)
+                    listener: handleNoType(with)
+                    parseOperatorName(with)
+                      isUnaryMinus(=)
+                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
+                      listener: handleInvalidOperatorName(operator, =)
+                    parseMethodTypeVar(=)
+                      listener: handleNoTypeVariables(42)
+                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
+                      missingParameterMessage(MemberKind.NonStaticMethod)
+                      reportRecoverableError(=, MissingMethodParameters)
+                        listener: handleRecoverableError(MissingMethodParameters, =, =)
+                      rewriter()
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                    parseInitializersOpt())
+                      listener: handleNoInitializers()
+                    parseAsyncModifierOpt())
+                      listener: handleAsyncModifier(null, null)
+                      inPlainSync()
+                    inPlainSync()
+                    parseFunctionBody(), false, true)
+                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
+                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
+                        insertBlock())
+                          rewriter()
+                          rewriter()
+                      listener: handleInvalidFunctionBody({)
+                    listener: endClassMethod(null, operator, (, null, })
+                  listener: endMember()
+            notEofOrValue(}, 42)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(42)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
+                listener: handleInvalidMember(42)
+                listener: endMember()
+            notEofOrValue(}, ;)
+            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(42)
+                listener: beginMetadataStar(;)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
+                listener: handleInvalidMember(;)
+                listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 157, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.parser.expect
new file mode 100644
index 0000000..0ed105a
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.parser.expect
@@ -0,0 +1,73 @@
+NOTICE: Stream was rewritten by parser!
+
+class WrapperClass {
+int ;assert operator= (){}42;
+int ;break operator= (){}42;
+int ;case operator= (){}42;
+int ;catch operator= (){}42;
+int ;class operator= (){}42;
+int ;const operator= (){}42;
+int ;continue operator= (){}42;
+int ;default operator= (){}42;
+int ;do operator= (){}42;
+int ;else operator= (){}42;
+int ;enum operator= (){}42;
+int ;extends operator= (){}42;
+int ;false operator= (){}42;
+int ;final operator= (){}42;
+int ;finally operator= (){}42;
+int ;for operator= (){}42;
+int ;if operator= (){}42;
+int ;in operator= (){}42;
+int ;is operator= (){}42;
+int ;new operator= (){}42;
+int ;null operator= (){}42;
+int ;rethrow operator= (){}42;
+int ;return operator= (){}42;
+int ;super operator= (){}42;
+int ;switch operator= (){}42;
+int this = 42;
+int ;throw operator= (){}42;
+int ;true operator= (){}42;
+int ;try operator= (){}42;
+int ;var operator= (){}42;
+int ;void operator= (){}42;
+int ;while operator= (){}42;
+int ;with operator= (){}42;
+}
+
+class[KeywordToken] WrapperClass[StringToken] {[BeginToken]
+int[StringToken] ;[SyntheticToken]assert[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]break[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]case[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]catch[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]class[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]const[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]continue[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]default[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]do[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]else[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]enum[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]extends[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]false[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]final[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]finally[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]for[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]if[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]in[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]is[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]new[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]null[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]rethrow[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]return[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]super[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]switch[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] this[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]throw[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]true[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]try[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]var[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]void[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]while[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] ;[SyntheticToken]with[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.scanner.expect
new file mode 100644
index 0000000..99a26c4
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.scanner.expect
@@ -0,0 +1,71 @@
+class WrapperClass {
+int assert = 42;
+int break = 42;
+int case = 42;
+int catch = 42;
+int class = 42;
+int const = 42;
+int continue = 42;
+int default = 42;
+int do = 42;
+int else = 42;
+int enum = 42;
+int extends = 42;
+int false = 42;
+int final = 42;
+int finally = 42;
+int for = 42;
+int if = 42;
+int in = 42;
+int is = 42;
+int new = 42;
+int null = 42;
+int rethrow = 42;
+int return = 42;
+int super = 42;
+int switch = 42;
+int this = 42;
+int throw = 42;
+int true = 42;
+int try = 42;
+int var = 42;
+int void = 42;
+int while = 42;
+int with = 42;
+}
+
+class[KeywordToken] WrapperClass[StringToken] {[BeginToken]
+int[StringToken] assert[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] break[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] case[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] catch[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] class[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] const[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] continue[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] default[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] do[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] else[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] enum[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] extends[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] false[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] final[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] finally[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] for[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] if[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] in[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] is[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] new[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] null[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] rethrow[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] return[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] super[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] switch[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] this[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] throw[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] true[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] try[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] var[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] void[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] while[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] with[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart
new file mode 100644
index 0000000..0ee7ab3
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart
@@ -0,0 +1,166 @@
+class WrapperClass {
+  int assert(int x) {
+    if (x == 0) return 42;
+    return assert(x-1) + 1;
+  }
+
+  int break(int x) {
+    if (x == 0) return 42;
+    return break(x-1) + 1;
+  }
+
+  int case(int x) {
+    if (x == 0) return 42;
+    return case(x-1) + 1;
+  }
+
+  int catch(int x) {
+    if (x == 0) return 42;
+    return catch(x-1) + 1;
+  }
+
+  int class(int x) {
+    if (x == 0) return 42;
+    return class(x-1) + 1;
+  }
+
+  int const(int x) {
+    if (x == 0) return 42;
+    return const(x-1) + 1;
+  }
+
+  int continue(int x) {
+    if (x == 0) return 42;
+    return continue(x-1) + 1;
+  }
+
+  int default(int x) {
+    if (x == 0) return 42;
+    return default(x-1) + 1;
+  }
+
+  int do(int x) {
+    if (x == 0) return 42;
+    return do(x-1) + 1;
+  }
+
+  int else(int x) {
+    if (x == 0) return 42;
+    return else(x-1) + 1;
+  }
+
+  int enum(int x) {
+    if (x == 0) return 42;
+    return enum(x-1) + 1;
+  }
+
+  int extends(int x) {
+    if (x == 0) return 42;
+    return extends(x-1) + 1;
+  }
+
+  int false(int x) {
+    if (x == 0) return 42;
+    return false(x-1) + 1;
+  }
+
+  int final(int x) {
+    if (x == 0) return 42;
+    return final(x-1) + 1;
+  }
+
+  int finally(int x) {
+    if (x == 0) return 42;
+    return finally(x-1) + 1;
+  }
+
+  int for(int x) {
+    if (x == 0) return 42;
+    return for(x-1) + 1;
+  }
+
+  int if(int x) {
+    if (x == 0) return 42;
+    return if(x-1) + 1;
+  }
+
+  int in(int x) {
+    if (x == 0) return 42;
+    return in(x-1) + 1;
+  }
+
+  int is(int x) {
+    if (x == 0) return 42;
+    return is(x-1) + 1;
+  }
+
+  int new(int x) {
+    if (x == 0) return 42;
+    return new(x-1) + 1;
+  }
+
+  int null(int x) {
+    if (x == 0) return 42;
+    return null(x-1) + 1;
+  }
+
+  int rethrow(int x) {
+    if (x == 0) return 42;
+    return rethrow(x-1) + 1;
+  }
+
+  int return(int x) {
+    if (x == 0) return 42;
+    return return(x-1) + 1;
+  }
+
+  int super(int x) {
+    if (x == 0) return 42;
+    return super(x-1) + 1;
+  }
+
+  int switch(int x) {
+    if (x == 0) return 42;
+    return switch(x-1) + 1;
+  }
+
+  int this(int x) {
+    if (x == 0) return 42;
+    return this(x-1) + 1;
+  }
+
+  int throw(int x) {
+    if (x == 0) return 42;
+    return throw(x-1) + 1;
+  }
+
+  int true(int x) {
+    if (x == 0) return 42;
+    return true(x-1) + 1;
+  }
+
+  int try(int x) {
+    if (x == 0) return 42;
+    return try(x-1) + 1;
+  }
+
+  int var(int x) {
+    if (x == 0) return 42;
+    return var(x-1) + 1;
+  }
+
+  int void(int x) {
+    if (x == 0) return 42;
+    return void(x-1) + 1;
+  }
+
+  int while(int x) {
+    if (x == 0) return 42;
+    return while(x-1) + 1;
+  }
+
+  int with(int x) {
+    if (x == 0) return 42;
+    return with(x-1) + 1;
+  }
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.expect
new file mode 100644
index 0000000..adf4e0b
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.expect
@@ -0,0 +1,3465 @@
+Problems reported:
+
+parser/error_recovery/reserved_words_class_methods:2:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int assert(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:2:3: Expected ';' after this.
+  int assert(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:2:7: Expected a class member, but got 'assert'.
+  int assert(int x) {
+      ^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:2:13: Expected an identifier, but got '('.
+  int assert(int x) {
+            ^
+
+parser/error_recovery/reserved_words_class_methods:4:12: `assert` can't be used as an expression.
+    return assert(x-1) + 1;
+           ^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:7:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int break(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:7:3: Expected ';' after this.
+  int break(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:7:7: Expected a class member, but got 'break'.
+  int break(int x) {
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:7:12: Expected an identifier, but got '('.
+  int break(int x) {
+           ^
+
+parser/error_recovery/reserved_words_class_methods:9:12: Expected an identifier, but got 'break'.
+    return break(x-1) + 1;
+           ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:9:12: Expected ';' after this.
+    return break(x-1) + 1;
+           ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:9:12: A break statement can't be used outside of a loop or switch statement.
+    return break(x-1) + 1;
+           ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:9:12: Expected ';' after this.
+    return break(x-1) + 1;
+           ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:12:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int case(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:12:3: Expected ';' after this.
+  int case(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:12:7: Expected a class member, but got 'case'.
+  int case(int x) {
+      ^^^^
+
+parser/error_recovery/reserved_words_class_methods:12:11: Expected an identifier, but got '('.
+  int case(int x) {
+          ^
+
+parser/error_recovery/reserved_words_class_methods:14:12: Expected an identifier, but got 'case'.
+    return case(x-1) + 1;
+           ^^^^
+
+parser/error_recovery/reserved_words_class_methods:17:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int catch(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:17:3: Expected ';' after this.
+  int catch(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:17:7: Expected a class member, but got 'catch'.
+  int catch(int x) {
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:17:12: Expected an identifier, but got '('.
+  int catch(int x) {
+           ^
+
+parser/error_recovery/reserved_words_class_methods:19:12: Expected an identifier, but got 'catch'.
+    return catch(x-1) + 1;
+           ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:22:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int class(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:22:3: Expected ';' after this.
+  int class(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:22:7: Classes can't be declared inside other classes.
+  int class(int x) {
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:22:12: Expected an identifier, but got '('.
+  int class(int x) {
+           ^
+
+parser/error_recovery/reserved_words_class_methods:24:12: Expected an identifier, but got 'class'.
+    return class(x-1) + 1;
+           ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:27:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int const(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:27:3: Expected ';' after this.
+  int const(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:27:12: Expected an identifier, but got '('.
+  int const(int x) {
+           ^
+
+parser/error_recovery/reserved_words_class_methods:29:17: Expected an identifier, but got '('.
+    return const(x-1) + 1;
+                ^
+
+parser/error_recovery/reserved_words_class_methods:27:7: Getters, setters and methods can't be declared to be 'const'.
+  int const(int x) {
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:32:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int continue(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:32:3: Expected ';' after this.
+  int continue(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:32:7: Expected a class member, but got 'continue'.
+  int continue(int x) {
+      ^^^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:32:15: Expected an identifier, but got '('.
+  int continue(int x) {
+              ^
+
+parser/error_recovery/reserved_words_class_methods:34:12: Expected an identifier, but got 'continue'.
+    return continue(x-1) + 1;
+           ^^^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:34:12: Expected ';' after this.
+    return continue(x-1) + 1;
+           ^^^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:34:12: A continue statement can't be used outside of a loop or switch statement.
+    return continue(x-1) + 1;
+           ^^^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:34:12: Expected ';' after this.
+    return continue(x-1) + 1;
+           ^^^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:37:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int default(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:37:3: Expected ';' after this.
+  int default(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:37:7: Expected a class member, but got 'default'.
+  int default(int x) {
+      ^^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:37:14: Expected an identifier, but got '('.
+  int default(int x) {
+             ^
+
+parser/error_recovery/reserved_words_class_methods:39:12: Expected an identifier, but got 'default'.
+    return default(x-1) + 1;
+           ^^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:42:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int do(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:42:3: Expected ';' after this.
+  int do(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:42:7: Expected a class member, but got 'do'.
+  int do(int x) {
+      ^^
+
+parser/error_recovery/reserved_words_class_methods:42:9: Expected an identifier, but got '('.
+  int do(int x) {
+        ^
+
+parser/error_recovery/reserved_words_class_methods:44:12: Expected an identifier, but got 'do'.
+    return do(x-1) + 1;
+           ^^
+
+parser/error_recovery/reserved_words_class_methods:44:12: Expected ';' after this.
+    return do(x-1) + 1;
+           ^^
+
+parser/error_recovery/reserved_words_class_methods:45:3: Expected 'while' before this.
+  }
+  ^
+
+parser/error_recovery/reserved_words_class_methods:45:3: Expected to find '('.
+  }
+  ^
+
+parser/error_recovery/reserved_words_class_methods:45:3: Expected an identifier, but got '}'.
+  }
+  ^
+
+parser/error_recovery/reserved_words_class_methods:45:3: Expected ';' after this.
+  }
+  ^
+
+parser/error_recovery/reserved_words_class_methods:47:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int else(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:47:3: Expected ';' after this.
+  int else(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:47:7: Expected a class member, but got 'else'.
+  int else(int x) {
+      ^^^^
+
+parser/error_recovery/reserved_words_class_methods:47:11: Expected an identifier, but got '('.
+  int else(int x) {
+          ^
+
+parser/error_recovery/reserved_words_class_methods:49:12: Expected an identifier, but got 'else'.
+    return else(x-1) + 1;
+           ^^^^
+
+parser/error_recovery/reserved_words_class_methods:49:12: Expected ';' after this.
+    return else(x-1) + 1;
+           ^^^^
+
+parser/error_recovery/reserved_words_class_methods:49:12: Expected an identifier, but got 'else'.
+    return else(x-1) + 1;
+           ^^^^
+
+parser/error_recovery/reserved_words_class_methods:49:12: Expected ';' after this.
+    return else(x-1) + 1;
+           ^^^^
+
+parser/error_recovery/reserved_words_class_methods:49:12: Unexpected token ';'.
+    return else(x-1) + 1;
+           ^^^^
+
+parser/error_recovery/reserved_words_class_methods:52:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int enum(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:52:3: Expected ';' after this.
+  int enum(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:52:7: Enums can't be declared inside classes.
+  int enum(int x) {
+      ^^^^
+
+parser/error_recovery/reserved_words_class_methods:52:11: Expected an identifier, but got '('.
+  int enum(int x) {
+          ^
+
+parser/error_recovery/reserved_words_class_methods:54:12: Expected an identifier, but got 'enum'.
+    return enum(x-1) + 1;
+           ^^^^
+
+parser/error_recovery/reserved_words_class_methods:57:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int extends(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:57:3: Expected ';' after this.
+  int extends(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:57:7: Expected a class member, but got 'extends'.
+  int extends(int x) {
+      ^^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:57:14: Expected an identifier, but got '('.
+  int extends(int x) {
+             ^
+
+parser/error_recovery/reserved_words_class_methods:59:12: Expected an identifier, but got 'extends'.
+    return extends(x-1) + 1;
+           ^^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:62:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int false(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:62:3: Expected ';' after this.
+  int false(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:62:7: Expected a class member, but got 'false'.
+  int false(int x) {
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:62:12: Expected an identifier, but got '('.
+  int false(int x) {
+           ^
+
+parser/error_recovery/reserved_words_class_methods:67:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int final(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:67:3: Expected ';' after this.
+  int final(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:67:7: Can't have modifier 'final' here.
+  int final(int x) {
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:67:12: Expected an identifier, but got '('.
+  int final(int x) {
+           ^
+
+parser/error_recovery/reserved_words_class_methods:69:12: Expected an identifier, but got 'final'.
+    return final(x-1) + 1;
+           ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:69:12: Expected ';' after this.
+    return final(x-1) + 1;
+           ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:69:17: Expected an identifier, but got '('.
+    return final(x-1) + 1;
+                ^
+
+parser/error_recovery/reserved_words_class_methods:69:18: Expected ';' after this.
+    return final(x-1) + 1;
+                 ^
+
+parser/error_recovery/reserved_words_class_methods:69:20: Expected ';' after this.
+    return final(x-1) + 1;
+                   ^
+
+parser/error_recovery/reserved_words_class_methods:69:21: Expected an identifier, but got ')'.
+    return final(x-1) + 1;
+                    ^
+
+parser/error_recovery/reserved_words_class_methods:69:21: Expected ';' after this.
+    return final(x-1) + 1;
+                    ^
+
+parser/error_recovery/reserved_words_class_methods:69:21: Unexpected token ';'.
+    return final(x-1) + 1;
+                    ^
+
+parser/error_recovery/reserved_words_class_methods:69:23: '+' is not a prefix operator.
+    return final(x-1) + 1;
+                      ^
+
+parser/error_recovery/reserved_words_class_methods:72:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int finally(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:72:3: Expected ';' after this.
+  int finally(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:72:7: Expected a class member, but got 'finally'.
+  int finally(int x) {
+      ^^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:72:14: Expected an identifier, but got '('.
+  int finally(int x) {
+             ^
+
+parser/error_recovery/reserved_words_class_methods:74:12: Expected an identifier, but got 'finally'.
+    return finally(x-1) + 1;
+           ^^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:77:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int for(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:77:3: Expected ';' after this.
+  int for(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:77:7: Expected a class member, but got 'for'.
+  int for(int x) {
+      ^^^
+
+parser/error_recovery/reserved_words_class_methods:77:10: Expected an identifier, but got '('.
+  int for(int x) {
+         ^
+
+parser/error_recovery/reserved_words_class_methods:79:12: Expected an identifier, but got 'for'.
+    return for(x-1) + 1;
+           ^^^
+
+parser/error_recovery/reserved_words_class_methods:79:12: Expected ';' after this.
+    return for(x-1) + 1;
+           ^^^
+
+parser/error_recovery/reserved_words_class_methods:79:18: Expected ';' after this.
+    return for(x-1) + 1;
+                 ^
+
+parser/error_recovery/reserved_words_class_methods:79:19: Expected an identifier, but got ')'.
+    return for(x-1) + 1;
+                  ^
+
+parser/error_recovery/reserved_words_class_methods:79:19: Expected ';' after this.
+    return for(x-1) + 1;
+                  ^
+
+parser/error_recovery/reserved_words_class_methods:79:21: '+' is not a prefix operator.
+    return for(x-1) + 1;
+                    ^
+
+parser/error_recovery/reserved_words_class_methods:82:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int if(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:82:3: Expected ';' after this.
+  int if(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:82:7: Expected a class member, but got 'if'.
+  int if(int x) {
+      ^^
+
+parser/error_recovery/reserved_words_class_methods:82:9: Expected an identifier, but got '('.
+  int if(int x) {
+        ^
+
+parser/error_recovery/reserved_words_class_methods:84:12: Expected an identifier, but got 'if'.
+    return if(x-1) + 1;
+           ^^
+
+parser/error_recovery/reserved_words_class_methods:84:12: Expected ';' after this.
+    return if(x-1) + 1;
+           ^^
+
+parser/error_recovery/reserved_words_class_methods:84:20: '+' is not a prefix operator.
+    return if(x-1) + 1;
+                   ^
+
+parser/error_recovery/reserved_words_class_methods:87:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int in(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:87:3: Expected ';' after this.
+  int in(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:87:7: Expected a class member, but got 'in'.
+  int in(int x) {
+      ^^
+
+parser/error_recovery/reserved_words_class_methods:87:9: Expected an identifier, but got '('.
+  int in(int x) {
+        ^
+
+parser/error_recovery/reserved_words_class_methods:89:12: Expected an identifier, but got 'in'.
+    return in(x-1) + 1;
+           ^^
+
+parser/error_recovery/reserved_words_class_methods:92:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int is(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:92:3: Expected ';' after this.
+  int is(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:92:7: Expected a class member, but got 'is'.
+  int is(int x) {
+      ^^
+
+parser/error_recovery/reserved_words_class_methods:92:9: Expected an identifier, but got '('.
+  int is(int x) {
+        ^
+
+parser/error_recovery/reserved_words_class_methods:94:12: Expected an identifier, but got 'is'.
+    return is(x-1) + 1;
+           ^^
+
+parser/error_recovery/reserved_words_class_methods:94:14: Expected a type, but got '('.
+    return is(x-1) + 1;
+             ^
+
+parser/error_recovery/reserved_words_class_methods:94:14: Expected ';' after this.
+    return is(x-1) + 1;
+             ^
+
+parser/error_recovery/reserved_words_class_methods:97:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int new(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:97:3: Expected ';' after this.
+  int new(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:97:7: Expected a class member, but got 'new'.
+  int new(int x) {
+      ^^^
+
+parser/error_recovery/reserved_words_class_methods:97:10: Expected an identifier, but got '('.
+  int new(int x) {
+         ^
+
+parser/error_recovery/reserved_words_class_methods:99:15: Expected an identifier, but got '('.
+    return new(x-1) + 1;
+              ^
+
+parser/error_recovery/reserved_words_class_methods:102:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int null(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:102:3: Expected ';' after this.
+  int null(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:102:7: Expected a class member, but got 'null'.
+  int null(int x) {
+      ^^^^
+
+parser/error_recovery/reserved_words_class_methods:102:11: Expected an identifier, but got '('.
+  int null(int x) {
+          ^
+
+parser/error_recovery/reserved_words_class_methods:107:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int rethrow(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:107:3: Expected ';' after this.
+  int rethrow(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:107:7: Expected a class member, but got 'rethrow'.
+  int rethrow(int x) {
+      ^^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:107:14: Expected an identifier, but got '('.
+  int rethrow(int x) {
+             ^
+
+parser/error_recovery/reserved_words_class_methods:109:12: Expected an identifier, but got 'rethrow'.
+    return rethrow(x-1) + 1;
+           ^^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:112:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int return(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:112:3: Expected ';' after this.
+  int return(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:112:7: Expected a class member, but got 'return'.
+  int return(int x) {
+      ^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:112:13: Expected an identifier, but got '('.
+  int return(int x) {
+            ^
+
+parser/error_recovery/reserved_words_class_methods:114:12: Unexpected token 'return'.
+    return return(x-1) + 1;
+           ^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:117:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int super(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:117:3: Expected ';' after this.
+  int super(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:117:7: Expected a class member, but got 'super'.
+  int super(int x) {
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:117:12: Expected an identifier, but got '('.
+  int super(int x) {
+           ^
+
+parser/error_recovery/reserved_words_class_methods:122:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int switch(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:122:3: Expected ';' after this.
+  int switch(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:122:7: Expected a class member, but got 'switch'.
+  int switch(int x) {
+      ^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:122:13: Expected an identifier, but got '('.
+  int switch(int x) {
+            ^
+
+parser/error_recovery/reserved_words_class_methods:124:12: Expected an identifier, but got 'switch'.
+    return switch(x-1) + 1;
+           ^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:124:12: Expected ';' after this.
+    return switch(x-1) + 1;
+           ^^^^^^
+
+parser/error_recovery/reserved_words_class_methods:124:22: A switch statement must have a body, even if it is empty.
+    return switch(x-1) + 1;
+                     ^
+
+parser/error_recovery/reserved_words_class_methods:124:24: '+' is not a prefix operator.
+    return switch(x-1) + 1;
+                       ^
+
+parser/error_recovery/reserved_words_class_methods:127:7: Expected an identifier, but got 'this'.
+  int this(int x) {
+      ^^^^
+
+parser/error_recovery/reserved_words_class_methods:127:7: Expected ';' after this.
+  int this(int x) {
+      ^^^^
+
+parser/error_recovery/reserved_words_class_methods:127:11: Expected an identifier, but got '('.
+  int this(int x) {
+          ^
+
+parser/error_recovery/reserved_words_class_methods:132:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int throw(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:132:3: Expected ';' after this.
+  int throw(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:132:7: Expected a class member, but got 'throw'.
+  int throw(int x) {
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:132:12: Expected an identifier, but got '('.
+  int throw(int x) {
+           ^
+
+parser/error_recovery/reserved_words_class_methods:137:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int true(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:137:3: Expected ';' after this.
+  int true(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:137:7: Expected a class member, but got 'true'.
+  int true(int x) {
+      ^^^^
+
+parser/error_recovery/reserved_words_class_methods:137:11: Expected an identifier, but got '('.
+  int true(int x) {
+          ^
+
+parser/error_recovery/reserved_words_class_methods:142:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int try(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:142:3: Expected ';' after this.
+  int try(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:142:7: Expected a class member, but got 'try'.
+  int try(int x) {
+      ^^^
+
+parser/error_recovery/reserved_words_class_methods:142:10: Expected an identifier, but got '('.
+  int try(int x) {
+         ^
+
+parser/error_recovery/reserved_words_class_methods:144:12: Expected an identifier, but got 'try'.
+    return try(x-1) + 1;
+           ^^^
+
+parser/error_recovery/reserved_words_class_methods:144:12: Expected ';' after this.
+    return try(x-1) + 1;
+           ^^^
+
+parser/error_recovery/reserved_words_class_methods:144:12: A try statement must have a body, even if it is empty.
+    return try(x-1) + 1;
+           ^^^
+
+parser/error_recovery/reserved_words_class_methods:144:12: A try block must be followed by an 'on', 'catch', or 'finally' clause.
+    return try(x-1) + 1;
+           ^^^
+
+parser/error_recovery/reserved_words_class_methods:147:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int var(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:147:3: Expected ';' after this.
+  int var(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:147:7: The return type can't be 'var'.
+  int var(int x) {
+      ^^^
+
+parser/error_recovery/reserved_words_class_methods:147:10: Expected an identifier, but got '('.
+  int var(int x) {
+         ^
+
+parser/error_recovery/reserved_words_class_methods:149:12: Expected an identifier, but got 'var'.
+    return var(x-1) + 1;
+           ^^^
+
+parser/error_recovery/reserved_words_class_methods:149:12: Expected ';' after this.
+    return var(x-1) + 1;
+           ^^^
+
+parser/error_recovery/reserved_words_class_methods:149:15: Expected an identifier, but got '('.
+    return var(x-1) + 1;
+              ^
+
+parser/error_recovery/reserved_words_class_methods:149:16: Expected ';' after this.
+    return var(x-1) + 1;
+               ^
+
+parser/error_recovery/reserved_words_class_methods:149:18: Expected ';' after this.
+    return var(x-1) + 1;
+                 ^
+
+parser/error_recovery/reserved_words_class_methods:149:19: Expected an identifier, but got ')'.
+    return var(x-1) + 1;
+                  ^
+
+parser/error_recovery/reserved_words_class_methods:149:19: Expected ';' after this.
+    return var(x-1) + 1;
+                  ^
+
+parser/error_recovery/reserved_words_class_methods:149:19: Unexpected token ';'.
+    return var(x-1) + 1;
+                  ^
+
+parser/error_recovery/reserved_words_class_methods:149:21: '+' is not a prefix operator.
+    return var(x-1) + 1;
+                    ^
+
+parser/error_recovery/reserved_words_class_methods:152:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int void(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:152:3: Expected ';' after this.
+  int void(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:152:11: Expected an identifier, but got '('.
+  int void(int x) {
+          ^
+
+parser/error_recovery/reserved_words_class_methods:154:12: Expected an identifier, but got 'void'.
+    return void(x-1) + 1;
+           ^^^^
+
+parser/error_recovery/reserved_words_class_methods:154:12: Expected ';' after this.
+    return void(x-1) + 1;
+           ^^^^
+
+parser/error_recovery/reserved_words_class_methods:154:16: Expected an identifier, but got '('.
+    return void(x-1) + 1;
+               ^
+
+parser/error_recovery/reserved_words_class_methods:154:17: Expected ';' after this.
+    return void(x-1) + 1;
+                ^
+
+parser/error_recovery/reserved_words_class_methods:154:19: Expected ';' after this.
+    return void(x-1) + 1;
+                  ^
+
+parser/error_recovery/reserved_words_class_methods:154:20: Expected an identifier, but got ')'.
+    return void(x-1) + 1;
+                   ^
+
+parser/error_recovery/reserved_words_class_methods:154:20: Expected ';' after this.
+    return void(x-1) + 1;
+                   ^
+
+parser/error_recovery/reserved_words_class_methods:154:20: Unexpected token ';'.
+    return void(x-1) + 1;
+                   ^
+
+parser/error_recovery/reserved_words_class_methods:154:22: '+' is not a prefix operator.
+    return void(x-1) + 1;
+                     ^
+
+parser/error_recovery/reserved_words_class_methods:157:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int while(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:157:3: Expected ';' after this.
+  int while(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:157:7: Expected a class member, but got 'while'.
+  int while(int x) {
+      ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:157:12: Expected an identifier, but got '('.
+  int while(int x) {
+           ^
+
+parser/error_recovery/reserved_words_class_methods:159:12: Expected an identifier, but got 'while'.
+    return while(x-1) + 1;
+           ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:159:12: Expected ';' after this.
+    return while(x-1) + 1;
+           ^^^^^
+
+parser/error_recovery/reserved_words_class_methods:159:23: '+' is not a prefix operator.
+    return while(x-1) + 1;
+                      ^
+
+parser/error_recovery/reserved_words_class_methods:162:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+  int with(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:162:3: Expected ';' after this.
+  int with(int x) {
+  ^^^
+
+parser/error_recovery/reserved_words_class_methods:162:7: Expected a class member, but got 'with'.
+  int with(int x) {
+      ^^^^
+
+parser/error_recovery/reserved_words_class_methods:162:11: Expected an identifier, but got '('.
+  int with(int x) {
+          ^
+
+parser/error_recovery/reserved_words_class_methods:164:12: Expected an identifier, but got 'with'.
+    return with(x-1) + 1;
+           ^^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(WrapperClass, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, WrapperClass)
+      handleNoType(WrapperClass)
+      handleClassExtends(null)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          handleRecoverableError(MissingConstFinalVarOrType, int, int)
+          handleNoType({)
+          handleIdentifier(int, fieldDeclaration)
+          handleNoFieldInitializer(assert)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+        endClassFields(null, null, null, null, 1, int, ;)
+      endMember()
+      beginMetadataStar(assert)
+      endMetadataStar(0)
+      beginMember()
+        handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'assert'., null, {token: assert}], assert, assert)
+        handleInvalidMember(assert)
+      endMember()
+      beginMetadataStar(()
+      endMetadataStar(0)
+      beginMember()
+        beginMethod(null, null, null, null, null, ()
+          handleNoType(assert)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+          handleIdentifier(, methodDeclaration)
+          handleNoTypeVariables(()
+          beginFormalParameters((, MemberKind.NonStaticMethod)
+            beginMetadataStar(int)
+            endMetadataStar(0)
+            beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(x)
+              handleType(int, null)
+              handleIdentifier(x, formalParameterDeclaration)
+              handleFormalParameterWithoutValue())
+            endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+          endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+          handleNoInitializers()
+          handleAsyncModifier(null, null)
+          beginBlockFunctionBody({)
+            beginIfStatement(if)
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(==)
+              handleNoArguments(==)
+              handleSend(x, ==)
+              beginBinaryExpression(==)
+              handleLiteralInt(0)
+              endBinaryExpression(==)
+              handleParenthesizedCondition(()
+              beginThenStatement(return)
+                beginReturnStatement(return)
+                  handleLiteralInt(42)
+                endReturnStatement(true, return, ;)
+              endThenStatement(;)
+            endIfStatement(if, null)
+            beginReturnStatement(return)
+              beginAssert(assert, Assert.Expression)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(-)
+                handleNoArguments(-)
+                handleSend(x, -)
+                beginBinaryExpression(-)
+                handleLiteralInt(1)
+                endBinaryExpression(-)
+                handleRecoverableError(AssertAsExpression, assert, assert)
+              endAssert(assert, Assert.Expression, (, null, +)
+              beginBinaryExpression(+)
+              handleLiteralInt(1)
+              endBinaryExpression(+)
+            endReturnStatement(true, return, ;)
+          endBlockFunctionBody(2, {, })
+        endClassMethod(null, , (, null, })
+      endMember()
+      beginMetadataStar(int)
+      endMetadataStar(0)
+      beginMember()
+        handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        handleNoType(})
+        handleIdentifier(int, fieldDeclaration)
+        handleNoFieldInitializer(break)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+      endClassFields(null, null, null, null, 1, int, ;)
+    endMember()
+    beginMetadataStar(break)
+    endMetadataStar(0)
+    beginMember()
+      handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'break'., null, {token: break}], break, break)
+      handleInvalidMember(break)
+    endMember()
+    beginMetadataStar(()
+    endMetadataStar(0)
+    beginMember()
+      beginMethod(null, null, null, null, null, ()
+        handleNoType(break)
+        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+        handleIdentifier(, methodDeclaration)
+        handleNoTypeVariables(()
+        beginFormalParameters((, MemberKind.NonStaticMethod)
+          beginMetadataStar(int)
+          endMetadataStar(0)
+          beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(x)
+            handleType(int, null)
+            handleIdentifier(x, formalParameterDeclaration)
+            handleFormalParameterWithoutValue())
+          endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+        endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+        handleNoInitializers()
+        handleAsyncModifier(null, null)
+        beginBlockFunctionBody({)
+          beginIfStatement(if)
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(==)
+            handleNoArguments(==)
+            handleSend(x, ==)
+            beginBinaryExpression(==)
+            handleLiteralInt(0)
+            endBinaryExpression(==)
+            handleParenthesizedCondition(()
+            beginThenStatement(return)
+              beginReturnStatement(return)
+                handleLiteralInt(42)
+              endReturnStatement(true, return, ;)
+            endThenStatement(;)
+          endIfStatement(if, null)
+          beginReturnStatement(return)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+            handleIdentifier(, expression)
+            handleNoTypeArguments(break)
+            handleNoArguments(break)
+            handleSend(, break)
+            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+          endReturnStatement(true, return, ;)
+          handleRecoverableError(BreakOutsideOfLoop, break, break)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+          handleBreakStatement(false, break, ;)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(-)
+          handleNoArguments(-)
+          handleSend(x, -)
+          beginBinaryExpression(-)
+          handleLiteralInt(1)
+          endBinaryExpression(-)
+          handleParenthesizedExpression(()
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+          handleExpressionStatement(;)
+        endBlockFunctionBody(4, {, })
+      endClassMethod(null, , (, null, })
+    endMember()
+    beginMetadataStar(int)
+    endMetadataStar(0)
+    beginMember()
+      handleRecoverableError(MissingConstFinalVarOrType, int, int)
+      handleNoType(})
+      handleIdentifier(int, fieldDeclaration)
+      handleNoFieldInitializer(case)
+      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+    endClassFields(null, null, null, null, 1, int, ;)
+  endMember()
+  beginMetadataStar(case)
+  endMetadataStar(0)
+  beginMember()
+    handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'case'., null, {token: case}], case, case)
+    handleInvalidMember(case)
+  endMember()
+  beginMetadataStar(()
+  endMetadataStar(0)
+  beginMember()
+    beginMethod(null, null, null, null, null, ()
+      handleNoType(case)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+      handleIdentifier(, methodDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.NonStaticMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+      endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+      handleNoInitializers()
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+          handleIdentifier(case, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(case, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endClassMethod(null, , (, null, })
+  endMember()
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginMember()
+    handleRecoverableError(MissingConstFinalVarOrType, int, int)
+    handleNoType(})
+    handleIdentifier(int, fieldDeclaration)
+    handleNoFieldInitializer(catch)
+    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+  endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(catch)
+endMetadataStar(0)
+beginMember()
+  handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'catch'., null, {token: catch}], catch, catch)
+  handleInvalidMember(catch)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+  beginMethod(null, null, null, null, null, ()
+    handleNoType(catch)
+    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+    handleIdentifier(, methodDeclaration)
+    handleNoTypeVariables(()
+    beginFormalParameters((, MemberKind.NonStaticMethod)
+      beginMetadataStar(int)
+      endMetadataStar(0)
+      beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(x)
+        handleType(int, null)
+        handleIdentifier(x, formalParameterDeclaration)
+        handleFormalParameterWithoutValue())
+      endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+    endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+    handleNoInitializers()
+    handleAsyncModifier(null, null)
+    beginBlockFunctionBody({)
+      beginIfStatement(if)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(==)
+        handleNoArguments(==)
+        handleSend(x, ==)
+        beginBinaryExpression(==)
+        handleLiteralInt(0)
+        endBinaryExpression(==)
+        handleParenthesizedCondition(()
+        beginThenStatement(return)
+          beginReturnStatement(return)
+            handleLiteralInt(42)
+          endReturnStatement(true, return, ;)
+        endThenStatement(;)
+      endIfStatement(if, null)
+      beginReturnStatement(return)
+        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+        handleIdentifier(catch, expression)
+        handleNoTypeArguments(()
+        beginArguments(()
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(-)
+          handleNoArguments(-)
+          handleSend(x, -)
+          beginBinaryExpression(-)
+          handleLiteralInt(1)
+          endBinaryExpression(-)
+        endArguments(1, (, ))
+        handleSend(catch, +)
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+      endReturnStatement(true, return, ;)
+    endBlockFunctionBody(2, {, })
+  endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+  handleRecoverableError(MissingConstFinalVarOrType, int, int)
+  handleNoType(})
+  handleIdentifier(int, fieldDeclaration)
+  handleNoFieldInitializer(class)
+  handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(class)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(ClassInClass, class, class)
+handleInvalidMember(class)
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+  beginMethod(null, null, null, null, null, ()
+    handleNoType(class)
+    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+    handleIdentifier(, methodDeclaration)
+    handleNoTypeVariables(()
+    beginFormalParameters((, MemberKind.NonStaticMethod)
+      beginMetadataStar(int)
+      endMetadataStar(0)
+      beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(x)
+        handleType(int, null)
+        handleIdentifier(x, formalParameterDeclaration)
+        handleFormalParameterWithoutValue())
+      endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+    endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+    handleNoInitializers()
+    handleAsyncModifier(null, null)
+    beginBlockFunctionBody({)
+      beginIfStatement(if)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(==)
+        handleNoArguments(==)
+        handleSend(x, ==)
+        beginBinaryExpression(==)
+        handleLiteralInt(0)
+        endBinaryExpression(==)
+        handleParenthesizedCondition(()
+        beginThenStatement(return)
+          beginReturnStatement(return)
+            handleLiteralInt(42)
+          endReturnStatement(true, return, ;)
+        endThenStatement(;)
+      endIfStatement(if, null)
+      beginReturnStatement(return)
+        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
+        handleIdentifier(class, expression)
+        handleNoTypeArguments(()
+        beginArguments(()
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(-)
+          handleNoArguments(-)
+          handleSend(x, -)
+          beginBinaryExpression(-)
+          handleLiteralInt(1)
+          endBinaryExpression(-)
+        endArguments(1, (, ))
+        handleSend(class, +)
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+      endReturnStatement(true, return, ;)
+    endBlockFunctionBody(2, {, })
+  endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+  handleRecoverableError(MissingConstFinalVarOrType, int, int)
+  handleNoType(})
+  handleIdentifier(int, fieldDeclaration)
+  handleNoFieldInitializer(const)
+  handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(const)
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, const, null, ()
+  handleNoType(const)
+  handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+  handleIdentifier(, methodDeclaration)
+  handleNoTypeVariables(()
+  beginFormalParameters((, MemberKind.NonStaticMethod)
+    beginMetadataStar(int)
+    endMetadataStar(0)
+    beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(x)
+      handleType(int, null)
+      handleIdentifier(x, formalParameterDeclaration)
+      handleFormalParameterWithoutValue())
+    endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+  endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+  handleNoInitializers()
+  handleAsyncModifier(null, null)
+  beginBlockFunctionBody({)
+    beginIfStatement(if)
+      handleIdentifier(x, expression)
+      handleNoTypeArguments(==)
+      handleNoArguments(==)
+      handleSend(x, ==)
+      beginBinaryExpression(==)
+      handleLiteralInt(0)
+      endBinaryExpression(==)
+      handleParenthesizedCondition(()
+      beginThenStatement(return)
+        beginReturnStatement(return)
+          handleLiteralInt(42)
+        endReturnStatement(true, return, ;)
+      endThenStatement(;)
+    endIfStatement(if, null)
+    beginReturnStatement(return)
+      beginConstExpression(const)
+        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+        handleIdentifier(, constructorReference)
+        beginConstructorReference()
+          handleNoTypeArguments(()
+          handleNoConstructorReferenceContinuationAfterTypeArguments(()
+        endConstructorReference(, null, ()
+        beginArguments(()
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(-)
+          handleNoArguments(-)
+          handleSend(x, -)
+          beginBinaryExpression(-)
+          handleLiteralInt(1)
+          endBinaryExpression(-)
+        endArguments(1, (, ))
+      endConstExpression(const)
+      beginBinaryExpression(+)
+      handleLiteralInt(1)
+      endBinaryExpression(+)
+    endReturnStatement(true, return, ;)
+  endBlockFunctionBody(2, {, })
+  handleRecoverableError(ConstMethod, const, const)
+endClassMethod(null, const, (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(continue)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(continue)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'continue'., null, {token: continue}], continue, continue)
+handleInvalidMember(continue)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(continue)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+    handleIdentifier(int, typeReference)
+    handleNoTypeArguments(x)
+    handleType(int, null)
+    handleIdentifier(x, formalParameterDeclaration)
+    handleFormalParameterWithoutValue())
+  endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+  beginIfStatement(if)
+    handleIdentifier(x, expression)
+    handleNoTypeArguments(==)
+    handleNoArguments(==)
+    handleSend(x, ==)
+    beginBinaryExpression(==)
+    handleLiteralInt(0)
+    endBinaryExpression(==)
+    handleParenthesizedCondition(()
+    beginThenStatement(return)
+      beginReturnStatement(return)
+        handleLiteralInt(42)
+      endReturnStatement(true, return, ;)
+    endThenStatement(;)
+  endIfStatement(if, null)
+  beginReturnStatement(return)
+    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+    handleIdentifier(, expression)
+    handleNoTypeArguments(continue)
+    handleNoArguments(continue)
+    handleSend(, continue)
+    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+  endReturnStatement(true, return, ;)
+  handleRecoverableError(ContinueOutsideOfLoop, continue, continue)
+  handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+  handleContinueStatement(false, continue, ;)
+  handleIdentifier(x, expression)
+  handleNoTypeArguments(-)
+  handleNoArguments(-)
+  handleSend(x, -)
+  beginBinaryExpression(-)
+  handleLiteralInt(1)
+  endBinaryExpression(-)
+  handleParenthesizedExpression(()
+  beginBinaryExpression(+)
+  handleLiteralInt(1)
+  endBinaryExpression(+)
+  handleExpressionStatement(;)
+endBlockFunctionBody(4, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(default)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(default)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'default'., null, {token: default}], default, default)
+handleInvalidMember(default)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(default)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+  handleIdentifier(int, typeReference)
+  handleNoTypeArguments(x)
+  handleType(int, null)
+  handleIdentifier(x, formalParameterDeclaration)
+  handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+  handleIdentifier(x, expression)
+  handleNoTypeArguments(==)
+  handleNoArguments(==)
+  handleSend(x, ==)
+  beginBinaryExpression(==)
+  handleLiteralInt(0)
+  endBinaryExpression(==)
+  handleParenthesizedCondition(()
+  beginThenStatement(return)
+    beginReturnStatement(return)
+      handleLiteralInt(42)
+    endReturnStatement(true, return, ;)
+  endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+  handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+  handleIdentifier(default, expression)
+  handleNoTypeArguments(()
+  beginArguments(()
+    handleIdentifier(x, expression)
+    handleNoTypeArguments(-)
+    handleNoArguments(-)
+    handleSend(x, -)
+    beginBinaryExpression(-)
+    handleLiteralInt(1)
+    endBinaryExpression(-)
+  endArguments(1, (, ))
+  handleSend(default, +)
+  beginBinaryExpression(+)
+  handleLiteralInt(1)
+  endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(do)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(do)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'do'., null, {token: do}], do, do)
+handleInvalidMember(do)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(do)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+  beginReturnStatement(return)
+    handleLiteralInt(42)
+  endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+handleIdentifier(, expression)
+handleNoTypeArguments(do)
+handleNoArguments(do)
+handleSend(, do)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], do, do)
+endReturnStatement(true, return, ;)
+beginDoWhileStatement(do)
+beginDoWhileStatementBody(()
+  handleIdentifier(x, expression)
+  handleNoTypeArguments(-)
+  handleNoArguments(-)
+  handleSend(x, -)
+  beginBinaryExpression(-)
+  handleLiteralInt(1)
+  endBinaryExpression(-)
+  handleParenthesizedExpression(()
+  beginBinaryExpression(+)
+  handleLiteralInt(1)
+  endBinaryExpression(+)
+  handleExpressionStatement(;)
+endDoWhileStatementBody(;)
+handleRecoverableError(Message[ExpectedButGot, Expected 'while' before this., null, {string: while}], }, })
+handleRecoverableError(Message[ExpectedToken, Expected to find '('., null, {string: (}], }, })
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., null, {token: }}], }, })
+handleIdentifier(, expression)
+handleNoTypeArguments())
+handleNoArguments())
+handleSend(, ))
+handleParenthesizedCondition(()
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+endDoWhileStatement(do, while, ;)
+endBlockFunctionBody(3, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(else)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(else)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'else'., null, {token: else}], else, else)
+handleInvalidMember(else)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(else)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+  handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+handleIdentifier(, expression)
+handleNoTypeArguments(else)
+handleNoArguments(else)
+handleSend(, else)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+endReturnStatement(true, return, ;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+handleIdentifier(, expression)
+handleNoTypeArguments(else)
+handleNoArguments(else)
+handleSend(, else)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+handleExpressionStatement(;)
+handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], else, else)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(4, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(enum)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(enum)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(EnumInClass, enum, enum)
+handleInvalidMember(enum)
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(enum)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+  handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
+handleIdentifier(enum, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(enum, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(extends)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(extends)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'extends'., null, {token: extends}], extends, extends)
+handleInvalidMember(extends)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(extends)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+handleIdentifier(extends, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(extends, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(false)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(false)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'false'., null, {token: false}], false, false)
+handleInvalidMember(false)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(false)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleLiteralBool(false)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend((, ))
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(final)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(final)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'final' here., Try removing 'final'., {token: final}], final, final)
+beginMethod(null, null, null, null, null, ()
+handleNoType(final)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+handleIdentifier(, expression)
+handleNoTypeArguments(final)
+handleNoArguments(final)
+handleSend(, final)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], final, final)
+endReturnStatement(true, return, ;)
+beginMetadataStar(final)
+endMetadataStar(0)
+handleNoType(final)
+beginVariablesDeclaration((, null, final)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, localVariableDeclaration)
+beginInitializedIdentifier()
+handleNoVariableInitializer(x)
+endInitializedIdentifier()
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+endVariablesDeclaration(1, ;)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+handleExpressionStatement(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+handleIdentifier(, expression)
+handleNoTypeArguments())
+handleNoArguments())
+handleSend(, ))
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+handleExpressionStatement(;)
+handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(6, {, })
+endClassMethod(null, final, (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(finally)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(finally)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'finally'., null, {token: finally}], finally, finally)
+handleInvalidMember(finally)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(finally)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+handleIdentifier(finally, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(finally, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(for)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(for)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'for'., null, {token: for}], for, for)
+handleInvalidMember(for)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(for)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+handleIdentifier(, expression)
+handleNoTypeArguments(for)
+handleNoArguments(for)
+handleSend(, for)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], for, for)
+endReturnStatement(true, return, ;)
+beginForStatement(for)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleForInitializerExpressionStatement(1, false)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+handleIdentifier(, expression)
+handleNoTypeArguments())
+handleNoArguments())
+handleSend(, ))
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+handleExpressionStatement(;)
+handleForLoopParts(for, (, ;, 0)
+beginForStatementBody(+)
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endForStatementBody(})
+endForStatement(})
+endBlockFunctionBody(3, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(if)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(if)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'if'., null, {token: if}], if, if)
+handleInvalidMember(if)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(if)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+handleIdentifier(, expression)
+handleNoTypeArguments(if)
+handleNoArguments(if)
+handleSend(, if)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], if, if)
+endReturnStatement(true, return, ;)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedCondition(()
+beginThenStatement(+)
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endThenStatement(;)
+endIfStatement(if, null)
+endBlockFunctionBody(3, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(in)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(in)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'in'., null, {token: in}], in, in)
+handleInvalidMember(in)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(in)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+handleIdentifier(in, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(in, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(is)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(is)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'is'., null, {token: is}], is, is)
+handleInvalidMember(is)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(is)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+handleIdentifier(, expression)
+handleNoTypeArguments(is)
+handleNoArguments(is)
+handleSend(, is)
+beginIsOperatorType(is)
+handleRecoverableError(Message[ExpectedType, Expected a type, but got '('., null, {token: (}], (, ()
+handleIdentifier(, typeReference)
+handleNoTypeArguments(()
+handleType(, null)
+endIsOperatorType(is)
+handleIsOperator(is, null)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
+endReturnStatement(true, return, ;)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(3, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(new)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(new)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'new'., null, {token: new}], new, new)
+handleInvalidMember(new)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(new)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+beginNewExpression(new)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, constructorReference)
+beginConstructorReference()
+handleNoTypeArguments(()
+handleNoConstructorReferenceContinuationAfterTypeArguments(()
+endConstructorReference(, null, ()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+endNewExpression(new)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(null)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(null)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'null'., null, {token: null}], null, null)
+handleInvalidMember(null)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleLiteralNull(null)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend((, ))
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(rethrow)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(rethrow)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+handleInvalidMember(rethrow)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(rethrow)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+handleIdentifier(rethrow, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(rethrow, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(return)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(return)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'return'., null, {token: return}], return, return)
+handleInvalidMember(return)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[UnexpectedToken, Unexpected token 'return'., null, {token: return}], return, return)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(super)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(super)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'super'., null, {token: super}], super, super)
+handleInvalidMember(super)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(super)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleSuperExpression(super, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(super, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(switch)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(switch)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'switch'., null, {token: switch}], switch, switch)
+handleInvalidMember(switch)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(switch)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+handleIdentifier(, expression)
+handleNoTypeArguments(switch)
+handleNoArguments(switch)
+handleSend(, switch)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], switch, switch)
+endReturnStatement(true, return, ;)
+beginSwitchStatement(switch)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedCondition(()
+handleRecoverableError(Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}], ), ))
+beginSwitchBlock({)
+endSwitchBlock(0, {, })
+endSwitchStatement(switch, })
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(4, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(this)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
+handleIdentifier(this, fieldDeclaration)
+handleNoFieldInitializer(()
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], this, this)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleThisExpression(this, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(this, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(throw)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(throw)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'throw'., null, {token: throw}], throw, throw)
+handleInvalidMember(throw)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(throw)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleThrowExpression(throw, ;)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(true)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(true)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'true'., null, {token: true}], true, true)
+handleInvalidMember(true)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(true)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleLiteralBool(true)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend((, ))
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(try)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(try)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'try'., null, {token: try}], try, try)
+handleInvalidMember(try)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(try)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+handleIdentifier(, expression)
+handleNoTypeArguments(try)
+handleNoArguments(try)
+handleSend(, try)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], try, try)
+endReturnStatement(true, return, ;)
+beginTryStatement(try)
+handleRecoverableError(Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}], try, try)
+beginBlock({, BlockKind(try statement))
+endBlock(0, {, }, BlockKind(try statement))
+handleRecoverableError(OnlyTry, try, try)
+endTryStatement(0, try, null)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(4, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(var)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(var)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(VarReturnType, var, var)
+beginMethod(null, null, null, null, null, ()
+handleNoType(var)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+handleIdentifier(, expression)
+handleNoTypeArguments(var)
+handleNoArguments(var)
+handleSend(, var)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], var, var)
+endReturnStatement(true, return, ;)
+beginMetadataStar(var)
+endMetadataStar(0)
+handleNoType(var)
+beginVariablesDeclaration((, null, var)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, localVariableDeclaration)
+beginInitializedIdentifier()
+handleNoVariableInitializer(x)
+endInitializedIdentifier()
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+endVariablesDeclaration(1, ;)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+handleExpressionStatement(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+handleIdentifier(, expression)
+handleNoTypeArguments())
+handleNoArguments())
+handleSend(, ))
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+handleExpressionStatement(;)
+handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(6, {, })
+endClassMethod(null, var, (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(void)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(void)
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleVoidKeyword(void)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+handleIdentifier(, expression)
+handleNoTypeArguments(void)
+handleNoArguments(void)
+handleSend(, void)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void)
+endReturnStatement(true, return, ;)
+beginMetadataStar(void)
+endMetadataStar(0)
+handleVoidKeyword(void)
+beginVariablesDeclaration((, null, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, localVariableDeclaration)
+beginInitializedIdentifier()
+handleNoVariableInitializer(x)
+endInitializedIdentifier()
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+endVariablesDeclaration(1, ;)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+handleExpressionStatement(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+handleIdentifier(, expression)
+handleNoTypeArguments())
+handleNoArguments())
+handleSend(, ))
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+handleExpressionStatement(;)
+handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(6, {, })
+endClassMethod(null, void, (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(while)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(while)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'while'., null, {token: while}], while, while)
+handleInvalidMember(while)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(while)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+handleIdentifier(, expression)
+handleNoTypeArguments(while)
+handleNoArguments(while)
+handleSend(, while)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], while, while)
+endReturnStatement(true, return, ;)
+beginWhileStatement(while)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedCondition(()
+beginWhileStatementBody(+)
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endWhileStatementBody(})
+endWhileStatement(while, })
+endBlockFunctionBody(3, {, })
+endClassMethod(null, , (, null, })
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, fieldDeclaration)
+handleNoFieldInitializer(with)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(with)
+endMetadataStar(0)
+beginMember()
+handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
+handleInvalidMember(with)
+endMember()
+beginMetadataStar(()
+endMetadataStar(0)
+beginMember()
+beginMethod(null, null, null, null, null, ()
+handleNoType(with)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, methodDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.NonStaticMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+handleNoInitializers()
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+handleIdentifier(with, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(with, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endClassMethod(null, , (, null, })
+endMember()
+endClassOrMixinBody(DeclarationKind.Class, 94, {, })
+endClassDeclaration(class, })
+endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.intertwined.expect
new file mode 100644
index 0000000..2b33d7b
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.intertwined.expect
@@ -0,0 +1,6400 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(WrapperClass, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, WrapperClass)
+        parseClass(WrapperClass, class, class, WrapperClass)
+          parseClassHeaderOpt(WrapperClass, class, class)
+            parseClassExtendsOpt(WrapperClass)
+              listener: handleNoType(WrapperClass)
+              listener: handleClassExtends(null)
+            parseWithClauseOpt(WrapperClass)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(WrapperClass)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(WrapperClass, DeclarationKind.Class, WrapperClass)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar({)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, {, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType({)
+                ensureIdentifier({, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(assert)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, assert)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(assert)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(assert, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'assert'., null, {token: assert}], assert, assert)
+                listener: handleInvalidMember(assert)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(assert, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(assert)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(assert, assert, null, null, null, null, null, assert, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(assert, null, null, null, null, null, assert, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(assert)
+                  ensureIdentifier(assert, methodDeclaration)
+                    insertSyntheticIdentifier(assert, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseAssert(return, Assert.Expression)
+                                    listener: beginAssert(assert, Assert.Expression)
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseSendOrFunctionLiteral((, expression)
+                                              parseSend((, expression)
+                                                ensureIdentifier((, expression)
+                                                  listener: handleIdentifier(x, expression)
+                                                listener: handleNoTypeArguments(-)
+                                                parseArgumentsOpt(x)
+                                                  listener: handleNoArguments(-)
+                                                listener: handleSend(x, -)
+                                        listener: beginBinaryExpression(-)
+                                        parsePrecedenceExpression(-, 14, true)
+                                          parseUnaryExpression(-, true)
+                                            parsePrimary(-, expression)
+                                              parseLiteralInt(-)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(-)
+                                    reportRecoverableError(assert, AssertAsExpression)
+                                      listener: handleRecoverableError(AssertAsExpression, assert, assert)
+                                    listener: endAssert(assert, Assert.Expression, (, null, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(break)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, break)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(break)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'break'., null, {token: break}], break, break)
+                listener: handleInvalidMember(break)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(break, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(break)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(break, break, null, null, null, null, null, break, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(break, null, null, null, null, null, break, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(break)
+                  ensureIdentifier(break, methodDeclaration)
+                    insertSyntheticIdentifier(break, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+                                      rewriter()
+                                      listener: handleIdentifier(, expression)
+                                    listener: handleNoTypeArguments(break)
+                                    parseArgumentsOpt()
+                                      listener: handleNoArguments(break)
+                                    listener: handleSend(, break)
+                          ensureSemicolon()
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+                            rewriter()
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, break)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseBreakStatement(;)
+                          isBreakAllowed()
+                          reportRecoverableError(break, BreakOutsideOfLoop)
+                            listener: handleRecoverableError(BreakOutsideOfLoop, break, break)
+                          ensureSemicolon(break)
+                            reportRecoverableError(break, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+                            rewriter()
+                          listener: handleBreakStatement(false, break, ;)
+                    notEofOrValue(}, ()
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseExpressionStatementOrDeclaration(;, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                            looksLikeLocalFunction(()
+                            parseExpressionStatement(;)
+                              parseExpression(;)
+                                parsePrecedenceExpression(;, 1, true)
+                                  parseUnaryExpression(;, true)
+                                    parsePrimary(;, expression)
+                                      parseParenthesizedExpressionOrFunctionLiteral(;)
+                                        parseParenthesizedExpression(;)
+                                          parseExpressionInParenthesis(;)
+                                            parseExpressionInParenthesisRest(()
+                                              parseExpression(()
+                                                parsePrecedenceExpression((, 1, true)
+                                                  parseUnaryExpression((, true)
+                                                    parsePrimary((, expression)
+                                                      parseSendOrFunctionLiteral((, expression)
+                                                        parseSend((, expression)
+                                                          ensureIdentifier((, expression)
+                                                            listener: handleIdentifier(x, expression)
+                                                          listener: handleNoTypeArguments(-)
+                                                          parseArgumentsOpt(x)
+                                                            listener: handleNoArguments(-)
+                                                          listener: handleSend(x, -)
+                                                  listener: beginBinaryExpression(-)
+                                                  parsePrecedenceExpression(-, 14, true)
+                                                    parseUnaryExpression(-, true)
+                                                      parsePrimary(-, expression)
+                                                        parseLiteralInt(-)
+                                                          listener: handleLiteralInt(1)
+                                                  listener: endBinaryExpression(-)
+                                              ensureCloseParen(1, ()
+                                          listener: handleParenthesizedExpression(()
+                                  listener: beginBinaryExpression(+)
+                                  parsePrecedenceExpression(+, 14, true)
+                                    parseUnaryExpression(+, true)
+                                      parsePrimary(+, expression)
+                                        parseLiteralInt(+)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(+)
+                              ensureSemicolon(1)
+                              listener: handleExpressionStatement(;)
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(4, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(case)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, case)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(case)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'case'., null, {token: case}], case, case)
+                listener: handleInvalidMember(case)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(case, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(case)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(case, case, null, null, null, null, null, case, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(case, null, null, null, null, null, case, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(case)
+                  ensureIdentifier(case, methodDeclaration)
+                    insertSyntheticIdentifier(case, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+                                      listener: handleIdentifier(case, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(case)
+                                      parseArguments(case)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(case, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(catch)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, catch)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(catch)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'catch'., null, {token: catch}], catch, catch)
+                listener: handleInvalidMember(catch)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(catch, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(catch)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(catch, catch, null, null, null, null, null, catch, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(catch, null, null, null, null, null, catch, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(catch)
+                  ensureIdentifier(catch, methodDeclaration)
+                    insertSyntheticIdentifier(catch, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+                                      listener: handleIdentifier(catch, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(catch)
+                                      parseArguments(catch)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(catch, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(class)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, class)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(class)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportAndSkipClassInClass(class)
+                  reportRecoverableError(class, ClassInClass)
+                    listener: handleRecoverableError(ClassInClass, class, class)
+                  listener: handleInvalidMember(class)
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(class, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(class)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(class, class, null, null, null, null, null, class, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(class, null, null, null, null, null, class, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(class)
+                  ensureIdentifier(class, methodDeclaration)
+                    insertSyntheticIdentifier(class, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(class, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
+                                      listener: handleIdentifier(class, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(class)
+                                      parseArguments(class)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(class, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(const)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, const)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(const)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(const, ;, null, null, null, null, const, const, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(;, null, null, null, null, const, const, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, const, null, ()
+                  listener: handleNoType(const)
+                  ensureIdentifier(const, methodDeclaration)
+                    insertSyntheticIdentifier(const, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  parseConstExpression(return)
+                                    listener: beginConstExpression(const)
+                                    parseConstructorReference(const, null)
+                                      ensureIdentifier(const, constructorReference)
+                                        insertSyntheticIdentifier(const, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], messageOnToken: null)
+                                          reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                                            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                                          rewriter()
+                                        listener: handleIdentifier(, constructorReference)
+                                      listener: beginConstructorReference()
+                                      parseQualifiedRestOpt(, constructorReferenceContinuation)
+                                      listener: handleNoTypeArguments(()
+                                      listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                                      listener: endConstructorReference(, null, ()
+                                    parseConstructorInvocationArguments()
+                                      parseArgumentsRest(()
+                                        listener: beginArguments(()
+                                        parseExpression(()
+                                          parsePrecedenceExpression((, 1, true)
+                                            parseUnaryExpression((, true)
+                                              parsePrimary((, expression)
+                                                parseSendOrFunctionLiteral((, expression)
+                                                  parseSend((, expression)
+                                                    ensureIdentifier((, expression)
+                                                      listener: handleIdentifier(x, expression)
+                                                    listener: handleNoTypeArguments(-)
+                                                    parseArgumentsOpt(x)
+                                                      listener: handleNoArguments(-)
+                                                    listener: handleSend(x, -)
+                                            listener: beginBinaryExpression(-)
+                                            parsePrecedenceExpression(-, 14, true)
+                                              parseUnaryExpression(-, true)
+                                                parsePrimary(-, expression)
+                                                  parseLiteralInt(-)
+                                                    listener: handleLiteralInt(1)
+                                            listener: endBinaryExpression(-)
+                                        listener: endArguments(1, (, ))
+                                    listener: endConstExpression(const)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  reportRecoverableError(const, ConstMethod)
+                    listener: handleRecoverableError(ConstMethod, const, const)
+                  listener: endClassMethod(null, const, (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(continue)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, continue)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(continue)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'continue'., null, {token: continue}], continue, continue)
+                listener: handleInvalidMember(continue)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(continue, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(continue)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(continue, continue, null, null, null, null, null, continue, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(continue, null, null, null, null, null, continue, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(continue)
+                  ensureIdentifier(continue, methodDeclaration)
+                    insertSyntheticIdentifier(continue, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+                                      rewriter()
+                                      listener: handleIdentifier(, expression)
+                                    listener: handleNoTypeArguments(continue)
+                                    parseArgumentsOpt()
+                                      listener: handleNoArguments(continue)
+                                    listener: handleSend(, continue)
+                          ensureSemicolon()
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+                            rewriter()
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, continue)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseContinueStatement(;)
+                          isContinueAllowed()
+                          reportRecoverableError(continue, ContinueOutsideOfLoop)
+                            listener: handleRecoverableError(ContinueOutsideOfLoop, continue, continue)
+                          ensureSemicolon(continue)
+                            reportRecoverableError(continue, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+                            rewriter()
+                          listener: handleContinueStatement(false, continue, ;)
+                    notEofOrValue(}, ()
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseExpressionStatementOrDeclaration(;, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                            looksLikeLocalFunction(()
+                            parseExpressionStatement(;)
+                              parseExpression(;)
+                                parsePrecedenceExpression(;, 1, true)
+                                  parseUnaryExpression(;, true)
+                                    parsePrimary(;, expression)
+                                      parseParenthesizedExpressionOrFunctionLiteral(;)
+                                        parseParenthesizedExpression(;)
+                                          parseExpressionInParenthesis(;)
+                                            parseExpressionInParenthesisRest(()
+                                              parseExpression(()
+                                                parsePrecedenceExpression((, 1, true)
+                                                  parseUnaryExpression((, true)
+                                                    parsePrimary((, expression)
+                                                      parseSendOrFunctionLiteral((, expression)
+                                                        parseSend((, expression)
+                                                          ensureIdentifier((, expression)
+                                                            listener: handleIdentifier(x, expression)
+                                                          listener: handleNoTypeArguments(-)
+                                                          parseArgumentsOpt(x)
+                                                            listener: handleNoArguments(-)
+                                                          listener: handleSend(x, -)
+                                                  listener: beginBinaryExpression(-)
+                                                  parsePrecedenceExpression(-, 14, true)
+                                                    parseUnaryExpression(-, true)
+                                                      parsePrimary(-, expression)
+                                                        parseLiteralInt(-)
+                                                          listener: handleLiteralInt(1)
+                                                  listener: endBinaryExpression(-)
+                                              ensureCloseParen(1, ()
+                                          listener: handleParenthesizedExpression(()
+                                  listener: beginBinaryExpression(+)
+                                  parsePrecedenceExpression(+, 14, true)
+                                    parseUnaryExpression(+, true)
+                                      parsePrimary(+, expression)
+                                        parseLiteralInt(+)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(+)
+                              ensureSemicolon(1)
+                              listener: handleExpressionStatement(;)
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(4, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(default)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, default)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(default)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'default'., null, {token: default}], default, default)
+                listener: handleInvalidMember(default)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(default, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(default)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(default, default, null, null, null, null, null, default, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(default, null, null, null, null, null, default, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(default)
+                  ensureIdentifier(default, methodDeclaration)
+                    insertSyntheticIdentifier(default, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+                                      listener: handleIdentifier(default, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(default)
+                                      parseArguments(default)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(default, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(do)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, do)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(do)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'do'., null, {token: do}], do, do)
+                listener: handleInvalidMember(do)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(do, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(do)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(do, do, null, null, null, null, null, do, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(do, null, null, null, null, null, do, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(do)
+                  ensureIdentifier(do, methodDeclaration)
+                    insertSyntheticIdentifier(do, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+                                      rewriter()
+                                      listener: handleIdentifier(, expression)
+                                    listener: handleNoTypeArguments(do)
+                                    parseArgumentsOpt()
+                                      listener: handleNoArguments(do)
+                                    listener: handleSend(, do)
+                          ensureSemicolon()
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], do, do)
+                            rewriter()
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, do)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseDoWhileStatement(;)
+                          listener: beginDoWhileStatement(do)
+                          listener: beginDoWhileStatementBody(()
+                          parseStatement(do)
+                            parseStatementX(do)
+                              parseExpressionStatementOrDeclaration(do, false)
+                                parseExpressionStatementOrDeclarationAfterModifiers(do, do, null, null, null, false)
+                                  looksLikeLocalFunction(()
+                                  parseExpressionStatement(do)
+                                    parseExpression(do)
+                                      parsePrecedenceExpression(do, 1, true)
+                                        parseUnaryExpression(do, true)
+                                          parsePrimary(do, expression)
+                                            parseParenthesizedExpressionOrFunctionLiteral(do)
+                                              parseParenthesizedExpression(do)
+                                                parseExpressionInParenthesis(do)
+                                                  parseExpressionInParenthesisRest(()
+                                                    parseExpression(()
+                                                      parsePrecedenceExpression((, 1, true)
+                                                        parseUnaryExpression((, true)
+                                                          parsePrimary((, expression)
+                                                            parseSendOrFunctionLiteral((, expression)
+                                                              parseSend((, expression)
+                                                                ensureIdentifier((, expression)
+                                                                  listener: handleIdentifier(x, expression)
+                                                                listener: handleNoTypeArguments(-)
+                                                                parseArgumentsOpt(x)
+                                                                  listener: handleNoArguments(-)
+                                                                listener: handleSend(x, -)
+                                                        listener: beginBinaryExpression(-)
+                                                        parsePrecedenceExpression(-, 14, true)
+                                                          parseUnaryExpression(-, true)
+                                                            parsePrimary(-, expression)
+                                                              parseLiteralInt(-)
+                                                                listener: handleLiteralInt(1)
+                                                        listener: endBinaryExpression(-)
+                                                    ensureCloseParen(1, ()
+                                                listener: handleParenthesizedExpression(()
+                                        listener: beginBinaryExpression(+)
+                                        parsePrecedenceExpression(+, 14, true)
+                                          parseUnaryExpression(+, true)
+                                            parsePrimary(+, expression)
+                                              parseLiteralInt(+)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(+)
+                                    ensureSemicolon(1)
+                                    listener: handleExpressionStatement(;)
+                          listener: endDoWhileStatementBody(;)
+                          reportRecoverableError(}, Message[ExpectedButGot, Expected 'while' before this., null, {string: while}])
+                            listener: handleRecoverableError(Message[ExpectedButGot, Expected 'while' before this., null, {string: while}], }, })
+                          rewriter()
+                          ensureParenthesizedCondition(while)
+                            reportRecoverableError(}, Message[ExpectedToken, Expected to find '('., null, {string: (}])
+                              listener: handleRecoverableError(Message[ExpectedToken, Expected to find '('., null, {string: (}], }, })
+                            rewriter()
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., null, {token: }}], }, })
+                                          rewriter()
+                                          listener: handleIdentifier(, expression)
+                                        listener: handleNoTypeArguments())
+                                        parseArgumentsOpt()
+                                          listener: handleNoArguments())
+                                        listener: handleSend(, ))
+                              ensureCloseParen(, ()
+                            listener: handleParenthesizedCondition(()
+                          ensureSemicolon())
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+                            rewriter()
+                          listener: endDoWhileStatement(do, while, ;)
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(3, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(else)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, else)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(else)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'else'., null, {token: else}], else, else)
+                listener: handleInvalidMember(else)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(else, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(else)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(else, else, null, null, null, null, null, else, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(else, null, null, null, null, null, else, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(else)
+                  ensureIdentifier(else, methodDeclaration)
+                    insertSyntheticIdentifier(else, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+                                      rewriter()
+                                      listener: handleIdentifier(, expression)
+                                    listener: handleNoTypeArguments(else)
+                                    parseArgumentsOpt()
+                                      listener: handleNoArguments(else)
+                                    listener: handleSend(, else)
+                          ensureSemicolon()
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+                            rewriter()
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, else)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseExpressionStatementOrDeclaration(;, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                            looksLikeLocalFunction(else)
+                            parseExpressionStatement(;)
+                              parseExpression(;)
+                                parsePrecedenceExpression(;, 1, true)
+                                  parseUnaryExpression(;, true)
+                                    parsePrimary(;, expression)
+                                      inPlainSync()
+                                      parseSend(;, expression)
+                                        ensureIdentifier(;, expression)
+                                          reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
+                                            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+                                          rewriter()
+                                          listener: handleIdentifier(, expression)
+                                        listener: handleNoTypeArguments(else)
+                                        parseArgumentsOpt()
+                                          listener: handleNoArguments(else)
+                                        listener: handleSend(, else)
+                              ensureSemicolon()
+                                reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                  listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+                                rewriter()
+                              listener: handleExpressionStatement(;)
+                    reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+                      listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], else, else)
+                    notEofOrValue(}, ()
+                    parseStatement(else)
+                      parseStatementX(else)
+                        parseExpressionStatementOrDeclaration(else, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers(else, else, null, null, null, false)
+                            looksLikeLocalFunction(()
+                            parseExpressionStatement(else)
+                              parseExpression(else)
+                                parsePrecedenceExpression(else, 1, true)
+                                  parseUnaryExpression(else, true)
+                                    parsePrimary(else, expression)
+                                      parseParenthesizedExpressionOrFunctionLiteral(else)
+                                        parseParenthesizedExpression(else)
+                                          parseExpressionInParenthesis(else)
+                                            parseExpressionInParenthesisRest(()
+                                              parseExpression(()
+                                                parsePrecedenceExpression((, 1, true)
+                                                  parseUnaryExpression((, true)
+                                                    parsePrimary((, expression)
+                                                      parseSendOrFunctionLiteral((, expression)
+                                                        parseSend((, expression)
+                                                          ensureIdentifier((, expression)
+                                                            listener: handleIdentifier(x, expression)
+                                                          listener: handleNoTypeArguments(-)
+                                                          parseArgumentsOpt(x)
+                                                            listener: handleNoArguments(-)
+                                                          listener: handleSend(x, -)
+                                                  listener: beginBinaryExpression(-)
+                                                  parsePrecedenceExpression(-, 14, true)
+                                                    parseUnaryExpression(-, true)
+                                                      parsePrimary(-, expression)
+                                                        parseLiteralInt(-)
+                                                          listener: handleLiteralInt(1)
+                                                  listener: endBinaryExpression(-)
+                                              ensureCloseParen(1, ()
+                                          listener: handleParenthesizedExpression(()
+                                  listener: beginBinaryExpression(+)
+                                  parsePrecedenceExpression(+, 14, true)
+                                    parseUnaryExpression(+, true)
+                                      parsePrimary(+, expression)
+                                        parseLiteralInt(+)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(+)
+                              ensureSemicolon(1)
+                              listener: handleExpressionStatement(;)
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(4, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(enum)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, enum)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(enum)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportAndSkipEnumInClass(enum)
+                  reportRecoverableError(enum, EnumInClass)
+                    listener: handleRecoverableError(EnumInClass, enum, enum)
+                  listener: handleInvalidMember(enum)
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(enum, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(enum)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(enum, enum, null, null, null, null, null, enum, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(enum, null, null, null, null, null, enum, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(enum)
+                  ensureIdentifier(enum, methodDeclaration)
+                    insertSyntheticIdentifier(enum, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(enum, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
+                                      listener: handleIdentifier(enum, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(enum)
+                                      parseArguments(enum)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(enum, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(extends)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, extends)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(extends)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'extends'., null, {token: extends}], extends, extends)
+                listener: handleInvalidMember(extends)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(extends, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(extends)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(extends, extends, null, null, null, null, null, extends, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(extends, null, null, null, null, null, extends, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(extends)
+                  ensureIdentifier(extends, methodDeclaration)
+                    insertSyntheticIdentifier(extends, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+                                      listener: handleIdentifier(extends, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(extends)
+                                      parseArguments(extends)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(extends, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(false)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, false)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(false)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(false, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'false'., null, {token: false}], false, false)
+                listener: handleInvalidMember(false)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(false, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(false)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(false, false, null, null, null, null, null, false, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(false, null, null, null, null, null, false, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(false)
+                  ensureIdentifier(false, methodDeclaration)
+                    insertSyntheticIdentifier(false, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  parseLiteralBool(return)
+                                    listener: handleLiteralBool(false)
+                              parseArgumentOrIndexStar(false, Instance of 'NoTypeParamOrArg', false)
+                                listener: handleNoTypeArguments(()
+                                parseArguments(false)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseSendOrFunctionLiteral((, expression)
+                                              parseSend((, expression)
+                                                ensureIdentifier((, expression)
+                                                  listener: handleIdentifier(x, expression)
+                                                listener: handleNoTypeArguments(-)
+                                                parseArgumentsOpt(x)
+                                                  listener: handleNoArguments(-)
+                                                listener: handleSend(x, -)
+                                        listener: beginBinaryExpression(-)
+                                        parsePrecedenceExpression(-, 14, true)
+                                          parseUnaryExpression(-, true)
+                                            parsePrimary(-, expression)
+                                              parseLiteralInt(-)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(-)
+                                    listener: endArguments(1, (, ))
+                                listener: handleSend((, ))
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(final)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(final, ;, null, null, null, null, final, final, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(;, null, null, null, null, final, final, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'final' here., Try removing 'final'., {token: final}], final, final)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(final)
+                  ensureIdentifier(final, methodDeclaration)
+                    insertSyntheticIdentifier(final, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+                                      rewriter()
+                                      listener: handleIdentifier(, expression)
+                                    listener: handleNoTypeArguments(final)
+                                    parseArgumentsOpt()
+                                      listener: handleNoArguments(final)
+                                    listener: handleSend(, final)
+                          ensureSemicolon()
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], final, final)
+                            rewriter()
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, final)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseExpressionStatementOrDeclarationAfterModifiers(final, ;, null, final, null, false)
+                          looksLikeLocalFunction(()
+                          listener: beginMetadataStar(final)
+                          listener: endMetadataStar(0)
+                          listener: handleNoType(final)
+                          listener: beginVariablesDeclaration((, null, final)
+                          parseVariablesDeclarationRest(final, true)
+                            parseOptionallyInitializedIdentifier(final)
+                              ensureIdentifier(final, localVariableDeclaration)
+                                reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                                rewriter()
+                                listener: handleIdentifier(, localVariableDeclaration)
+                              listener: beginInitializedIdentifier()
+                              parseVariableInitializerOpt()
+                                listener: handleNoVariableInitializer(x)
+                              listener: endInitializedIdentifier()
+                            ensureSemicolon()
+                              reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                              rewriter()
+                            listener: endVariablesDeclaration(1, ;)
+                    notEofOrValue(}, x)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                          looksLikeLocalFunction(x)
+                          parseExpressionStatement(;)
+                            parseExpression(;)
+                              parsePrecedenceExpression(;, 1, true)
+                                parseUnaryExpression(;, true)
+                                  parsePrimary(;, expression)
+                                    parseSendOrFunctionLiteral(;, expression)
+                                      parseSend(;, expression)
+                                        ensureIdentifier(;, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(-)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(-)
+                                        listener: handleSend(x, -)
+                                listener: beginBinaryExpression(-)
+                                parsePrecedenceExpression(-, 14, true)
+                                  parseUnaryExpression(-, true)
+                                    parsePrimary(-, expression)
+                                      parseLiteralInt(-)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(-)
+                            ensureSemicolon(1)
+                              reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                              rewriter()
+                            listener: handleExpressionStatement(;)
+                    notEofOrValue(}, ))
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseExpressionStatementOrDeclaration(;, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                            looksLikeLocalFunction())
+                            parseExpressionStatement(;)
+                              parseExpression(;)
+                                parsePrecedenceExpression(;, 1, true)
+                                  parseUnaryExpression(;, true)
+                                    parsePrimary(;, expression)
+                                      parseSend(;, expression)
+                                        ensureIdentifier(;, expression)
+                                          reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                                          rewriter()
+                                          listener: handleIdentifier(, expression)
+                                        listener: handleNoTypeArguments())
+                                        parseArgumentsOpt()
+                                          listener: handleNoArguments())
+                                        listener: handleSend(, ))
+                              ensureSemicolon()
+                                reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                  listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                                rewriter()
+                              listener: handleExpressionStatement(;)
+                    reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+                      listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+                    notEofOrValue(}, +)
+                    parseStatement())
+                      parseStatementX())
+                        parseExpressionStatementOrDeclaration(), false)
+                          parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                            looksLikeLocalFunction(+)
+                            parseExpressionStatement())
+                              parseExpression())
+                                parsePrecedenceExpression(), 1, true)
+                                  parseUnaryExpression(), true)
+                                    rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                      reportRecoverableError(+, UnsupportedPrefixPlus)
+                                        listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                      rewriter()
+                                    parsePrimary(), expression)
+                                      parseSendOrFunctionLiteral(), expression)
+                                        parseSend(), expression)
+                                          ensureIdentifier(), expression)
+                                            listener: handleIdentifier(, expression)
+                                          listener: handleNoTypeArguments(+)
+                                          parseArgumentsOpt()
+                                            listener: handleNoArguments(+)
+                                          listener: handleSend(, +)
+                                  listener: beginBinaryExpression(+)
+                                  parsePrecedenceExpression(+, 14, true)
+                                    parseUnaryExpression(+, true)
+                                      parsePrimary(+, expression)
+                                        parseLiteralInt(+)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(+)
+                              ensureSemicolon(1)
+                              listener: handleExpressionStatement(;)
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(6, {, })
+                  listener: endClassMethod(null, final, (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(finally)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, finally)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(finally)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'finally'., null, {token: finally}], finally, finally)
+                listener: handleInvalidMember(finally)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(finally, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(finally)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(finally, finally, null, null, null, null, null, finally, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(finally, null, null, null, null, null, finally, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(finally)
+                  ensureIdentifier(finally, methodDeclaration)
+                    insertSyntheticIdentifier(finally, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+                                      listener: handleIdentifier(finally, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(finally)
+                                      parseArguments(finally)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(finally, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(for)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, for)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(for)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'for'., null, {token: for}], for, for)
+                listener: handleInvalidMember(for)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(for, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(for)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(for, for, null, null, null, null, null, for, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(for, null, null, null, null, null, for, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(for)
+                  ensureIdentifier(for, methodDeclaration)
+                    insertSyntheticIdentifier(for, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+                                      rewriter()
+                                      listener: handleIdentifier(, expression)
+                                    listener: handleNoTypeArguments(for)
+                                    parseArgumentsOpt()
+                                      listener: handleNoArguments(for)
+                                    listener: handleSend(, for)
+                          ensureSemicolon()
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], for, for)
+                            rewriter()
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, for)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseForStatement(;, null)
+                          listener: beginForStatement(for)
+                          parseForLoopPartsStart(null, for)
+                            parseExpressionStatementOrDeclaration((, true)
+                              parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, true)
+                          parseForLoopPartsMid((, null, for)
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(-)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(-)
+                                        listener: handleSend(x, -)
+                                listener: beginBinaryExpression(-)
+                                parsePrecedenceExpression(-, 14, true)
+                                  parseUnaryExpression(-, true)
+                                    parsePrimary(-, expression)
+                                      parseLiteralInt(-)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(-)
+                            listener: handleForInitializerExpressionStatement(1, false)
+                          parseForRest(null, 1, for)
+                            parseForLoopPartsRest(1, for, null)
+                              ensureSemicolon(1)
+                                reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                  listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                                rewriter()
+                              parseExpressionStatement(;)
+                                parseExpression(;)
+                                  parsePrecedenceExpression(;, 1, true)
+                                    parseUnaryExpression(;, true)
+                                      parsePrimary(;, expression)
+                                        parseSend(;, expression)
+                                          ensureIdentifier(;, expression)
+                                            reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                                            rewriter()
+                                            listener: handleIdentifier(, expression)
+                                          listener: handleNoTypeArguments())
+                                          parseArgumentsOpt()
+                                            listener: handleNoArguments())
+                                          listener: handleSend(, ))
+                                ensureSemicolon()
+                                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                                  rewriter()
+                                listener: handleExpressionStatement(;)
+                              listener: handleForLoopParts(for, (, ;, 0)
+                            listener: beginForStatementBody(+)
+                            parseStatement())
+                              parseStatementX())
+                                parseExpressionStatementOrDeclaration(), false)
+                                  parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                                    looksLikeLocalFunction(+)
+                                    parseExpressionStatement())
+                                      parseExpression())
+                                        parsePrecedenceExpression(), 1, true)
+                                          parseUnaryExpression(), true)
+                                            rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                              reportRecoverableError(+, UnsupportedPrefixPlus)
+                                                listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                              rewriter()
+                                            parsePrimary(), expression)
+                                              parseSendOrFunctionLiteral(), expression)
+                                                parseSend(), expression)
+                                                  ensureIdentifier(), expression)
+                                                    listener: handleIdentifier(, expression)
+                                                  listener: handleNoTypeArguments(+)
+                                                  parseArgumentsOpt()
+                                                    listener: handleNoArguments(+)
+                                                  listener: handleSend(, +)
+                                          listener: beginBinaryExpression(+)
+                                          parsePrecedenceExpression(+, 14, true)
+                                            parseUnaryExpression(+, true)
+                                              parsePrimary(+, expression)
+                                                parseLiteralInt(+)
+                                                  listener: handleLiteralInt(1)
+                                          listener: endBinaryExpression(+)
+                                      ensureSemicolon(1)
+                                      listener: handleExpressionStatement(;)
+                            listener: endForStatementBody(})
+                            listener: endForStatement(})
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(3, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(if)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, if)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(if)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'if'., null, {token: if}], if, if)
+                listener: handleInvalidMember(if)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(if, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(if)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(if, if, null, null, null, null, null, if, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(if, null, null, null, null, null, if, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(if)
+                  ensureIdentifier(if, methodDeclaration)
+                    insertSyntheticIdentifier(if, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+                                      rewriter()
+                                      listener: handleIdentifier(, expression)
+                                    listener: handleNoTypeArguments(if)
+                                    parseArgumentsOpt()
+                                      listener: handleNoArguments(if)
+                                    listener: handleSend(, if)
+                          ensureSemicolon()
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], if, if)
+                            rewriter()
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, if)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseIfStatement(;)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(-)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(-)
+                                          listener: handleSend(x, -)
+                                  listener: beginBinaryExpression(-)
+                                  parsePrecedenceExpression(-, 14, true)
+                                    parseUnaryExpression(-, true)
+                                      parsePrimary(-, expression)
+                                        parseLiteralInt(-)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(-)
+                              ensureCloseParen(1, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(+)
+                          parseStatement())
+                            parseStatementX())
+                              parseExpressionStatementOrDeclaration(), false)
+                                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                                  looksLikeLocalFunction(+)
+                                  parseExpressionStatement())
+                                    parseExpression())
+                                      parsePrecedenceExpression(), 1, true)
+                                        parseUnaryExpression(), true)
+                                          rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                            reportRecoverableError(+, UnsupportedPrefixPlus)
+                                              listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                            rewriter()
+                                          parsePrimary(), expression)
+                                            parseSendOrFunctionLiteral(), expression)
+                                              parseSend(), expression)
+                                                ensureIdentifier(), expression)
+                                                  listener: handleIdentifier(, expression)
+                                                listener: handleNoTypeArguments(+)
+                                                parseArgumentsOpt()
+                                                  listener: handleNoArguments(+)
+                                                listener: handleSend(, +)
+                                        listener: beginBinaryExpression(+)
+                                        parsePrecedenceExpression(+, 14, true)
+                                          parseUnaryExpression(+, true)
+                                            parsePrimary(+, expression)
+                                              parseLiteralInt(+)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(+)
+                                    ensureSemicolon(1)
+                                    listener: handleExpressionStatement(;)
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(3, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(in)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, in)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(in)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'in'., null, {token: in}], in, in)
+                listener: handleInvalidMember(in)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(in, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(in)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(in, in, null, null, null, null, null, in, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(in, null, null, null, null, null, in, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(in)
+                  ensureIdentifier(in, methodDeclaration)
+                    insertSyntheticIdentifier(in, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+                                      listener: handleIdentifier(in, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(in)
+                                      parseArguments(in)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(in, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(is)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, is)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(is)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'is'., null, {token: is}], is, is)
+                listener: handleInvalidMember(is)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(is, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(is)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(is, is, null, null, null, null, null, is, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(is, null, null, null, null, null, is, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(is)
+                  ensureIdentifier(is, methodDeclaration)
+                    insertSyntheticIdentifier(is, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+                                      rewriter()
+                                      listener: handleIdentifier(, expression)
+                                    listener: handleNoTypeArguments(is)
+                                    parseArgumentsOpt()
+                                      listener: handleNoArguments(is)
+                                    listener: handleSend(, is)
+                              parseIsOperatorRest()
+                                listener: beginIsOperatorType(is)
+                                computeTypeAfterIsOrAs(is)
+                                reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+                                  listener: handleRecoverableError(Message[ExpectedType, Expected a type, but got '('., null, {token: (}], (, ()
+                                rewriter()
+                                listener: handleIdentifier(, typeReference)
+                                listener: handleNoTypeArguments(()
+                                listener: handleType(, null)
+                                listener: endIsOperatorType(is)
+                                listener: handleIsOperator(is, null)
+                                skipChainedAsIsOperators()
+                          ensureSemicolon()
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
+                            rewriter()
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, ()
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseExpressionStatementOrDeclaration(;, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                            looksLikeLocalFunction(()
+                            parseExpressionStatement(;)
+                              parseExpression(;)
+                                parsePrecedenceExpression(;, 1, true)
+                                  parseUnaryExpression(;, true)
+                                    parsePrimary(;, expression)
+                                      parseParenthesizedExpressionOrFunctionLiteral(;)
+                                        parseParenthesizedExpression(;)
+                                          parseExpressionInParenthesis(;)
+                                            parseExpressionInParenthesisRest(()
+                                              parseExpression(()
+                                                parsePrecedenceExpression((, 1, true)
+                                                  parseUnaryExpression((, true)
+                                                    parsePrimary((, expression)
+                                                      parseSendOrFunctionLiteral((, expression)
+                                                        parseSend((, expression)
+                                                          ensureIdentifier((, expression)
+                                                            listener: handleIdentifier(x, expression)
+                                                          listener: handleNoTypeArguments(-)
+                                                          parseArgumentsOpt(x)
+                                                            listener: handleNoArguments(-)
+                                                          listener: handleSend(x, -)
+                                                  listener: beginBinaryExpression(-)
+                                                  parsePrecedenceExpression(-, 14, true)
+                                                    parseUnaryExpression(-, true)
+                                                      parsePrimary(-, expression)
+                                                        parseLiteralInt(-)
+                                                          listener: handleLiteralInt(1)
+                                                  listener: endBinaryExpression(-)
+                                              ensureCloseParen(1, ()
+                                          listener: handleParenthesizedExpression(()
+                                  listener: beginBinaryExpression(+)
+                                  parsePrecedenceExpression(+, 14, true)
+                                    parseUnaryExpression(+, true)
+                                      parsePrimary(+, expression)
+                                        parseLiteralInt(+)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(+)
+                              ensureSemicolon(1)
+                              listener: handleExpressionStatement(;)
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(3, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(new)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, new)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(new)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'new'., null, {token: new}], new, new)
+                listener: handleInvalidMember(new)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(new, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(new)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(new, new, null, null, null, null, null, new, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(new, null, null, null, null, null, new, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(new)
+                  ensureIdentifier(new, methodDeclaration)
+                    insertSyntheticIdentifier(new, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  parseNewExpression(return)
+                                    listener: beginNewExpression(new)
+                                    parseConstructorReference(new, null)
+                                      ensureIdentifier(new, constructorReference)
+                                        insertSyntheticIdentifier(new, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], messageOnToken: null)
+                                          reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                                            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                                          rewriter()
+                                        listener: handleIdentifier(, constructorReference)
+                                      listener: beginConstructorReference()
+                                      parseQualifiedRestOpt(, constructorReferenceContinuation)
+                                      listener: handleNoTypeArguments(()
+                                      listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                                      listener: endConstructorReference(, null, ()
+                                    parseConstructorInvocationArguments()
+                                      parseArgumentsRest(()
+                                        listener: beginArguments(()
+                                        parseExpression(()
+                                          parsePrecedenceExpression((, 1, true)
+                                            parseUnaryExpression((, true)
+                                              parsePrimary((, expression)
+                                                parseSendOrFunctionLiteral((, expression)
+                                                  parseSend((, expression)
+                                                    ensureIdentifier((, expression)
+                                                      listener: handleIdentifier(x, expression)
+                                                    listener: handleNoTypeArguments(-)
+                                                    parseArgumentsOpt(x)
+                                                      listener: handleNoArguments(-)
+                                                    listener: handleSend(x, -)
+                                            listener: beginBinaryExpression(-)
+                                            parsePrecedenceExpression(-, 14, true)
+                                              parseUnaryExpression(-, true)
+                                                parsePrimary(-, expression)
+                                                  parseLiteralInt(-)
+                                                    listener: handleLiteralInt(1)
+                                            listener: endBinaryExpression(-)
+                                        listener: endArguments(1, (, ))
+                                    listener: endNewExpression(new)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(null)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, null)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(null)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(null, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'null'., null, {token: null}], null, null)
+                listener: handleInvalidMember(null)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(null, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(null)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(null, null, null, null, null, null, null, null, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(null, null, null, null, null, null, null, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(null)
+                  ensureIdentifier(null, methodDeclaration)
+                    insertSyntheticIdentifier(null, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  parseLiteralNull(return)
+                                    listener: handleLiteralNull(null)
+                              parseArgumentOrIndexStar(null, Instance of 'NoTypeParamOrArg', false)
+                                listener: handleNoTypeArguments(()
+                                parseArguments(null)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseSendOrFunctionLiteral((, expression)
+                                              parseSend((, expression)
+                                                ensureIdentifier((, expression)
+                                                  listener: handleIdentifier(x, expression)
+                                                listener: handleNoTypeArguments(-)
+                                                parseArgumentsOpt(x)
+                                                  listener: handleNoArguments(-)
+                                                listener: handleSend(x, -)
+                                        listener: beginBinaryExpression(-)
+                                        parsePrecedenceExpression(-, 14, true)
+                                          parseUnaryExpression(-, true)
+                                            parsePrimary(-, expression)
+                                              parseLiteralInt(-)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(-)
+                                    listener: endArguments(1, (, ))
+                                listener: handleSend((, ))
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(rethrow)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, rethrow)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(rethrow)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+                listener: handleInvalidMember(rethrow)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(rethrow, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(rethrow)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(rethrow, rethrow, null, null, null, null, null, rethrow, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(rethrow, null, null, null, null, null, rethrow, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(rethrow)
+                  ensureIdentifier(rethrow, methodDeclaration)
+                    insertSyntheticIdentifier(rethrow, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+                                      listener: handleIdentifier(rethrow, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(rethrow)
+                                      parseArguments(rethrow)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(rethrow, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(return)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, return)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(return)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'return'., null, {token: return}], return, return)
+                listener: handleInvalidMember(return)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(return, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(return)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(return, return, null, null, null, null, null, return, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(return, null, null, null, null, null, return, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(return)
+                  ensureIdentifier(return, methodDeclaration)
+                    insertSyntheticIdentifier(return, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
+                                    listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'return'., null, {token: return}], return, return)
+                                  parsePrimary(return, expression)
+                                    parseParenthesizedExpressionOrFunctionLiteral(return)
+                                      parseParenthesizedExpression(return)
+                                        parseExpressionInParenthesis(return)
+                                          parseExpressionInParenthesisRest(()
+                                            parseExpression(()
+                                              parsePrecedenceExpression((, 1, true)
+                                                parseUnaryExpression((, true)
+                                                  parsePrimary((, expression)
+                                                    parseSendOrFunctionLiteral((, expression)
+                                                      parseSend((, expression)
+                                                        ensureIdentifier((, expression)
+                                                          listener: handleIdentifier(x, expression)
+                                                        listener: handleNoTypeArguments(-)
+                                                        parseArgumentsOpt(x)
+                                                          listener: handleNoArguments(-)
+                                                        listener: handleSend(x, -)
+                                                listener: beginBinaryExpression(-)
+                                                parsePrecedenceExpression(-, 14, true)
+                                                  parseUnaryExpression(-, true)
+                                                    parsePrimary(-, expression)
+                                                      parseLiteralInt(-)
+                                                        listener: handleLiteralInt(1)
+                                                listener: endBinaryExpression(-)
+                                            ensureCloseParen(1, ()
+                                        listener: handleParenthesizedExpression(()
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(super)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, super)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(super)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'super'., null, {token: super}], super, super)
+                listener: handleInvalidMember(super)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(super, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(super)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(super, super, null, null, null, null, null, super, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(super, null, null, null, null, null, super, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(super)
+                  ensureIdentifier(super, methodDeclaration)
+                    insertSyntheticIdentifier(super, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  parseSuperExpression(return, expression)
+                                    listener: handleSuperExpression(super, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArguments(super)
+                                      parseArgumentsRest(()
+                                        listener: beginArguments(()
+                                        parseExpression(()
+                                          parsePrecedenceExpression((, 1, true)
+                                            parseUnaryExpression((, true)
+                                              parsePrimary((, expression)
+                                                parseSendOrFunctionLiteral((, expression)
+                                                  parseSend((, expression)
+                                                    ensureIdentifier((, expression)
+                                                      listener: handleIdentifier(x, expression)
+                                                    listener: handleNoTypeArguments(-)
+                                                    parseArgumentsOpt(x)
+                                                      listener: handleNoArguments(-)
+                                                    listener: handleSend(x, -)
+                                            listener: beginBinaryExpression(-)
+                                            parsePrecedenceExpression(-, 14, true)
+                                              parseUnaryExpression(-, true)
+                                                parsePrimary(-, expression)
+                                                  parseLiteralInt(-)
+                                                    listener: handleLiteralInt(1)
+                                            listener: endBinaryExpression(-)
+                                        listener: endArguments(1, (, ))
+                                    listener: handleSend(super, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(switch)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, switch)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(switch)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'switch'., null, {token: switch}], switch, switch)
+                listener: handleInvalidMember(switch)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(switch, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(switch)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(switch, switch, null, null, null, null, null, switch, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(switch, null, null, null, null, null, switch, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(switch)
+                  ensureIdentifier(switch, methodDeclaration)
+                    insertSyntheticIdentifier(switch, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+                                      rewriter()
+                                      listener: handleIdentifier(, expression)
+                                    listener: handleNoTypeArguments(switch)
+                                    parseArgumentsOpt()
+                                      listener: handleNoArguments(switch)
+                                    listener: handleSend(, switch)
+                          ensureSemicolon()
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], switch, switch)
+                            rewriter()
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, switch)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseSwitchStatement(;)
+                          listener: beginSwitchStatement(switch)
+                          ensureParenthesizedCondition(switch)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(-)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(-)
+                                          listener: handleSend(x, -)
+                                  listener: beginBinaryExpression(-)
+                                  parsePrecedenceExpression(-, 14, true)
+                                    parseUnaryExpression(-, true)
+                                      parsePrimary(-, expression)
+                                        parseLiteralInt(-)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(-)
+                              ensureCloseParen(1, ()
+                            listener: handleParenthesizedCondition(()
+                          parseSwitchBlock())
+                            ensureBlock(), null, switch statement)
+                              reportRecoverableError(), Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}])
+                                listener: handleRecoverableError(Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}], ), ))
+                              insertBlock())
+                                rewriter()
+                                rewriter()
+                            listener: beginSwitchBlock({)
+                            notEofOrValue(}, })
+                            listener: endSwitchBlock(0, {, })
+                          listener: endSwitchStatement(switch, })
+                    notEofOrValue(}, +)
+                    parseStatement(})
+                      parseStatementX(})
+                        parseExpressionStatementOrDeclaration(}, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+                            looksLikeLocalFunction(+)
+                            parseExpressionStatement(})
+                              parseExpression(})
+                                parsePrecedenceExpression(}, 1, true)
+                                  parseUnaryExpression(}, true)
+                                    rewriteAndRecover(}, UnsupportedPrefixPlus, )
+                                      reportRecoverableError(+, UnsupportedPrefixPlus)
+                                        listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                      rewriter()
+                                    parsePrimary(}, expression)
+                                      parseSendOrFunctionLiteral(}, expression)
+                                        parseSend(}, expression)
+                                          ensureIdentifier(}, expression)
+                                            listener: handleIdentifier(, expression)
+                                          listener: handleNoTypeArguments(+)
+                                          parseArgumentsOpt()
+                                            listener: handleNoArguments(+)
+                                          listener: handleSend(, +)
+                                  listener: beginBinaryExpression(+)
+                                  parsePrecedenceExpression(+, 14, true)
+                                    parseUnaryExpression(+, true)
+                                      parsePrimary(+, expression)
+                                        parseLiteralInt(+)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(+)
+                              ensureSemicolon(1)
+                              listener: handleExpressionStatement(;)
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(4, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(int, }, null, null, null, null, null, }, Instance of 'SimpleType', null, DeclarationKind.Class, WrapperClass)
+                parseFields(}, null, null, null, null, null, }, Instance of 'SimpleType', this, DeclarationKind.Class, WrapperClass)
+                  listener: handleIdentifier(int, typeReference)
+                  listener: handleNoTypeArguments(this)
+                  listener: handleType(int, null)
+                  ensureIdentifier(int, fieldDeclaration)
+                    reportRecoverableErrorWithToken(this, Instance of 'Template<(Token) => Message>')
+                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
+                    listener: handleIdentifier(this, fieldDeclaration)
+                  parseFieldInitializerOpt(this, this, null, null, DeclarationKind.Class, WrapperClass)
+                    listener: handleNoFieldInitializer(()
+                  ensureSemicolon(this)
+                    reportRecoverableError(this, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], this, this)
+                    rewriter()
+                  listener: endClassFields(null, null, null, null, 1, int, ;)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(;)
+                  ensureIdentifier(;, methodDeclaration)
+                    insertSyntheticIdentifier(;, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  parseThisExpression(return, expression)
+                                    listener: handleThisExpression(this, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArguments(this)
+                                      parseArgumentsRest(()
+                                        listener: beginArguments(()
+                                        parseExpression(()
+                                          parsePrecedenceExpression((, 1, true)
+                                            parseUnaryExpression((, true)
+                                              parsePrimary((, expression)
+                                                parseSendOrFunctionLiteral((, expression)
+                                                  parseSend((, expression)
+                                                    ensureIdentifier((, expression)
+                                                      listener: handleIdentifier(x, expression)
+                                                    listener: handleNoTypeArguments(-)
+                                                    parseArgumentsOpt(x)
+                                                      listener: handleNoArguments(-)
+                                                    listener: handleSend(x, -)
+                                            listener: beginBinaryExpression(-)
+                                            parsePrecedenceExpression(-, 14, true)
+                                              parseUnaryExpression(-, true)
+                                                parsePrimary(-, expression)
+                                                  parseLiteralInt(-)
+                                                    listener: handleLiteralInt(1)
+                                            listener: endBinaryExpression(-)
+                                        listener: endArguments(1, (, ))
+                                    listener: handleSend(this, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(throw)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, throw)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(throw)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(throw, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'throw'., null, {token: throw}], throw, throw)
+                listener: handleInvalidMember(throw)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(throw, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(throw)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(throw, throw, null, null, null, null, null, throw, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(throw, null, null, null, null, null, throw, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(throw)
+                  ensureIdentifier(throw, methodDeclaration)
+                    insertSyntheticIdentifier(throw, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parseThrowExpression(return, true)
+                              parseExpression(throw)
+                                parsePrecedenceExpression(throw, 1, true)
+                                  parseUnaryExpression(throw, true)
+                                    parsePrimary(throw, expression)
+                                      parseParenthesizedExpressionOrFunctionLiteral(throw)
+                                        parseParenthesizedExpression(throw)
+                                          parseExpressionInParenthesis(throw)
+                                            parseExpressionInParenthesisRest(()
+                                              parseExpression(()
+                                                parsePrecedenceExpression((, 1, true)
+                                                  parseUnaryExpression((, true)
+                                                    parsePrimary((, expression)
+                                                      parseSendOrFunctionLiteral((, expression)
+                                                        parseSend((, expression)
+                                                          ensureIdentifier((, expression)
+                                                            listener: handleIdentifier(x, expression)
+                                                          listener: handleNoTypeArguments(-)
+                                                          parseArgumentsOpt(x)
+                                                            listener: handleNoArguments(-)
+                                                          listener: handleSend(x, -)
+                                                  listener: beginBinaryExpression(-)
+                                                  parsePrecedenceExpression(-, 14, true)
+                                                    parseUnaryExpression(-, true)
+                                                      parsePrimary(-, expression)
+                                                        parseLiteralInt(-)
+                                                          listener: handleLiteralInt(1)
+                                                  listener: endBinaryExpression(-)
+                                              ensureCloseParen(1, ()
+                                          listener: handleParenthesizedExpression(()
+                                  listener: beginBinaryExpression(+)
+                                  parsePrecedenceExpression(+, 14, true)
+                                    parseUnaryExpression(+, true)
+                                      parsePrimary(+, expression)
+                                        parseLiteralInt(+)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(+)
+                              listener: handleThrowExpression(throw, ;)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(true)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, true)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(true)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(true, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'true'., null, {token: true}], true, true)
+                listener: handleInvalidMember(true)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(true, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(true)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(true, true, null, null, null, null, null, true, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(true, null, null, null, null, null, true, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(true)
+                  ensureIdentifier(true, methodDeclaration)
+                    insertSyntheticIdentifier(true, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  parseLiteralBool(return)
+                                    listener: handleLiteralBool(true)
+                              parseArgumentOrIndexStar(true, Instance of 'NoTypeParamOrArg', false)
+                                listener: handleNoTypeArguments(()
+                                parseArguments(true)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseSendOrFunctionLiteral((, expression)
+                                              parseSend((, expression)
+                                                ensureIdentifier((, expression)
+                                                  listener: handleIdentifier(x, expression)
+                                                listener: handleNoTypeArguments(-)
+                                                parseArgumentsOpt(x)
+                                                  listener: handleNoArguments(-)
+                                                listener: handleSend(x, -)
+                                        listener: beginBinaryExpression(-)
+                                        parsePrecedenceExpression(-, 14, true)
+                                          parseUnaryExpression(-, true)
+                                            parsePrimary(-, expression)
+                                              parseLiteralInt(-)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(-)
+                                    listener: endArguments(1, (, ))
+                                listener: handleSend((, ))
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(try)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, try)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(try)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'try'., null, {token: try}], try, try)
+                listener: handleInvalidMember(try)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(try, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(try)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(try, try, null, null, null, null, null, try, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(try, null, null, null, null, null, try, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(try)
+                  ensureIdentifier(try, methodDeclaration)
+                    insertSyntheticIdentifier(try, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+                                      rewriter()
+                                      listener: handleIdentifier(, expression)
+                                    listener: handleNoTypeArguments(try)
+                                    parseArgumentsOpt()
+                                      listener: handleNoArguments(try)
+                                    listener: handleSend(, try)
+                          ensureSemicolon()
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], try, try)
+                            rewriter()
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, try)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseTryStatement(;)
+                          listener: beginTryStatement(try)
+                          parseBlock(try, BlockKind(try statement))
+                            ensureBlock(try, null, try statement)
+                              reportRecoverableError(try, Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}])
+                                listener: handleRecoverableError(Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}], try, try)
+                              insertBlock(try)
+                                rewriter()
+                                rewriter()
+                            listener: beginBlock({, BlockKind(try statement))
+                            notEofOrValue(}, })
+                            listener: endBlock(0, {, }, BlockKind(try statement))
+                          reportRecoverableError(try, OnlyTry)
+                            listener: handleRecoverableError(OnlyTry, try, try)
+                          listener: endTryStatement(0, try, null)
+                    notEofOrValue(}, ()
+                    parseStatement(})
+                      parseStatementX(})
+                        parseExpressionStatementOrDeclaration(}, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+                            looksLikeLocalFunction(()
+                            parseExpressionStatement(})
+                              parseExpression(})
+                                parsePrecedenceExpression(}, 1, true)
+                                  parseUnaryExpression(}, true)
+                                    parsePrimary(}, expression)
+                                      parseParenthesizedExpressionOrFunctionLiteral(})
+                                        parseParenthesizedExpression(})
+                                          parseExpressionInParenthesis(})
+                                            parseExpressionInParenthesisRest(()
+                                              parseExpression(()
+                                                parsePrecedenceExpression((, 1, true)
+                                                  parseUnaryExpression((, true)
+                                                    parsePrimary((, expression)
+                                                      parseSendOrFunctionLiteral((, expression)
+                                                        parseSend((, expression)
+                                                          ensureIdentifier((, expression)
+                                                            listener: handleIdentifier(x, expression)
+                                                          listener: handleNoTypeArguments(-)
+                                                          parseArgumentsOpt(x)
+                                                            listener: handleNoArguments(-)
+                                                          listener: handleSend(x, -)
+                                                  listener: beginBinaryExpression(-)
+                                                  parsePrecedenceExpression(-, 14, true)
+                                                    parseUnaryExpression(-, true)
+                                                      parsePrimary(-, expression)
+                                                        parseLiteralInt(-)
+                                                          listener: handleLiteralInt(1)
+                                                  listener: endBinaryExpression(-)
+                                              ensureCloseParen(1, ()
+                                          listener: handleParenthesizedExpression(()
+                                  listener: beginBinaryExpression(+)
+                                  parsePrecedenceExpression(+, 14, true)
+                                    parseUnaryExpression(+, true)
+                                      parsePrimary(+, expression)
+                                        parseLiteralInt(+)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(+)
+                              ensureSemicolon(1)
+                              listener: handleExpressionStatement(;)
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(4, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(var)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, var)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(var)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(var, ;, null, null, null, null, var, var, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(;, null, null, null, null, var, var, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  reportRecoverableError(var, VarReturnType)
+                    listener: handleRecoverableError(VarReturnType, var, var)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(var)
+                  ensureIdentifier(var, methodDeclaration)
+                    insertSyntheticIdentifier(var, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(var, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+                                      rewriter()
+                                      listener: handleIdentifier(, expression)
+                                    listener: handleNoTypeArguments(var)
+                                    parseArgumentsOpt()
+                                      listener: handleNoArguments(var)
+                                    listener: handleSend(, var)
+                          ensureSemicolon()
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], var, var)
+                            rewriter()
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, var)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+                          looksLikeLocalFunction(()
+                          listener: beginMetadataStar(var)
+                          listener: endMetadataStar(0)
+                          listener: handleNoType(var)
+                          listener: beginVariablesDeclaration((, null, var)
+                          parseVariablesDeclarationRest(var, true)
+                            parseOptionallyInitializedIdentifier(var)
+                              ensureIdentifier(var, localVariableDeclaration)
+                                reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                                rewriter()
+                                listener: handleIdentifier(, localVariableDeclaration)
+                              listener: beginInitializedIdentifier()
+                              parseVariableInitializerOpt()
+                                listener: handleNoVariableInitializer(x)
+                              listener: endInitializedIdentifier()
+                            ensureSemicolon()
+                              reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                              rewriter()
+                            listener: endVariablesDeclaration(1, ;)
+                    notEofOrValue(}, x)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                          looksLikeLocalFunction(x)
+                          parseExpressionStatement(;)
+                            parseExpression(;)
+                              parsePrecedenceExpression(;, 1, true)
+                                parseUnaryExpression(;, true)
+                                  parsePrimary(;, expression)
+                                    parseSendOrFunctionLiteral(;, expression)
+                                      parseSend(;, expression)
+                                        ensureIdentifier(;, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(-)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(-)
+                                        listener: handleSend(x, -)
+                                listener: beginBinaryExpression(-)
+                                parsePrecedenceExpression(-, 14, true)
+                                  parseUnaryExpression(-, true)
+                                    parsePrimary(-, expression)
+                                      parseLiteralInt(-)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(-)
+                            ensureSemicolon(1)
+                              reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                              rewriter()
+                            listener: handleExpressionStatement(;)
+                    notEofOrValue(}, ))
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseExpressionStatementOrDeclaration(;, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                            looksLikeLocalFunction())
+                            parseExpressionStatement(;)
+                              parseExpression(;)
+                                parsePrecedenceExpression(;, 1, true)
+                                  parseUnaryExpression(;, true)
+                                    parsePrimary(;, expression)
+                                      parseSend(;, expression)
+                                        ensureIdentifier(;, expression)
+                                          reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                                          rewriter()
+                                          listener: handleIdentifier(, expression)
+                                        listener: handleNoTypeArguments())
+                                        parseArgumentsOpt()
+                                          listener: handleNoArguments())
+                                        listener: handleSend(, ))
+                              ensureSemicolon()
+                                reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                  listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                                rewriter()
+                              listener: handleExpressionStatement(;)
+                    reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+                      listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+                    notEofOrValue(}, +)
+                    parseStatement())
+                      parseStatementX())
+                        parseExpressionStatementOrDeclaration(), false)
+                          parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                            looksLikeLocalFunction(+)
+                            parseExpressionStatement())
+                              parseExpression())
+                                parsePrecedenceExpression(), 1, true)
+                                  parseUnaryExpression(), true)
+                                    rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                      reportRecoverableError(+, UnsupportedPrefixPlus)
+                                        listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                      rewriter()
+                                    parsePrimary(), expression)
+                                      parseSendOrFunctionLiteral(), expression)
+                                        parseSend(), expression)
+                                          ensureIdentifier(), expression)
+                                            listener: handleIdentifier(, expression)
+                                          listener: handleNoTypeArguments(+)
+                                          parseArgumentsOpt()
+                                            listener: handleNoArguments(+)
+                                          listener: handleSend(, +)
+                                  listener: beginBinaryExpression(+)
+                                  parsePrecedenceExpression(+, 14, true)
+                                    parseUnaryExpression(+, true)
+                                      parsePrimary(+, expression)
+                                        parseLiteralInt(+)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(+)
+                              ensureSemicolon(1)
+                              listener: handleExpressionStatement(;)
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(6, {, })
+                  listener: endClassMethod(null, var, (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(void)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, void)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(void)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(void, ;, null, null, null, null, null, ;, Instance of 'VoidType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(;, null, null, null, null, null, ;, Instance of 'VoidType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleVoidKeyword(void)
+                  ensureIdentifier(void, methodDeclaration)
+                    insertSyntheticIdentifier(void, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  parseSendOrFunctionLiteral(return, expression)
+                                    parseSend(return, expression)
+                                      ensureIdentifier(return, expression)
+                                        reportRecoverableErrorWithToken(void, Instance of 'Template<(Token) => Message>')
+                                          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+                                        rewriter()
+                                        listener: handleIdentifier(, expression)
+                                      listener: handleNoTypeArguments(void)
+                                      parseArgumentsOpt()
+                                        listener: handleNoArguments(void)
+                                      listener: handleSend(, void)
+                          ensureSemicolon()
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void)
+                            rewriter()
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, void)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseExpressionStatementOrDeclaration(;, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                            looksLikeLocalFunction(()
+                            listener: beginMetadataStar(void)
+                            listener: endMetadataStar(0)
+                            listener: handleVoidKeyword(void)
+                            listener: beginVariablesDeclaration((, null, null)
+                            parseVariablesDeclarationRest(void, true)
+                              parseOptionallyInitializedIdentifier(void)
+                                ensureIdentifier(void, localVariableDeclaration)
+                                  reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+                                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                                  rewriter()
+                                  listener: handleIdentifier(, localVariableDeclaration)
+                                listener: beginInitializedIdentifier()
+                                parseVariableInitializerOpt()
+                                  listener: handleNoVariableInitializer(x)
+                                listener: endInitializedIdentifier()
+                              ensureSemicolon()
+                                reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                  listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                                rewriter()
+                              listener: endVariablesDeclaration(1, ;)
+                    notEofOrValue(}, x)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                          looksLikeLocalFunction(x)
+                          parseExpressionStatement(;)
+                            parseExpression(;)
+                              parsePrecedenceExpression(;, 1, true)
+                                parseUnaryExpression(;, true)
+                                  parsePrimary(;, expression)
+                                    parseSendOrFunctionLiteral(;, expression)
+                                      parseSend(;, expression)
+                                        ensureIdentifier(;, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(-)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(-)
+                                        listener: handleSend(x, -)
+                                listener: beginBinaryExpression(-)
+                                parsePrecedenceExpression(-, 14, true)
+                                  parseUnaryExpression(-, true)
+                                    parsePrimary(-, expression)
+                                      parseLiteralInt(-)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(-)
+                            ensureSemicolon(1)
+                              reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                              rewriter()
+                            listener: handleExpressionStatement(;)
+                    notEofOrValue(}, ))
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseExpressionStatementOrDeclaration(;, false)
+                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                            looksLikeLocalFunction())
+                            parseExpressionStatement(;)
+                              parseExpression(;)
+                                parsePrecedenceExpression(;, 1, true)
+                                  parseUnaryExpression(;, true)
+                                    parsePrimary(;, expression)
+                                      parseSend(;, expression)
+                                        ensureIdentifier(;, expression)
+                                          reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                                          rewriter()
+                                          listener: handleIdentifier(, expression)
+                                        listener: handleNoTypeArguments())
+                                        parseArgumentsOpt()
+                                          listener: handleNoArguments())
+                                        listener: handleSend(, ))
+                              ensureSemicolon()
+                                reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                  listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                                rewriter()
+                              listener: handleExpressionStatement(;)
+                    reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+                      listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+                    notEofOrValue(}, +)
+                    parseStatement())
+                      parseStatementX())
+                        parseExpressionStatementOrDeclaration(), false)
+                          parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                            looksLikeLocalFunction(+)
+                            parseExpressionStatement())
+                              parseExpression())
+                                parsePrecedenceExpression(), 1, true)
+                                  parseUnaryExpression(), true)
+                                    rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                      reportRecoverableError(+, UnsupportedPrefixPlus)
+                                        listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                      rewriter()
+                                    parsePrimary(), expression)
+                                      parseSendOrFunctionLiteral(), expression)
+                                        parseSend(), expression)
+                                          ensureIdentifier(), expression)
+                                            listener: handleIdentifier(, expression)
+                                          listener: handleNoTypeArguments(+)
+                                          parseArgumentsOpt()
+                                            listener: handleNoArguments(+)
+                                          listener: handleSend(, +)
+                                  listener: beginBinaryExpression(+)
+                                  parsePrecedenceExpression(+, 14, true)
+                                    parseUnaryExpression(+, true)
+                                      parsePrimary(+, expression)
+                                        parseLiteralInt(+)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(+)
+                              ensureSemicolon(1)
+                              listener: handleExpressionStatement(;)
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(6, {, })
+                  listener: endClassMethod(null, void, (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(while)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, while)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(while)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'while'., null, {token: while}], while, while)
+                listener: handleInvalidMember(while)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(while, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(while)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(while, while, null, null, null, null, null, while, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(while, null, null, null, null, null, while, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(while)
+                  ensureIdentifier(while, methodDeclaration)
+                    insertSyntheticIdentifier(while, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+                                      rewriter()
+                                      listener: handleIdentifier(, expression)
+                                    listener: handleNoTypeArguments(while)
+                                    parseArgumentsOpt()
+                                      listener: handleNoArguments(while)
+                                    listener: handleSend(, while)
+                          ensureSemicolon()
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], while, while)
+                            rewriter()
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, while)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseWhileStatement(;)
+                          listener: beginWhileStatement(while)
+                          ensureParenthesizedCondition(while)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(-)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(-)
+                                          listener: handleSend(x, -)
+                                  listener: beginBinaryExpression(-)
+                                  parsePrecedenceExpression(-, 14, true)
+                                    parseUnaryExpression(-, true)
+                                      parsePrimary(-, expression)
+                                        parseLiteralInt(-)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(-)
+                              ensureCloseParen(1, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginWhileStatementBody(+)
+                          parseStatement())
+                            parseStatementX())
+                              parseExpressionStatementOrDeclaration(), false)
+                                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                                  looksLikeLocalFunction(+)
+                                  parseExpressionStatement())
+                                    parseExpression())
+                                      parsePrecedenceExpression(), 1, true)
+                                        parseUnaryExpression(), true)
+                                          rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                            reportRecoverableError(+, UnsupportedPrefixPlus)
+                                              listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                            rewriter()
+                                          parsePrimary(), expression)
+                                            parseSendOrFunctionLiteral(), expression)
+                                              parseSend(), expression)
+                                                ensureIdentifier(), expression)
+                                                  listener: handleIdentifier(, expression)
+                                                listener: handleNoTypeArguments(+)
+                                                parseArgumentsOpt()
+                                                  listener: handleNoArguments(+)
+                                                listener: handleSend(, +)
+                                        listener: beginBinaryExpression(+)
+                                        parsePrecedenceExpression(+, 14, true)
+                                          parseUnaryExpression(+, true)
+                                            parsePrimary(+, expression)
+                                              parseLiteralInt(+)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(+)
+                                    ensureSemicolon(1)
+                                    listener: handleExpressionStatement(;)
+                          listener: endWhileStatementBody(})
+                          listener: endWhileStatement(while, })
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(3, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
+                reportRecoverableError(int, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+                listener: handleNoType(})
+                ensureIdentifier(}, fieldDeclaration)
+                  listener: handleIdentifier(int, fieldDeclaration)
+                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: handleNoFieldInitializer(with)
+                ensureSemicolon(int)
+                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, with)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(with)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
+                listener: handleInvalidMember(with)
+                listener: endMember()
+            notEofOrValue(}, ()
+            parseClassOrMixinOrExtensionMemberImpl(with, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(with)
+                listener: beginMetadataStar(()
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(with, with, null, null, null, null, null, with, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
+                parseMethod(with, null, null, null, null, null, with, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                  listener: beginMethod(null, null, null, null, null, ()
+                  listener: handleNoType(with)
+                  ensureIdentifier(with, methodDeclaration)
+                    insertSyntheticIdentifier(with, methodDeclaration, message: null, messageOnToken: null)
+                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                    listener: handleIdentifier(, methodDeclaration)
+                  parseQualifiedRestOpt(, methodDeclarationContinuation)
+                  parseMethodTypeVar()
+                    listener: handleNoTypeVariables(()
+                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
+                    parseFormalParameters(, MemberKind.NonStaticMethod)
+                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                          parseMetadataStar(()
+                            listener: beginMetadataStar(int)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleIdentifier(int, typeReference)
+                          listener: handleNoTypeArguments(x)
+                          listener: handleType(int, null)
+                          ensureIdentifier(int, formalParameterDeclaration)
+                            listener: handleIdentifier(x, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue())
+                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                  parseInitializersOpt())
+                    listener: handleNoInitializers()
+                  parseAsyncModifierOpt())
+                    listener: handleAsyncModifier(null, null)
+                    inPlainSync()
+                  inPlainSync()
+                  parseFunctionBody(), false, true)
+                    listener: beginBlockFunctionBody({)
+                    notEofOrValue(}, if)
+                    parseStatement({)
+                      parseStatementX({)
+                        parseIfStatement({)
+                          listener: beginIfStatement(if)
+                          ensureParenthesizedCondition(if)
+                            parseExpressionInParenthesisRest(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(==)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(==)
+                                          listener: handleSend(x, ==)
+                                  listener: beginBinaryExpression(==)
+                                  parsePrecedenceExpression(==, 8, true)
+                                    parseUnaryExpression(==, true)
+                                      parsePrimary(==, expression)
+                                        parseLiteralInt(==)
+                                          listener: handleLiteralInt(0)
+                                  listener: endBinaryExpression(==)
+                              ensureCloseParen(0, ()
+                            listener: handleParenthesizedCondition(()
+                          listener: beginThenStatement(return)
+                          parseStatement())
+                            parseStatementX())
+                              parseReturnStatement())
+                                listener: beginReturnStatement(return)
+                                parseExpression(return)
+                                  parsePrecedenceExpression(return, 1, true)
+                                    parseUnaryExpression(return, true)
+                                      parsePrimary(return, expression)
+                                        parseLiteralInt(return)
+                                          listener: handleLiteralInt(42)
+                                ensureSemicolon(42)
+                                listener: endReturnStatement(true, return, ;)
+                                inGenerator()
+                          listener: endThenStatement(;)
+                          listener: endIfStatement(if, null)
+                    notEofOrValue(}, return)
+                    parseStatement(;)
+                      parseStatementX(;)
+                        parseReturnStatement(;)
+                          listener: beginReturnStatement(return)
+                          parseExpression(return)
+                            parsePrecedenceExpression(return, 1, true)
+                              parseUnaryExpression(return, true)
+                                parsePrimary(return, expression)
+                                  inPlainSync()
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+                                      listener: handleIdentifier(with, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(with)
+                                      parseArguments(with)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(with, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: endReturnStatement(true, return, ;)
+                          inGenerator()
+                    notEofOrValue(}, })
+                    listener: endBlockFunctionBody(2, {, })
+                  listener: endClassMethod(null, , (, null, })
+                listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 94, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.parser.expect
new file mode 100644
index 0000000..2d842d0
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.parser.expect
@@ -0,0 +1,335 @@
+NOTICE: Stream was rewritten by parser!
+
+class WrapperClass {
+int ;assert(int x) {
+if (x == 0) return 42;
+return assert(x-1) + 1;
+}
+
+int ;break(int x) {
+if (x == 0) return 42;
+return ;break;(x-1) + 1;
+}
+
+int ;case(int x) {
+if (x == 0) return 42;
+return case(x-1) + 1;
+}
+
+int ;catch(int x) {
+if (x == 0) return 42;
+return catch(x-1) + 1;
+}
+
+int ;class(int x) {
+if (x == 0) return 42;
+return class(x-1) + 1;
+}
+
+int ;const(int x) {
+if (x == 0) return 42;
+return const(x-1) + 1;
+}
+
+int ;continue(int x) {
+if (x == 0) return 42;
+return ;continue;(x-1) + 1;
+}
+
+int ;default(int x) {
+if (x == 0) return 42;
+return default(x-1) + 1;
+}
+
+int ;do(int x) {
+if (x == 0) return 42;
+return ;do(x-1) + 1;
+while();}
+
+int ;else(int x) {
+if (x == 0) return 42;
+return ;;else(x-1) + 1;
+}
+
+int ;enum(int x) {
+if (x == 0) return 42;
+return enum(x-1) + 1;
+}
+
+int ;extends(int x) {
+if (x == 0) return 42;
+return extends(x-1) + 1;
+}
+
+int ;false(int x) {
+if (x == 0) return 42;
+return false(x-1) + 1;
+}
+
+int ;final(int x) {
+if (x == 0) return 42;
+return ;final(;x-1;;) + 1;
+}
+
+int ;finally(int x) {
+if (x == 0) return 42;
+return finally(x-1) + 1;
+}
+
+int ;for(int x) {
+if (x == 0) return 42;
+return ;for(x-1;;) + 1;
+}
+
+int ;if(int x) {
+if (x == 0) return 42;
+return ;if(x-1) + 1;
+}
+
+int ;in(int x) {
+if (x == 0) return 42;
+return in(x-1) + 1;
+}
+
+int ;is(int x) {
+if (x == 0) return 42;
+return is;(x-1) + 1;
+}
+
+int ;new(int x) {
+if (x == 0) return 42;
+return new(x-1) + 1;
+}
+
+int ;null(int x) {
+if (x == 0) return 42;
+return null(x-1) + 1;
+}
+
+int ;rethrow(int x) {
+if (x == 0) return 42;
+return rethrow(x-1) + 1;
+}
+
+int ;return(int x) {
+if (x == 0) return 42;
+return return(x-1) + 1;
+}
+
+int ;super(int x) {
+if (x == 0) return 42;
+return super(x-1) + 1;
+}
+
+int ;switch(int x) {
+if (x == 0) return 42;
+return ;switch(x-1) {}+ 1;
+}
+
+int this;(int x) {
+if (x == 0) return 42;
+return this(x-1) + 1;
+}
+
+int ;throw(int x) {
+if (x == 0) return 42;
+return throw(x-1) + 1;
+}
+
+int ;true(int x) {
+if (x == 0) return 42;
+return true(x-1) + 1;
+}
+
+int ;try(int x) {
+if (x == 0) return 42;
+return ;try{}(x-1) + 1;
+}
+
+int ;var(int x) {
+if (x == 0) return 42;
+return ;var(;x-1;;) + 1;
+}
+
+int ;void(int x) {
+if (x == 0) return 42;
+return ;void(;x-1;;) + 1;
+}
+
+int ;while(int x) {
+if (x == 0) return 42;
+return ;while(x-1) + 1;
+}
+
+int ;with(int x) {
+if (x == 0) return 42;
+return with(x-1) + 1;
+}
+}
+
+class[KeywordToken] WrapperClass[StringToken] {[BeginToken]
+int[StringToken] ;[SyntheticToken]assert[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] assert[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]break[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]break[KeywordToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]case[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] case[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]catch[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] catch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]class[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] class[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]const[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] const[KeywordToken][SyntheticStringToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]continue[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]continue[KeywordToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]default[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] default[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]do[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]do[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+while[SyntheticKeywordToken]([SyntheticBeginToken][SyntheticStringToken])[SyntheticToken];[SyntheticToken]}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]else[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken]else[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]enum[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] enum[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]extends[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] extends[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]false[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] false[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]final[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]final[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]finally[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] finally[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]for[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]for[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]if[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]if[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]in[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] in[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]is[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken]is[KeywordToken][SyntheticStringToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]new[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] new[KeywordToken][SyntheticStringToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]null[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] null[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]rethrow[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] rethrow[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]return[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] return[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]super[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] super[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]switch[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]switch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] {[SyntheticBeginToken]}[SyntheticToken][SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] this[KeywordToken];[SyntheticToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] this[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]throw[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] throw[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]true[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] true[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]try[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]try[KeywordToken]{[SyntheticBeginToken]}[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]var[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]var[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]void[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]void[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]while[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]while[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]with[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] with[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.scanner.expect
new file mode 100644
index 0000000..3401113
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.scanner.expect
@@ -0,0 +1,333 @@
+class WrapperClass {
+int assert(int x) {
+if (x == 0) return 42;
+return assert(x-1) + 1;
+}
+
+int break(int x) {
+if (x == 0) return 42;
+return break(x-1) + 1;
+}
+
+int case(int x) {
+if (x == 0) return 42;
+return case(x-1) + 1;
+}
+
+int catch(int x) {
+if (x == 0) return 42;
+return catch(x-1) + 1;
+}
+
+int class(int x) {
+if (x == 0) return 42;
+return class(x-1) + 1;
+}
+
+int const(int x) {
+if (x == 0) return 42;
+return const(x-1) + 1;
+}
+
+int continue(int x) {
+if (x == 0) return 42;
+return continue(x-1) + 1;
+}
+
+int default(int x) {
+if (x == 0) return 42;
+return default(x-1) + 1;
+}
+
+int do(int x) {
+if (x == 0) return 42;
+return do(x-1) + 1;
+}
+
+int else(int x) {
+if (x == 0) return 42;
+return else(x-1) + 1;
+}
+
+int enum(int x) {
+if (x == 0) return 42;
+return enum(x-1) + 1;
+}
+
+int extends(int x) {
+if (x == 0) return 42;
+return extends(x-1) + 1;
+}
+
+int false(int x) {
+if (x == 0) return 42;
+return false(x-1) + 1;
+}
+
+int final(int x) {
+if (x == 0) return 42;
+return final(x-1) + 1;
+}
+
+int finally(int x) {
+if (x == 0) return 42;
+return finally(x-1) + 1;
+}
+
+int for(int x) {
+if (x == 0) return 42;
+return for(x-1) + 1;
+}
+
+int if(int x) {
+if (x == 0) return 42;
+return if(x-1) + 1;
+}
+
+int in(int x) {
+if (x == 0) return 42;
+return in(x-1) + 1;
+}
+
+int is(int x) {
+if (x == 0) return 42;
+return is(x-1) + 1;
+}
+
+int new(int x) {
+if (x == 0) return 42;
+return new(x-1) + 1;
+}
+
+int null(int x) {
+if (x == 0) return 42;
+return null(x-1) + 1;
+}
+
+int rethrow(int x) {
+if (x == 0) return 42;
+return rethrow(x-1) + 1;
+}
+
+int return(int x) {
+if (x == 0) return 42;
+return return(x-1) + 1;
+}
+
+int super(int x) {
+if (x == 0) return 42;
+return super(x-1) + 1;
+}
+
+int switch(int x) {
+if (x == 0) return 42;
+return switch(x-1) + 1;
+}
+
+int this(int x) {
+if (x == 0) return 42;
+return this(x-1) + 1;
+}
+
+int throw(int x) {
+if (x == 0) return 42;
+return throw(x-1) + 1;
+}
+
+int true(int x) {
+if (x == 0) return 42;
+return true(x-1) + 1;
+}
+
+int try(int x) {
+if (x == 0) return 42;
+return try(x-1) + 1;
+}
+
+int var(int x) {
+if (x == 0) return 42;
+return var(x-1) + 1;
+}
+
+int void(int x) {
+if (x == 0) return 42;
+return void(x-1) + 1;
+}
+
+int while(int x) {
+if (x == 0) return 42;
+return while(x-1) + 1;
+}
+
+int with(int x) {
+if (x == 0) return 42;
+return with(x-1) + 1;
+}
+}
+
+class[KeywordToken] WrapperClass[StringToken] {[BeginToken]
+int[StringToken] assert[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] assert[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] break[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] break[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] case[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] case[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] catch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] catch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] class[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] class[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] const[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] const[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] continue[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] continue[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] default[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] default[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] do[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] do[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] else[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] else[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] enum[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] enum[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] extends[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] extends[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] false[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] false[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] final[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] final[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] finally[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] finally[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] for[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] for[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] if[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] if[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] in[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] in[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] is[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] is[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] new[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] new[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] null[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] null[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] rethrow[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] rethrow[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] return[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] return[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] super[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] super[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] switch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] switch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] this[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] this[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] throw[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] throw[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] true[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] true[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] try[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] try[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] var[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] var[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] void[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] void[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] while[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] while[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] with[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] with[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart
new file mode 100644
index 0000000..30bed69
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart
@@ -0,0 +1,164 @@
+int assert(int x) {
+  if (x == 0) return 42;
+  return assert(x-1) + 1;
+}
+
+int break(int x) {
+  if (x == 0) return 42;
+  return break(x-1) + 1;
+}
+
+int case(int x) {
+  if (x == 0) return 42;
+  return case(x-1) + 1;
+}
+
+int catch(int x) {
+  if (x == 0) return 42;
+  return catch(x-1) + 1;
+}
+
+int class(int x) {
+  if (x == 0) return 42;
+  return class(x-1) + 1;
+}
+
+int const(int x) {
+  if (x == 0) return 42;
+  return const(x-1) + 1;
+}
+
+int continue(int x) {
+  if (x == 0) return 42;
+  return continue(x-1) + 1;
+}
+
+int default(int x) {
+  if (x == 0) return 42;
+  return default(x-1) + 1;
+}
+
+int do(int x) {
+  if (x == 0) return 42;
+  return do(x-1) + 1;
+}
+
+int else(int x) {
+  if (x == 0) return 42;
+  return else(x-1) + 1;
+}
+
+int enum(int x) {
+  if (x == 0) return 42;
+  return enum(x-1) + 1;
+}
+
+int extends(int x) {
+  if (x == 0) return 42;
+  return extends(x-1) + 1;
+}
+
+int false(int x) {
+  if (x == 0) return 42;
+  return false(x-1) + 1;
+}
+
+int final(int x) {
+  if (x == 0) return 42;
+  return final(x-1) + 1;
+}
+
+int finally(int x) {
+  if (x == 0) return 42;
+  return finally(x-1) + 1;
+}
+
+int for(int x) {
+  if (x == 0) return 42;
+  return for(x-1) + 1;
+}
+
+int if(int x) {
+  if (x == 0) return 42;
+  return if(x-1) + 1;
+}
+
+int in(int x) {
+  if (x == 0) return 42;
+  return in(x-1) + 1;
+}
+
+int is(int x) {
+  if (x == 0) return 42;
+  return is(x-1) + 1;
+}
+
+int new(int x) {
+  if (x == 0) return 42;
+  return new(x-1) + 1;
+}
+
+int null(int x) {
+  if (x == 0) return 42;
+  return null(x-1) + 1;
+}
+
+int rethrow(int x) {
+  if (x == 0) return 42;
+  return rethrow(x-1) + 1;
+}
+
+int return(int x) {
+  if (x == 0) return 42;
+  return return(x-1) + 1;
+}
+
+int super(int x) {
+  if (x == 0) return 42;
+  return super(x-1) + 1;
+}
+
+int switch(int x) {
+  if (x == 0) return 42;
+  return switch(x-1) + 1;
+}
+
+int this(int x) {
+  if (x == 0) return 42;
+  return this(x-1) + 1;
+}
+
+int throw(int x) {
+  if (x == 0) return 42;
+  return throw(x-1) + 1;
+}
+
+int true(int x) {
+  if (x == 0) return 42;
+  return true(x-1) + 1;
+}
+
+int try(int x) {
+  if (x == 0) return 42;
+  return try(x-1) + 1;
+}
+
+int var(int x) {
+  if (x == 0) return 42;
+  return var(x-1) + 1;
+}
+
+int void(int x) {
+  if (x == 0) return 42;
+  return void(x-1) + 1;
+}
+
+int while(int x) {
+  if (x == 0) return 42;
+  return while(x-1) + 1;
+}
+
+int with(int x) {
+  if (x == 0) return 42;
+  return with(x-1) + 1;
+}
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.expect
new file mode 100644
index 0000000..ca1fdb1
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.expect
@@ -0,0 +1,3177 @@
+Problems reported:
+
+parser/error_recovery/reserved_words_top_level_fields:1:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int assert(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:1:1: Expected ';' after this.
+int assert(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:1:5: Expected an identifier, but got 'assert'.
+int assert(int x) {
+    ^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:3:10: `assert` can't be used as an expression.
+  return assert(x-1) + 1;
+         ^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:6:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int break(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:6:1: Expected ';' after this.
+int break(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:6:5: Expected an identifier, but got 'break'.
+int break(int x) {
+    ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:8:10: Expected an identifier, but got 'break'.
+  return break(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:8:10: Expected ';' after this.
+  return break(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:8:10: A break statement can't be used outside of a loop or switch statement.
+  return break(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:8:10: Expected ';' after this.
+  return break(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:11:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int case(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:11:1: Expected ';' after this.
+int case(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:11:5: Expected an identifier, but got 'case'.
+int case(int x) {
+    ^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:13:10: Expected an identifier, but got 'case'.
+  return case(x-1) + 1;
+         ^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:16:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int catch(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:16:1: Expected ';' after this.
+int catch(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:16:5: Expected an identifier, but got 'catch'.
+int catch(int x) {
+    ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:18:10: Expected an identifier, but got 'catch'.
+  return catch(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:21:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int class(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:21:1: Expected ';' after this.
+int class(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:21:10: Expected an identifier, but got '('.
+int class(int x) {
+         ^
+
+parser/error_recovery/reserved_words_top_level_fields:21:11: A class declaration must have a body, even if it is empty.
+int class(int x) {
+          ^^^
+
+parser/error_recovery/reserved_words_top_level_fields:21:15: Expected ';' after this.
+int class(int x) {
+              ^
+
+parser/error_recovery/reserved_words_top_level_fields:21:16: Expected a declaration, but got ')'.
+int class(int x) {
+               ^
+
+parser/error_recovery/reserved_words_top_level_fields:21:18: Expected a declaration, but got '{'.
+int class(int x) {
+                 ^
+
+parser/error_recovery/reserved_words_top_level_fields:26:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int const(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:26:1: Expected ';' after this.
+int const(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:26:10: Expected an identifier, but got '('.
+int const(int x) {
+         ^
+
+parser/error_recovery/reserved_words_top_level_fields:26:5: Can't have modifier 'const' here.
+int const(int x) {
+    ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:28:15: Expected an identifier, but got '('.
+  return const(x-1) + 1;
+              ^
+
+parser/error_recovery/reserved_words_top_level_fields:31:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int continue(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:31:1: Expected ';' after this.
+int continue(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:31:5: Expected an identifier, but got 'continue'.
+int continue(int x) {
+    ^^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:33:10: Expected an identifier, but got 'continue'.
+  return continue(x-1) + 1;
+         ^^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:33:10: Expected ';' after this.
+  return continue(x-1) + 1;
+         ^^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:33:10: A continue statement can't be used outside of a loop or switch statement.
+  return continue(x-1) + 1;
+         ^^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:33:10: Expected ';' after this.
+  return continue(x-1) + 1;
+         ^^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:36:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int default(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:36:1: Expected ';' after this.
+int default(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:36:5: Expected an identifier, but got 'default'.
+int default(int x) {
+    ^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:38:10: Expected an identifier, but got 'default'.
+  return default(x-1) + 1;
+         ^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:41:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int do(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:41:1: Expected ';' after this.
+int do(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:41:5: Expected an identifier, but got 'do'.
+int do(int x) {
+    ^^
+
+parser/error_recovery/reserved_words_top_level_fields:43:10: Expected an identifier, but got 'do'.
+  return do(x-1) + 1;
+         ^^
+
+parser/error_recovery/reserved_words_top_level_fields:43:10: Expected ';' after this.
+  return do(x-1) + 1;
+         ^^
+
+parser/error_recovery/reserved_words_top_level_fields:44:1: Expected 'while' before this.
+}
+^
+
+parser/error_recovery/reserved_words_top_level_fields:44:1: Expected to find '('.
+}
+^
+
+parser/error_recovery/reserved_words_top_level_fields:44:1: Expected an identifier, but got '}'.
+}
+^
+
+parser/error_recovery/reserved_words_top_level_fields:44:1: Expected ';' after this.
+}
+^
+
+parser/error_recovery/reserved_words_top_level_fields:46:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int else(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:46:1: Expected ';' after this.
+int else(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:46:5: Expected an identifier, but got 'else'.
+int else(int x) {
+    ^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:48:10: Expected an identifier, but got 'else'.
+  return else(x-1) + 1;
+         ^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:48:10: Expected ';' after this.
+  return else(x-1) + 1;
+         ^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:48:10: Expected an identifier, but got 'else'.
+  return else(x-1) + 1;
+         ^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:48:10: Expected ';' after this.
+  return else(x-1) + 1;
+         ^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:48:10: Unexpected token ';'.
+  return else(x-1) + 1;
+         ^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:51:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int enum(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:51:1: Expected ';' after this.
+int enum(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:51:9: Expected an identifier, but got '('.
+int enum(int x) {
+        ^
+
+parser/error_recovery/reserved_words_top_level_fields:51:10: Expected a enum body, but got 'int'.
+int enum(int x) {
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_fields:51:14: Expected ';' after this.
+int enum(int x) {
+             ^
+
+parser/error_recovery/reserved_words_top_level_fields:51:15: Expected a declaration, but got ')'.
+int enum(int x) {
+              ^
+
+parser/error_recovery/reserved_words_top_level_fields:51:17: Expected a declaration, but got '{'.
+int enum(int x) {
+                ^
+
+parser/error_recovery/reserved_words_top_level_fields:56:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int extends(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:56:1: Expected ';' after this.
+int extends(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:56:5: Expected an identifier, but got 'extends'.
+int extends(int x) {
+    ^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:58:10: Expected an identifier, but got 'extends'.
+  return extends(x-1) + 1;
+         ^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:61:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int false(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:61:1: Expected ';' after this.
+int false(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:61:5: Expected an identifier, but got 'false'.
+int false(int x) {
+    ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:66:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int final(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:66:1: Expected ';' after this.
+int final(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:66:10: Expected an identifier, but got '('.
+int final(int x) {
+         ^
+
+parser/error_recovery/reserved_words_top_level_fields:66:5: Can't have modifier 'final' here.
+int final(int x) {
+    ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:68:10: Expected an identifier, but got 'final'.
+  return final(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:68:10: Expected ';' after this.
+  return final(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:68:15: Expected an identifier, but got '('.
+  return final(x-1) + 1;
+              ^
+
+parser/error_recovery/reserved_words_top_level_fields:68:16: Expected ';' after this.
+  return final(x-1) + 1;
+               ^
+
+parser/error_recovery/reserved_words_top_level_fields:68:18: Expected ';' after this.
+  return final(x-1) + 1;
+                 ^
+
+parser/error_recovery/reserved_words_top_level_fields:68:19: Expected an identifier, but got ')'.
+  return final(x-1) + 1;
+                  ^
+
+parser/error_recovery/reserved_words_top_level_fields:68:19: Expected ';' after this.
+  return final(x-1) + 1;
+                  ^
+
+parser/error_recovery/reserved_words_top_level_fields:68:19: Unexpected token ';'.
+  return final(x-1) + 1;
+                  ^
+
+parser/error_recovery/reserved_words_top_level_fields:68:21: '+' is not a prefix operator.
+  return final(x-1) + 1;
+                    ^
+
+parser/error_recovery/reserved_words_top_level_fields:71:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int finally(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:71:1: Expected ';' after this.
+int finally(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:71:5: Expected an identifier, but got 'finally'.
+int finally(int x) {
+    ^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:73:10: Expected an identifier, but got 'finally'.
+  return finally(x-1) + 1;
+         ^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:76:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int for(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:76:1: Expected ';' after this.
+int for(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:76:5: Expected an identifier, but got 'for'.
+int for(int x) {
+    ^^^
+
+parser/error_recovery/reserved_words_top_level_fields:78:10: Expected an identifier, but got 'for'.
+  return for(x-1) + 1;
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_fields:78:10: Expected ';' after this.
+  return for(x-1) + 1;
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_fields:78:16: Expected ';' after this.
+  return for(x-1) + 1;
+               ^
+
+parser/error_recovery/reserved_words_top_level_fields:78:17: Expected an identifier, but got ')'.
+  return for(x-1) + 1;
+                ^
+
+parser/error_recovery/reserved_words_top_level_fields:78:17: Expected ';' after this.
+  return for(x-1) + 1;
+                ^
+
+parser/error_recovery/reserved_words_top_level_fields:78:19: '+' is not a prefix operator.
+  return for(x-1) + 1;
+                  ^
+
+parser/error_recovery/reserved_words_top_level_fields:81:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int if(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:81:1: Expected ';' after this.
+int if(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:81:5: Expected an identifier, but got 'if'.
+int if(int x) {
+    ^^
+
+parser/error_recovery/reserved_words_top_level_fields:83:10: Expected an identifier, but got 'if'.
+  return if(x-1) + 1;
+         ^^
+
+parser/error_recovery/reserved_words_top_level_fields:83:10: Expected ';' after this.
+  return if(x-1) + 1;
+         ^^
+
+parser/error_recovery/reserved_words_top_level_fields:83:18: '+' is not a prefix operator.
+  return if(x-1) + 1;
+                 ^
+
+parser/error_recovery/reserved_words_top_level_fields:86:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int in(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:86:1: Expected ';' after this.
+int in(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:86:5: Expected an identifier, but got 'in'.
+int in(int x) {
+    ^^
+
+parser/error_recovery/reserved_words_top_level_fields:88:10: Expected an identifier, but got 'in'.
+  return in(x-1) + 1;
+         ^^
+
+parser/error_recovery/reserved_words_top_level_fields:91:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int is(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:91:1: Expected ';' after this.
+int is(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:91:5: Expected an identifier, but got 'is'.
+int is(int x) {
+    ^^
+
+parser/error_recovery/reserved_words_top_level_fields:93:10: Expected an identifier, but got 'is'.
+  return is(x-1) + 1;
+         ^^
+
+parser/error_recovery/reserved_words_top_level_fields:93:12: Expected a type, but got '('.
+  return is(x-1) + 1;
+           ^
+
+parser/error_recovery/reserved_words_top_level_fields:93:12: Expected ';' after this.
+  return is(x-1) + 1;
+           ^
+
+parser/error_recovery/reserved_words_top_level_fields:96:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int new(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:96:1: Expected ';' after this.
+int new(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:96:5: Expected an identifier, but got 'new'.
+int new(int x) {
+    ^^^
+
+parser/error_recovery/reserved_words_top_level_fields:98:13: Expected an identifier, but got '('.
+  return new(x-1) + 1;
+            ^
+
+parser/error_recovery/reserved_words_top_level_fields:101:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int null(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:101:1: Expected ';' after this.
+int null(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:101:5: Expected an identifier, but got 'null'.
+int null(int x) {
+    ^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:106:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int rethrow(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:106:1: Expected ';' after this.
+int rethrow(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:106:5: Expected an identifier, but got 'rethrow'.
+int rethrow(int x) {
+    ^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:108:10: Expected an identifier, but got 'rethrow'.
+  return rethrow(x-1) + 1;
+         ^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:111:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int return(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:111:1: Expected ';' after this.
+int return(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:111:5: Expected an identifier, but got 'return'.
+int return(int x) {
+    ^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:113:10: Unexpected token 'return'.
+  return return(x-1) + 1;
+         ^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:116:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int super(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:116:1: Expected ';' after this.
+int super(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:116:5: Expected an identifier, but got 'super'.
+int super(int x) {
+    ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:121:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int switch(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:121:1: Expected ';' after this.
+int switch(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:121:5: Expected an identifier, but got 'switch'.
+int switch(int x) {
+    ^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:123:10: Expected an identifier, but got 'switch'.
+  return switch(x-1) + 1;
+         ^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:123:10: Expected ';' after this.
+  return switch(x-1) + 1;
+         ^^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:123:20: A switch statement must have a body, even if it is empty.
+  return switch(x-1) + 1;
+                   ^
+
+parser/error_recovery/reserved_words_top_level_fields:123:22: '+' is not a prefix operator.
+  return switch(x-1) + 1;
+                     ^
+
+parser/error_recovery/reserved_words_top_level_fields:126:5: Expected an identifier, but got 'this'.
+int this(int x) {
+    ^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:131:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int throw(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:131:1: Expected ';' after this.
+int throw(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:131:5: Expected an identifier, but got 'throw'.
+int throw(int x) {
+    ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:136:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int true(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:136:1: Expected ';' after this.
+int true(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:136:5: Expected an identifier, but got 'true'.
+int true(int x) {
+    ^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:141:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int try(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:141:1: Expected ';' after this.
+int try(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:141:5: Expected an identifier, but got 'try'.
+int try(int x) {
+    ^^^
+
+parser/error_recovery/reserved_words_top_level_fields:143:10: Expected an identifier, but got 'try'.
+  return try(x-1) + 1;
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_fields:143:10: Expected ';' after this.
+  return try(x-1) + 1;
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_fields:143:10: A try statement must have a body, even if it is empty.
+  return try(x-1) + 1;
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_fields:143:10: A try block must be followed by an 'on', 'catch', or 'finally' clause.
+  return try(x-1) + 1;
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_fields:146:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int var(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:146:1: Expected ';' after this.
+int var(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:146:8: Expected an identifier, but got '('.
+int var(int x) {
+       ^
+
+parser/error_recovery/reserved_words_top_level_fields:146:5: The return type can't be 'var'.
+int var(int x) {
+    ^^^
+
+parser/error_recovery/reserved_words_top_level_fields:148:10: Expected an identifier, but got 'var'.
+  return var(x-1) + 1;
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_fields:148:10: Expected ';' after this.
+  return var(x-1) + 1;
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_fields:148:13: Expected an identifier, but got '('.
+  return var(x-1) + 1;
+            ^
+
+parser/error_recovery/reserved_words_top_level_fields:148:14: Expected ';' after this.
+  return var(x-1) + 1;
+             ^
+
+parser/error_recovery/reserved_words_top_level_fields:148:16: Expected ';' after this.
+  return var(x-1) + 1;
+               ^
+
+parser/error_recovery/reserved_words_top_level_fields:148:17: Expected an identifier, but got ')'.
+  return var(x-1) + 1;
+                ^
+
+parser/error_recovery/reserved_words_top_level_fields:148:17: Expected ';' after this.
+  return var(x-1) + 1;
+                ^
+
+parser/error_recovery/reserved_words_top_level_fields:148:17: Unexpected token ';'.
+  return var(x-1) + 1;
+                ^
+
+parser/error_recovery/reserved_words_top_level_fields:148:19: '+' is not a prefix operator.
+  return var(x-1) + 1;
+                  ^
+
+parser/error_recovery/reserved_words_top_level_fields:151:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int void(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:151:1: Expected ';' after this.
+int void(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:151:9: Expected an identifier, but got '('.
+int void(int x) {
+        ^
+
+parser/error_recovery/reserved_words_top_level_fields:153:10: Expected an identifier, but got 'void'.
+  return void(x-1) + 1;
+         ^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:153:10: Expected ';' after this.
+  return void(x-1) + 1;
+         ^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:153:14: Expected an identifier, but got '('.
+  return void(x-1) + 1;
+             ^
+
+parser/error_recovery/reserved_words_top_level_fields:153:15: Expected ';' after this.
+  return void(x-1) + 1;
+              ^
+
+parser/error_recovery/reserved_words_top_level_fields:153:17: Expected ';' after this.
+  return void(x-1) + 1;
+                ^
+
+parser/error_recovery/reserved_words_top_level_fields:153:18: Expected an identifier, but got ')'.
+  return void(x-1) + 1;
+                 ^
+
+parser/error_recovery/reserved_words_top_level_fields:153:18: Expected ';' after this.
+  return void(x-1) + 1;
+                 ^
+
+parser/error_recovery/reserved_words_top_level_fields:153:18: Unexpected token ';'.
+  return void(x-1) + 1;
+                 ^
+
+parser/error_recovery/reserved_words_top_level_fields:153:20: '+' is not a prefix operator.
+  return void(x-1) + 1;
+                   ^
+
+parser/error_recovery/reserved_words_top_level_fields:156:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int while(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:156:1: Expected ';' after this.
+int while(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:156:5: Expected an identifier, but got 'while'.
+int while(int x) {
+    ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:158:10: Expected an identifier, but got 'while'.
+  return while(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:158:10: Expected ';' after this.
+  return while(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:158:21: '+' is not a prefix operator.
+  return while(x-1) + 1;
+                    ^
+
+parser/error_recovery/reserved_words_top_level_fields:161:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int with(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:161:1: Expected ';' after this.
+int with(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_fields:161:5: Expected an identifier, but got 'with'.
+int with(int x) {
+    ^^^^
+
+parser/error_recovery/reserved_words_top_level_fields:163:10: Expected an identifier, but got 'with'.
+  return with(x-1) + 1;
+         ^^^^
+
+beginCompilationUnit(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    handleRecoverableError(MissingConstFinalVarOrType, int, int)
+    handleNoType()
+    handleIdentifier(int, topLevelVariableDeclaration)
+    handleNoFieldInitializer(assert)
+    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+  endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(assert)
+beginMetadataStar(assert)
+endMetadataStar(0)
+beginTopLevelMember(assert)
+  beginTopLevelMethod(;, null)
+    handleNoType(;)
+    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'assert'., null, {token: assert}], assert, assert)
+    handleIdentifier(assert, topLevelFunctionDeclaration)
+    handleNoTypeVariables(()
+    beginFormalParameters((, MemberKind.TopLevelMethod)
+      beginMetadataStar(int)
+      endMetadataStar(0)
+      beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(x)
+        handleType(int, null)
+        handleIdentifier(x, formalParameterDeclaration)
+        handleFormalParameterWithoutValue())
+      endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+    endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+    handleAsyncModifier(null, null)
+    beginBlockFunctionBody({)
+      beginIfStatement(if)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(==)
+        handleNoArguments(==)
+        handleSend(x, ==)
+        beginBinaryExpression(==)
+        handleLiteralInt(0)
+        endBinaryExpression(==)
+        handleParenthesizedCondition(()
+        beginThenStatement(return)
+          beginReturnStatement(return)
+            handleLiteralInt(42)
+          endReturnStatement(true, return, ;)
+        endThenStatement(;)
+      endIfStatement(if, null)
+      beginReturnStatement(return)
+        beginAssert(assert, Assert.Expression)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(-)
+          handleNoArguments(-)
+          handleSend(x, -)
+          beginBinaryExpression(-)
+          handleLiteralInt(1)
+          endBinaryExpression(-)
+          handleRecoverableError(AssertAsExpression, assert, assert)
+        endAssert(assert, Assert.Expression, (, null, +)
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+      endReturnStatement(true, return, ;)
+    endBlockFunctionBody(2, {, })
+  endTopLevelMethod(assert, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+  handleRecoverableError(MissingConstFinalVarOrType, int, int)
+  handleNoType(})
+  handleIdentifier(int, topLevelVariableDeclaration)
+  handleNoFieldInitializer(break)
+  handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(break)
+beginMetadataStar(break)
+endMetadataStar(0)
+beginTopLevelMember(break)
+beginTopLevelMethod(;, null)
+  handleNoType(;)
+  handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+  handleIdentifier(break, topLevelFunctionDeclaration)
+  handleNoTypeVariables(()
+  beginFormalParameters((, MemberKind.TopLevelMethod)
+    beginMetadataStar(int)
+    endMetadataStar(0)
+    beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(x)
+      handleType(int, null)
+      handleIdentifier(x, formalParameterDeclaration)
+      handleFormalParameterWithoutValue())
+    endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+  endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+  handleAsyncModifier(null, null)
+  beginBlockFunctionBody({)
+    beginIfStatement(if)
+      handleIdentifier(x, expression)
+      handleNoTypeArguments(==)
+      handleNoArguments(==)
+      handleSend(x, ==)
+      beginBinaryExpression(==)
+      handleLiteralInt(0)
+      endBinaryExpression(==)
+      handleParenthesizedCondition(()
+      beginThenStatement(return)
+        beginReturnStatement(return)
+          handleLiteralInt(42)
+        endReturnStatement(true, return, ;)
+      endThenStatement(;)
+    endIfStatement(if, null)
+    beginReturnStatement(return)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+      handleIdentifier(, expression)
+      handleNoTypeArguments(break)
+      handleNoArguments(break)
+      handleSend(, break)
+      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+    endReturnStatement(true, return, ;)
+    handleRecoverableError(BreakOutsideOfLoop, break, break)
+    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+    handleBreakStatement(false, break, ;)
+    handleIdentifier(x, expression)
+    handleNoTypeArguments(-)
+    handleNoArguments(-)
+    handleSend(x, -)
+    beginBinaryExpression(-)
+    handleLiteralInt(1)
+    endBinaryExpression(-)
+    handleParenthesizedExpression(()
+    beginBinaryExpression(+)
+    handleLiteralInt(1)
+    endBinaryExpression(+)
+    handleExpressionStatement(;)
+  endBlockFunctionBody(4, {, })
+endTopLevelMethod(break, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(case)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(case)
+beginMetadataStar(case)
+endMetadataStar(0)
+beginTopLevelMember(case)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+handleIdentifier(case, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+    handleIdentifier(int, typeReference)
+    handleNoTypeArguments(x)
+    handleType(int, null)
+    handleIdentifier(x, formalParameterDeclaration)
+    handleFormalParameterWithoutValue())
+  endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+  beginIfStatement(if)
+    handleIdentifier(x, expression)
+    handleNoTypeArguments(==)
+    handleNoArguments(==)
+    handleSend(x, ==)
+    beginBinaryExpression(==)
+    handleLiteralInt(0)
+    endBinaryExpression(==)
+    handleParenthesizedCondition(()
+    beginThenStatement(return)
+      beginReturnStatement(return)
+        handleLiteralInt(42)
+      endReturnStatement(true, return, ;)
+    endThenStatement(;)
+  endIfStatement(if, null)
+  beginReturnStatement(return)
+    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+    handleIdentifier(case, expression)
+    handleNoTypeArguments(()
+    beginArguments(()
+      handleIdentifier(x, expression)
+      handleNoTypeArguments(-)
+      handleNoArguments(-)
+      handleSend(x, -)
+      beginBinaryExpression(-)
+      handleLiteralInt(1)
+      endBinaryExpression(-)
+    endArguments(1, (, ))
+    handleSend(case, +)
+    beginBinaryExpression(+)
+    handleLiteralInt(1)
+    endBinaryExpression(+)
+  endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(case, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(catch)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(catch)
+beginMetadataStar(catch)
+endMetadataStar(0)
+beginTopLevelMember(catch)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+handleIdentifier(catch, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+  handleIdentifier(int, typeReference)
+  handleNoTypeArguments(x)
+  handleType(int, null)
+  handleIdentifier(x, formalParameterDeclaration)
+  handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+  handleIdentifier(x, expression)
+  handleNoTypeArguments(==)
+  handleNoArguments(==)
+  handleSend(x, ==)
+  beginBinaryExpression(==)
+  handleLiteralInt(0)
+  endBinaryExpression(==)
+  handleParenthesizedCondition(()
+  beginThenStatement(return)
+    beginReturnStatement(return)
+      handleLiteralInt(42)
+    endReturnStatement(true, return, ;)
+  endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+  handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+  handleIdentifier(catch, expression)
+  handleNoTypeArguments(()
+  beginArguments(()
+    handleIdentifier(x, expression)
+    handleNoTypeArguments(-)
+    handleNoArguments(-)
+    handleSend(x, -)
+    beginBinaryExpression(-)
+    handleLiteralInt(1)
+    endBinaryExpression(-)
+  endArguments(1, (, ))
+  handleSend(catch, +)
+  beginBinaryExpression(+)
+  handleLiteralInt(1)
+  endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(catch, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(class)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(class)
+beginMetadataStar(class)
+endMetadataStar(0)
+beginClassOrNamedMixinApplicationPrelude(class)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, classOrMixinDeclaration)
+handleNoTypeVariables(int)
+beginClassDeclaration(class, null, )
+handleNoType()
+handleClassExtends(null)
+handleClassNoWithClause()
+handleClassOrMixinImplements(null, 0)
+handleClassHeader(class, class, null)
+handleNoType()
+handleClassExtends(null)
+handleClassNoWithClause()
+handleClassOrMixinImplements(null, 0)
+handleRecoverClassHeader()
+handleRecoverableError(Message[ExpectedClassOrMixinBody, A class declaration must have a body, even if it is empty., Try adding an empty body., {string: class declaration}], int, int)
+beginClassOrMixinBody(DeclarationKind.Class, {)
+endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+endClassDeclaration(class, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, topLevelVariableDeclaration)
+handleNoFieldInitializer())
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration())
+beginMetadataStar())
+endMetadataStar(0)
+beginTopLevelMember())
+handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {token: )}], ), ))
+handleInvalidTopLevelDeclaration())
+endTopLevelDeclaration({)
+beginMetadataStar({)
+endMetadataStar(0)
+beginTopLevelMember({)
+handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '{'., null, {token: {}], {, {)
+beginBlock({, BlockKind(invalid))
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleIdentifier(class, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(class, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlock(2, {, }, BlockKind(invalid))
+handleInvalidTopLevelBlock({)
+handleInvalidTopLevelDeclaration(})
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(const)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(const)
+beginMetadataStar(const)
+endMetadataStar(0)
+beginTopLevelMember(const)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'const' here., Try removing 'const'., {token: const}], const, const)
+beginTopLevelMethod(;, null)
+handleNoType(const)
+handleIdentifier(, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+beginConstExpression(const)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, constructorReference)
+beginConstructorReference()
+handleNoTypeArguments(()
+handleNoConstructorReferenceContinuationAfterTypeArguments(()
+endConstructorReference(, null, ()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+endConstExpression(const)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(const, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(continue)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(continue)
+beginMetadataStar(continue)
+endMetadataStar(0)
+beginTopLevelMember(continue)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+handleIdentifier(continue, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+handleIdentifier(, expression)
+handleNoTypeArguments(continue)
+handleNoArguments(continue)
+handleSend(, continue)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+endReturnStatement(true, return, ;)
+handleRecoverableError(ContinueOutsideOfLoop, continue, continue)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+handleContinueStatement(false, continue, ;)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(4, {, })
+endTopLevelMethod(continue, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(default)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(default)
+beginMetadataStar(default)
+endMetadataStar(0)
+beginTopLevelMember(default)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+handleIdentifier(default, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+handleIdentifier(default, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(default, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(default, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(do)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(do)
+beginMetadataStar(do)
+endMetadataStar(0)
+beginTopLevelMember(do)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+handleIdentifier(do, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+handleIdentifier(, expression)
+handleNoTypeArguments(do)
+handleNoArguments(do)
+handleSend(, do)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], do, do)
+endReturnStatement(true, return, ;)
+beginDoWhileStatement(do)
+beginDoWhileStatementBody(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endDoWhileStatementBody(;)
+handleRecoverableError(Message[ExpectedButGot, Expected 'while' before this., null, {string: while}], }, })
+handleRecoverableError(Message[ExpectedToken, Expected to find '('., null, {string: (}], }, })
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., null, {token: }}], }, })
+handleIdentifier(, expression)
+handleNoTypeArguments())
+handleNoArguments())
+handleSend(, ))
+handleParenthesizedCondition(()
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+endDoWhileStatement(do, while, ;)
+endBlockFunctionBody(3, {, })
+endTopLevelMethod(do, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(else)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(else)
+beginMetadataStar(else)
+endMetadataStar(0)
+beginTopLevelMember(else)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+handleIdentifier(else, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+handleIdentifier(, expression)
+handleNoTypeArguments(else)
+handleNoArguments(else)
+handleSend(, else)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+endReturnStatement(true, return, ;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+handleIdentifier(, expression)
+handleNoTypeArguments(else)
+handleNoArguments(else)
+handleSend(, else)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+handleExpressionStatement(;)
+handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], else, else)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(4, {, })
+endTopLevelMethod(else, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(enum)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(enum)
+beginMetadataStar(enum)
+endMetadataStar(0)
+beginEnum(enum)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, enumDeclaration)
+handleRecoverableError(Message[ExpectedEnumBody, Expected a enum body, but got 'int'., An enum definition must have a body with at least one constant name., {token: int}], int, int)
+endEnum(enum, {, 0)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, topLevelVariableDeclaration)
+handleNoFieldInitializer())
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration())
+beginMetadataStar())
+endMetadataStar(0)
+beginTopLevelMember())
+handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {token: )}], ), ))
+handleInvalidTopLevelDeclaration())
+endTopLevelDeclaration({)
+beginMetadataStar({)
+endMetadataStar(0)
+beginTopLevelMember({)
+handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '{'., null, {token: {}], {, {)
+beginBlock({, BlockKind(invalid))
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleIdentifier(enum, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(enum, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlock(2, {, }, BlockKind(invalid))
+handleInvalidTopLevelBlock({)
+handleInvalidTopLevelDeclaration(})
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(extends)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(extends)
+beginMetadataStar(extends)
+endMetadataStar(0)
+beginTopLevelMember(extends)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+handleIdentifier(extends, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+handleIdentifier(extends, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(extends, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(extends, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(false)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(false)
+beginMetadataStar(false)
+endMetadataStar(0)
+beginTopLevelMember(false)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'false'., null, {token: false}], false, false)
+handleIdentifier(false, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleLiteralBool(false)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend((, ))
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(false, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(final)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(final)
+beginMetadataStar(final)
+endMetadataStar(0)
+beginTopLevelMember(final)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'final' here., Try removing 'final'., {token: final}], final, final)
+beginTopLevelMethod(;, null)
+handleNoType(final)
+handleIdentifier(, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+handleIdentifier(, expression)
+handleNoTypeArguments(final)
+handleNoArguments(final)
+handleSend(, final)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], final, final)
+endReturnStatement(true, return, ;)
+beginMetadataStar(final)
+endMetadataStar(0)
+handleNoType(final)
+beginVariablesDeclaration((, null, final)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, localVariableDeclaration)
+beginInitializedIdentifier()
+handleNoVariableInitializer(x)
+endInitializedIdentifier()
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+endVariablesDeclaration(1, ;)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+handleExpressionStatement(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+handleIdentifier(, expression)
+handleNoTypeArguments())
+handleNoArguments())
+handleSend(, ))
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+handleExpressionStatement(;)
+handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(6, {, })
+endTopLevelMethod(final, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(finally)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(finally)
+beginMetadataStar(finally)
+endMetadataStar(0)
+beginTopLevelMember(finally)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+handleIdentifier(finally, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+handleIdentifier(finally, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(finally, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(finally, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(for)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(for)
+beginMetadataStar(for)
+endMetadataStar(0)
+beginTopLevelMember(for)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+handleIdentifier(for, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+handleIdentifier(, expression)
+handleNoTypeArguments(for)
+handleNoArguments(for)
+handleSend(, for)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], for, for)
+endReturnStatement(true, return, ;)
+beginForStatement(for)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleForInitializerExpressionStatement(1, false)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+handleIdentifier(, expression)
+handleNoTypeArguments())
+handleNoArguments())
+handleSend(, ))
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+handleExpressionStatement(;)
+handleForLoopParts(for, (, ;, 0)
+beginForStatementBody(+)
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endForStatementBody(})
+endForStatement(})
+endBlockFunctionBody(3, {, })
+endTopLevelMethod(for, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(if)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(if)
+beginMetadataStar(if)
+endMetadataStar(0)
+beginTopLevelMember(if)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+handleIdentifier(if, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+handleIdentifier(, expression)
+handleNoTypeArguments(if)
+handleNoArguments(if)
+handleSend(, if)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], if, if)
+endReturnStatement(true, return, ;)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedCondition(()
+beginThenStatement(+)
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endThenStatement(;)
+endIfStatement(if, null)
+endBlockFunctionBody(3, {, })
+endTopLevelMethod(if, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(in)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(in)
+beginMetadataStar(in)
+endMetadataStar(0)
+beginTopLevelMember(in)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+handleIdentifier(in, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+handleIdentifier(in, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(in, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(in, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(is)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(is)
+beginMetadataStar(is)
+endMetadataStar(0)
+beginTopLevelMember(is)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+handleIdentifier(is, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+handleIdentifier(, expression)
+handleNoTypeArguments(is)
+handleNoArguments(is)
+handleSend(, is)
+beginIsOperatorType(is)
+handleRecoverableError(Message[ExpectedType, Expected a type, but got '('., null, {token: (}], (, ()
+handleIdentifier(, typeReference)
+handleNoTypeArguments(()
+handleType(, null)
+endIsOperatorType(is)
+handleIsOperator(is, null)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
+endReturnStatement(true, return, ;)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(3, {, })
+endTopLevelMethod(is, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(new)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(new)
+beginMetadataStar(new)
+endMetadataStar(0)
+beginTopLevelMember(new)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'new'., null, {token: new}], new, new)
+handleIdentifier(new, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+beginNewExpression(new)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, constructorReference)
+beginConstructorReference()
+handleNoTypeArguments(()
+handleNoConstructorReferenceContinuationAfterTypeArguments(()
+endConstructorReference(, null, ()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+endNewExpression(new)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(new, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(null)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(null)
+beginMetadataStar(null)
+endMetadataStar(0)
+beginTopLevelMember(null)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'null'., null, {token: null}], null, null)
+handleIdentifier(null, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleLiteralNull(null)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend((, ))
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(null, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(rethrow)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(rethrow)
+beginMetadataStar(rethrow)
+endMetadataStar(0)
+beginTopLevelMember(rethrow)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+handleIdentifier(rethrow, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+handleIdentifier(rethrow, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(rethrow, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(rethrow, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(return)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(return)
+beginMetadataStar(return)
+endMetadataStar(0)
+beginTopLevelMember(return)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'return'., null, {token: return}], return, return)
+handleIdentifier(return, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[UnexpectedToken, Unexpected token 'return'., null, {token: return}], return, return)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(return, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(super)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(super)
+beginMetadataStar(super)
+endMetadataStar(0)
+beginTopLevelMember(super)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'super'., null, {token: super}], super, super)
+handleIdentifier(super, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleSuperExpression(super, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(super, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(super, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(switch)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(switch)
+beginMetadataStar(switch)
+endMetadataStar(0)
+beginTopLevelMember(switch)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+handleIdentifier(switch, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+handleIdentifier(, expression)
+handleNoTypeArguments(switch)
+handleNoArguments(switch)
+handleSend(, switch)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], switch, switch)
+endReturnStatement(true, return, ;)
+beginSwitchStatement(switch)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedCondition(()
+handleRecoverableError(Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}], ), ))
+beginSwitchBlock({)
+endSwitchBlock(0, {, })
+endSwitchStatement(switch, })
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(4, {, })
+endTopLevelMethod(switch, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+beginTopLevelMethod(}, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(this)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
+handleIdentifier(this, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleThisExpression(this, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(this, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(int, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(throw)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(throw)
+beginMetadataStar(throw)
+endMetadataStar(0)
+beginTopLevelMember(throw)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'throw'., null, {token: throw}], throw, throw)
+handleIdentifier(throw, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleThrowExpression(throw, ;)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(throw, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(true)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(true)
+beginMetadataStar(true)
+endMetadataStar(0)
+beginTopLevelMember(true)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'true'., null, {token: true}], true, true)
+handleIdentifier(true, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleLiteralBool(true)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend((, ))
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(true, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(try)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(try)
+beginMetadataStar(try)
+endMetadataStar(0)
+beginTopLevelMember(try)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+handleIdentifier(try, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+handleIdentifier(, expression)
+handleNoTypeArguments(try)
+handleNoArguments(try)
+handleSend(, try)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], try, try)
+endReturnStatement(true, return, ;)
+beginTryStatement(try)
+handleRecoverableError(Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}], try, try)
+beginBlock({, BlockKind(try statement))
+endBlock(0, {, }, BlockKind(try statement))
+handleRecoverableError(OnlyTry, try, try)
+endTryStatement(0, try, null)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(4, {, })
+endTopLevelMethod(try, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(var)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(var)
+beginMetadataStar(var)
+endMetadataStar(0)
+beginTopLevelMember(var)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleRecoverableError(VarReturnType, var, var)
+beginTopLevelMethod(;, null)
+handleNoType(var)
+handleIdentifier(, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+handleIdentifier(, expression)
+handleNoTypeArguments(var)
+handleNoArguments(var)
+handleSend(, var)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], var, var)
+endReturnStatement(true, return, ;)
+beginMetadataStar(var)
+endMetadataStar(0)
+handleNoType(var)
+beginVariablesDeclaration((, null, var)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, localVariableDeclaration)
+beginInitializedIdentifier()
+handleNoVariableInitializer(x)
+endInitializedIdentifier()
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+endVariablesDeclaration(1, ;)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+handleExpressionStatement(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+handleIdentifier(, expression)
+handleNoTypeArguments())
+handleNoArguments())
+handleSend(, ))
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+handleExpressionStatement(;)
+handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(6, {, })
+endTopLevelMethod(var, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(void)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(void)
+beginMetadataStar(void)
+endMetadataStar(0)
+beginTopLevelMember(void)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+beginTopLevelMethod(;, null)
+handleVoidKeyword(void)
+handleIdentifier(, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+handleIdentifier(, expression)
+handleNoTypeArguments(void)
+handleNoArguments(void)
+handleSend(, void)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void)
+endReturnStatement(true, return, ;)
+beginMetadataStar(void)
+endMetadataStar(0)
+handleVoidKeyword(void)
+beginVariablesDeclaration((, null, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, localVariableDeclaration)
+beginInitializedIdentifier()
+handleNoVariableInitializer(x)
+endInitializedIdentifier()
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+endVariablesDeclaration(1, ;)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+handleExpressionStatement(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+handleIdentifier(, expression)
+handleNoTypeArguments())
+handleNoArguments())
+handleSend(, ))
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+handleExpressionStatement(;)
+handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(6, {, })
+endTopLevelMethod(void, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(while)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(while)
+beginMetadataStar(while)
+endMetadataStar(0)
+beginTopLevelMember(while)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+handleIdentifier(while, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+handleIdentifier(, expression)
+handleNoTypeArguments(while)
+handleNoArguments(while)
+handleSend(, while)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], while, while)
+endReturnStatement(true, return, ;)
+beginWhileStatement(while)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedCondition(()
+beginWhileStatementBody(+)
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endWhileStatementBody(})
+endWhileStatement(while, })
+endBlockFunctionBody(3, {, })
+endTopLevelMethod(while, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(with)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(with)
+beginMetadataStar(with)
+endMetadataStar(0)
+beginTopLevelMember(with)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+handleIdentifier(with, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+handleIdentifier(with, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(with, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(with, null, })
+endTopLevelDeclaration()
+endCompilationUnit(71, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.intertwined.expect
new file mode 100644
index 0000000..90e26b1
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.intertwined.expect
@@ -0,0 +1,5902 @@
+parseUnit(int)
+  skipErrorTokens(int)
+  listener: beginCompilationUnit(int)
+  syntheticPreviousToken(int)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl()
+      listener: beginTopLevelMember(int)
+      parseFields(, null, null, null, null, null, , Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType()
+        ensureIdentifier(, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(assert)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(assert)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(assert)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(assert)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, assert)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(assert, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'assert'., null, {token: assert}], assert, assert)
+          listener: handleIdentifier(assert, topLevelFunctionDeclaration)
+        parseMethodTypeVar(assert)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(assert, assert, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(assert, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseAssert(return, Assert.Expression)
+                          listener: beginAssert(assert, Assert.Expression)
+                          parseExpression(()
+                            parsePrecedenceExpression((, 1, true)
+                              parseUnaryExpression((, true)
+                                parsePrimary((, expression)
+                                  parseSendOrFunctionLiteral((, expression)
+                                    parseSend((, expression)
+                                      ensureIdentifier((, expression)
+                                        listener: handleIdentifier(x, expression)
+                                      listener: handleNoTypeArguments(-)
+                                      parseArgumentsOpt(x)
+                                        listener: handleNoArguments(-)
+                                      listener: handleSend(x, -)
+                              listener: beginBinaryExpression(-)
+                              parsePrecedenceExpression(-, 14, true)
+                                parseUnaryExpression(-, true)
+                                  parsePrimary(-, expression)
+                                    parseLiteralInt(-)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(-)
+                          reportRecoverableError(assert, AssertAsExpression)
+                            listener: handleRecoverableError(AssertAsExpression, assert, assert)
+                          listener: endAssert(assert, Assert.Expression, (, null, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(assert, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(break)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(break)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(break)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(break)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, break)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+          listener: handleIdentifier(break, topLevelFunctionDeclaration)
+        parseMethodTypeVar(break)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(break, break, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(break, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(break)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(break)
+                          listener: handleSend(, break)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, break)
+          parseStatement(;)
+            parseStatementX(;)
+              parseBreakStatement(;)
+                isBreakAllowed()
+                reportRecoverableError(break, BreakOutsideOfLoop)
+                  listener: handleRecoverableError(BreakOutsideOfLoop, break, break)
+                ensureSemicolon(break)
+                  reportRecoverableError(break, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+                  rewriter()
+                listener: handleBreakStatement(false, break, ;)
+          notEofOrValue(}, ()
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclaration(;, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                  looksLikeLocalFunction(()
+                  parseExpressionStatement(;)
+                    parseExpression(;)
+                      parsePrecedenceExpression(;, 1, true)
+                        parseUnaryExpression(;, true)
+                          parsePrimary(;, expression)
+                            parseParenthesizedExpressionOrFunctionLiteral(;)
+                              parseParenthesizedExpression(;)
+                                parseExpressionInParenthesis(;)
+                                  parseExpressionInParenthesisRest(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseSendOrFunctionLiteral((, expression)
+                                              parseSend((, expression)
+                                                ensureIdentifier((, expression)
+                                                  listener: handleIdentifier(x, expression)
+                                                listener: handleNoTypeArguments(-)
+                                                parseArgumentsOpt(x)
+                                                  listener: handleNoArguments(-)
+                                                listener: handleSend(x, -)
+                                        listener: beginBinaryExpression(-)
+                                        parsePrecedenceExpression(-, 14, true)
+                                          parseUnaryExpression(-, true)
+                                            parsePrimary(-, expression)
+                                              parseLiteralInt(-)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(-)
+                                    ensureCloseParen(1, ()
+                                listener: handleParenthesizedExpression(()
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(4, {, })
+        listener: endTopLevelMethod(break, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(case)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(case)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(case)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(case)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, case)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+          listener: handleIdentifier(case, topLevelFunctionDeclaration)
+        parseMethodTypeVar(case)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(case, case, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(case, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+                            listener: handleIdentifier(case, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(case)
+                            parseArguments(case)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(case, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(case, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(catch)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(catch)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(catch)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(catch)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, catch)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+          listener: handleIdentifier(catch, topLevelFunctionDeclaration)
+        parseMethodTypeVar(catch)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(catch, catch, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(catch, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+                            listener: handleIdentifier(catch, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(catch)
+                            parseArguments(catch)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(catch, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(catch, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(class)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(class)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(;, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+          rewriter()
+          listener: handleIdentifier(, classOrMixinDeclaration)
+        listener: handleNoTypeVariables(int)
+        listener: beginClassDeclaration(class, null, )
+        parseClass(, class, class, )
+          parseClassHeaderOpt(, class, class)
+            parseClassExtendsOpt()
+              listener: handleNoType()
+              listener: handleClassExtends(null)
+            parseWithClauseOpt()
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt()
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassHeaderRecovery(, class, class)
+            parseClassHeaderOpt(, class, class)
+              parseClassExtendsOpt()
+              parseWithClauseOpt()
+              parseClassOrMixinImplementsOpt()
+            skipUnexpectedTokenOpt(, [extends, with, implements, {])
+            parseClassExtendsOpt()
+              listener: handleNoType()
+              listener: handleClassExtends(null)
+            parseWithClauseOpt()
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt()
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleRecoverClassHeader()
+          ensureBlock(, null, class declaration)
+            reportRecoverableError(, Message[ExpectedClassOrMixinBody, A class declaration must have a body, even if it is empty., Try adding an empty body., {string: class declaration}])
+              listener: handleRecoverableError(Message[ExpectedClassOrMixinBody, A class declaration must have a body, even if it is empty., Try adding an empty body., {string: class declaration}], int, int)
+            insertBlock()
+              rewriter()
+              rewriter()
+          parseClassOrMixinOrExtensionBody(, DeclarationKind.Class, )
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'SimpleType', x, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(x)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(x, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(x, x, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer())
+        ensureSemicolon(x)
+          reportRecoverableError(x, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration())
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar())
+      listener: endMetadataStar(0)
+    listener: beginTopLevelMember())
+    parseInvalidTopLevelDeclaration(;)
+      reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {token: )}], ), ))
+      listener: handleInvalidTopLevelDeclaration())
+  listener: endTopLevelDeclaration({)
+  parseTopLevelDeclarationImpl(), Instance of 'DirectiveContext')
+    parseMetadataStar())
+      listener: beginMetadataStar({)
+      listener: endMetadataStar(0)
+    listener: beginTopLevelMember({)
+    parseInvalidTopLevelDeclaration())
+      reportRecoverableErrorWithToken({, Instance of 'Template<(Token) => Message>')
+        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '{'., null, {token: {}], {, {)
+      parseInvalidBlock())
+        parseBlock(), BlockKind(invalid))
+          ensureBlock(), null, null)
+          listener: beginBlock({, BlockKind(invalid))
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(class, Instance of 'Template<(Token) => Message>')
+                            listener: handleIdentifier(class, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(class)
+                            parseArguments(class)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(class, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlock(2, {, }, BlockKind(invalid))
+        listener: handleInvalidTopLevelBlock({)
+      listener: handleInvalidTopLevelDeclaration(})
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(const)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(const)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(const)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(const)
+      insertSyntheticIdentifier(const, methodDeclaration, message: null, messageOnToken: null)
+        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+        rewriter()
+      reportRecoverableErrorWithToken(const, Instance of 'Template<(Token) => Message>')
+        listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'const' here., Try removing 'const'., {token: const}], const, const)
+      parseTopLevelMethod(;, null, const, Instance of 'NoType', null, )
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(const)
+        ensureIdentifier(const, topLevelFunctionDeclaration)
+          listener: handleIdentifier(, topLevelFunctionDeclaration)
+        parseMethodTypeVar()
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(, , false, MemberKind.TopLevelMethod)
+          parseFormalParameters(, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        parseConstExpression(return)
+                          listener: beginConstExpression(const)
+                          parseConstructorReference(const, null)
+                            ensureIdentifier(const, constructorReference)
+                              insertSyntheticIdentifier(const, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], messageOnToken: null)
+                                reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                                rewriter()
+                              listener: handleIdentifier(, constructorReference)
+                            listener: beginConstructorReference()
+                            parseQualifiedRestOpt(, constructorReferenceContinuation)
+                            listener: handleNoTypeArguments(()
+                            listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                            listener: endConstructorReference(, null, ()
+                          parseConstructorInvocationArguments()
+                            parseArgumentsRest(()
+                              listener: beginArguments(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(-)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(-)
+                                          listener: handleSend(x, -)
+                                  listener: beginBinaryExpression(-)
+                                  parsePrecedenceExpression(-, 14, true)
+                                    parseUnaryExpression(-, true)
+                                      parsePrimary(-, expression)
+                                        parseLiteralInt(-)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(-)
+                              listener: endArguments(1, (, ))
+                          listener: endConstExpression(const)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(const, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(continue)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(continue)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(continue)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(continue)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, continue)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+          listener: handleIdentifier(continue, topLevelFunctionDeclaration)
+        parseMethodTypeVar(continue)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(continue, continue, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(continue, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(continue)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(continue)
+                          listener: handleSend(, continue)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, continue)
+          parseStatement(;)
+            parseStatementX(;)
+              parseContinueStatement(;)
+                isContinueAllowed()
+                reportRecoverableError(continue, ContinueOutsideOfLoop)
+                  listener: handleRecoverableError(ContinueOutsideOfLoop, continue, continue)
+                ensureSemicolon(continue)
+                  reportRecoverableError(continue, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+                  rewriter()
+                listener: handleContinueStatement(false, continue, ;)
+          notEofOrValue(}, ()
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclaration(;, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                  looksLikeLocalFunction(()
+                  parseExpressionStatement(;)
+                    parseExpression(;)
+                      parsePrecedenceExpression(;, 1, true)
+                        parseUnaryExpression(;, true)
+                          parsePrimary(;, expression)
+                            parseParenthesizedExpressionOrFunctionLiteral(;)
+                              parseParenthesizedExpression(;)
+                                parseExpressionInParenthesis(;)
+                                  parseExpressionInParenthesisRest(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseSendOrFunctionLiteral((, expression)
+                                              parseSend((, expression)
+                                                ensureIdentifier((, expression)
+                                                  listener: handleIdentifier(x, expression)
+                                                listener: handleNoTypeArguments(-)
+                                                parseArgumentsOpt(x)
+                                                  listener: handleNoArguments(-)
+                                                listener: handleSend(x, -)
+                                        listener: beginBinaryExpression(-)
+                                        parsePrecedenceExpression(-, 14, true)
+                                          parseUnaryExpression(-, true)
+                                            parsePrimary(-, expression)
+                                              parseLiteralInt(-)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(-)
+                                    ensureCloseParen(1, ()
+                                listener: handleParenthesizedExpression(()
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(4, {, })
+        listener: endTopLevelMethod(continue, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(default)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(default)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(default)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(default)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, default)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+          listener: handleIdentifier(default, topLevelFunctionDeclaration)
+        parseMethodTypeVar(default)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(default, default, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(default, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+                            listener: handleIdentifier(default, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(default)
+                            parseArguments(default)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(default, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(default, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(do)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(do)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(do)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(do)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, do)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+          listener: handleIdentifier(do, topLevelFunctionDeclaration)
+        parseMethodTypeVar(do)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(do, do, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(do, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(do)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(do)
+                          listener: handleSend(, do)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], do, do)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, do)
+          parseStatement(;)
+            parseStatementX(;)
+              parseDoWhileStatement(;)
+                listener: beginDoWhileStatement(do)
+                listener: beginDoWhileStatementBody(()
+                parseStatement(do)
+                  parseStatementX(do)
+                    parseExpressionStatementOrDeclaration(do, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(do, do, null, null, null, false)
+                        looksLikeLocalFunction(()
+                        parseExpressionStatement(do)
+                          parseExpression(do)
+                            parsePrecedenceExpression(do, 1, true)
+                              parseUnaryExpression(do, true)
+                                parsePrimary(do, expression)
+                                  parseParenthesizedExpressionOrFunctionLiteral(do)
+                                    parseParenthesizedExpression(do)
+                                      parseExpressionInParenthesis(do)
+                                        parseExpressionInParenthesisRest(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          ensureCloseParen(1, ()
+                                      listener: handleParenthesizedExpression(()
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: handleExpressionStatement(;)
+                listener: endDoWhileStatementBody(;)
+                reportRecoverableError(}, Message[ExpectedButGot, Expected 'while' before this., null, {string: while}])
+                  listener: handleRecoverableError(Message[ExpectedButGot, Expected 'while' before this., null, {string: while}], }, })
+                rewriter()
+                ensureParenthesizedCondition(while)
+                  reportRecoverableError(}, Message[ExpectedToken, Expected to find '('., null, {string: (}])
+                    listener: handleRecoverableError(Message[ExpectedToken, Expected to find '('., null, {string: (}], }, })
+                  rewriter()
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSend((, expression)
+                              ensureIdentifier((, expression)
+                                reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., null, {token: }}], }, })
+                                rewriter()
+                                listener: handleIdentifier(, expression)
+                              listener: handleNoTypeArguments())
+                              parseArgumentsOpt()
+                                listener: handleNoArguments())
+                              listener: handleSend(, ))
+                    ensureCloseParen(, ()
+                  listener: handleParenthesizedCondition(()
+                ensureSemicolon())
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+                  rewriter()
+                listener: endDoWhileStatement(do, while, ;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(3, {, })
+        listener: endTopLevelMethod(do, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(else)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(else)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(else)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(else)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, else)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+          listener: handleIdentifier(else, topLevelFunctionDeclaration)
+        parseMethodTypeVar(else)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(else, else, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(else, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(else)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(else)
+                          listener: handleSend(, else)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, else)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclaration(;, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                  looksLikeLocalFunction(else)
+                  parseExpressionStatement(;)
+                    parseExpression(;)
+                      parsePrecedenceExpression(;, 1, true)
+                        parseUnaryExpression(;, true)
+                          parsePrimary(;, expression)
+                            inPlainSync()
+                            parseSend(;, expression)
+                              ensureIdentifier(;, expression)
+                                reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
+                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+                                rewriter()
+                                listener: handleIdentifier(, expression)
+                              listener: handleNoTypeArguments(else)
+                              parseArgumentsOpt()
+                                listener: handleNoArguments(else)
+                              listener: handleSend(, else)
+                    ensureSemicolon()
+                      reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+                      rewriter()
+                    listener: handleExpressionStatement(;)
+          reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+            listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], else, else)
+          notEofOrValue(}, ()
+          parseStatement(else)
+            parseStatementX(else)
+              parseExpressionStatementOrDeclaration(else, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(else, else, null, null, null, false)
+                  looksLikeLocalFunction(()
+                  parseExpressionStatement(else)
+                    parseExpression(else)
+                      parsePrecedenceExpression(else, 1, true)
+                        parseUnaryExpression(else, true)
+                          parsePrimary(else, expression)
+                            parseParenthesizedExpressionOrFunctionLiteral(else)
+                              parseParenthesizedExpression(else)
+                                parseExpressionInParenthesis(else)
+                                  parseExpressionInParenthesisRest(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseSendOrFunctionLiteral((, expression)
+                                              parseSend((, expression)
+                                                ensureIdentifier((, expression)
+                                                  listener: handleIdentifier(x, expression)
+                                                listener: handleNoTypeArguments(-)
+                                                parseArgumentsOpt(x)
+                                                  listener: handleNoArguments(-)
+                                                listener: handleSend(x, -)
+                                        listener: beginBinaryExpression(-)
+                                        parsePrecedenceExpression(-, 14, true)
+                                          parseUnaryExpression(-, true)
+                                            parsePrimary(-, expression)
+                                              parseLiteralInt(-)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(-)
+                                    ensureCloseParen(1, ()
+                                listener: handleParenthesizedExpression(()
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(4, {, })
+        listener: endTopLevelMethod(else, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(enum)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(enum)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(enum)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(;, enum, Instance of 'DirectiveContext')
+      parseTopLevelKeywordModifiers(;, enum)
+      parseEnum(enum)
+        listener: beginEnum(enum)
+        ensureIdentifier(enum, enumDeclaration)
+          reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+          rewriter()
+          listener: handleIdentifier(, enumDeclaration)
+        ensureBlock(, Instance of 'Template<(Token) => Message>', null)
+          reportRecoverableError(int, Message[ExpectedEnumBody, Expected a enum body, but got 'int'., An enum definition must have a body with at least one constant name., {token: int}])
+            listener: handleRecoverableError(Message[ExpectedEnumBody, Expected a enum body, but got 'int'., An enum definition must have a body with at least one constant name., {token: int}], int, int)
+          insertBlock()
+            rewriter()
+            rewriter()
+        listener: endEnum(enum, {, 0)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'SimpleType', x, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(x)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(x, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(x, x, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer())
+        ensureSemicolon(x)
+          reportRecoverableError(x, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration())
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar())
+      listener: endMetadataStar(0)
+    listener: beginTopLevelMember())
+    parseInvalidTopLevelDeclaration(;)
+      reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {token: )}], ), ))
+      listener: handleInvalidTopLevelDeclaration())
+  listener: endTopLevelDeclaration({)
+  parseTopLevelDeclarationImpl(), Instance of 'DirectiveContext')
+    parseMetadataStar())
+      listener: beginMetadataStar({)
+      listener: endMetadataStar(0)
+    listener: beginTopLevelMember({)
+    parseInvalidTopLevelDeclaration())
+      reportRecoverableErrorWithToken({, Instance of 'Template<(Token) => Message>')
+        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '{'., null, {token: {}], {, {)
+      parseInvalidBlock())
+        parseBlock(), BlockKind(invalid))
+          ensureBlock(), null, null)
+          listener: beginBlock({, BlockKind(invalid))
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(enum, Instance of 'Template<(Token) => Message>')
+                            listener: handleIdentifier(enum, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(enum)
+                            parseArguments(enum)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(enum, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlock(2, {, }, BlockKind(invalid))
+        listener: handleInvalidTopLevelBlock({)
+      listener: handleInvalidTopLevelDeclaration(})
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(extends)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(extends)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(extends)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(extends)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, extends)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+          listener: handleIdentifier(extends, topLevelFunctionDeclaration)
+        parseMethodTypeVar(extends)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(extends, extends, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(extends, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+                            listener: handleIdentifier(extends, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(extends)
+                            parseArguments(extends)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(extends, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(extends, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(false)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(false)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(false)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(false)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, false)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(false, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'false'., null, {token: false}], false, false)
+          listener: handleIdentifier(false, topLevelFunctionDeclaration)
+        parseMethodTypeVar(false)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(false, false, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(false, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        parseLiteralBool(return)
+                          listener: handleLiteralBool(false)
+                    parseArgumentOrIndexStar(false, Instance of 'NoTypeParamOrArg', false)
+                      listener: handleNoTypeArguments(()
+                      parseArguments(false)
+                        parseArgumentsRest(()
+                          listener: beginArguments(()
+                          parseExpression(()
+                            parsePrecedenceExpression((, 1, true)
+                              parseUnaryExpression((, true)
+                                parsePrimary((, expression)
+                                  parseSendOrFunctionLiteral((, expression)
+                                    parseSend((, expression)
+                                      ensureIdentifier((, expression)
+                                        listener: handleIdentifier(x, expression)
+                                      listener: handleNoTypeArguments(-)
+                                      parseArgumentsOpt(x)
+                                        listener: handleNoArguments(-)
+                                      listener: handleSend(x, -)
+                              listener: beginBinaryExpression(-)
+                              parsePrecedenceExpression(-, 14, true)
+                                parseUnaryExpression(-, true)
+                                  parsePrimary(-, expression)
+                                    parseLiteralInt(-)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(-)
+                          listener: endArguments(1, (, ))
+                      listener: handleSend((, ))
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(false, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(final)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(final)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(final)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(final)
+      insertSyntheticIdentifier(final, methodDeclaration, message: null, messageOnToken: null)
+        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+        rewriter()
+      reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
+        listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'final' here., Try removing 'final'., {token: final}], final, final)
+      parseTopLevelMethod(;, null, final, Instance of 'NoType', null, )
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(final)
+        ensureIdentifier(final, topLevelFunctionDeclaration)
+          listener: handleIdentifier(, topLevelFunctionDeclaration)
+        parseMethodTypeVar()
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(, , false, MemberKind.TopLevelMethod)
+          parseFormalParameters(, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(final)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(final)
+                          listener: handleSend(, final)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], final, final)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, final)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclarationAfterModifiers(final, ;, null, final, null, false)
+                looksLikeLocalFunction(()
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+                listener: handleNoType(final)
+                listener: beginVariablesDeclaration((, null, final)
+                parseVariablesDeclarationRest(final, true)
+                  parseOptionallyInitializedIdentifier(final)
+                    ensureIdentifier(final, localVariableDeclaration)
+                      reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                      listener: handleIdentifier(, localVariableDeclaration)
+                    listener: beginInitializedIdentifier()
+                    parseVariableInitializerOpt()
+                      listener: handleNoVariableInitializer(x)
+                    listener: endInitializedIdentifier()
+                  ensureSemicolon()
+                    reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                    rewriter()
+                  listener: endVariablesDeclaration(1, ;)
+          notEofOrValue(}, x)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                looksLikeLocalFunction(x)
+                parseExpressionStatement(;)
+                  parseExpression(;)
+                    parsePrecedenceExpression(;, 1, true)
+                      parseUnaryExpression(;, true)
+                        parsePrimary(;, expression)
+                          parseSendOrFunctionLiteral(;, expression)
+                            parseSend(;, expression)
+                              ensureIdentifier(;, expression)
+                                listener: handleIdentifier(x, expression)
+                              listener: handleNoTypeArguments(-)
+                              parseArgumentsOpt(x)
+                                listener: handleNoArguments(-)
+                              listener: handleSend(x, -)
+                      listener: beginBinaryExpression(-)
+                      parsePrecedenceExpression(-, 14, true)
+                        parseUnaryExpression(-, true)
+                          parsePrimary(-, expression)
+                            parseLiteralInt(-)
+                              listener: handleLiteralInt(1)
+                      listener: endBinaryExpression(-)
+                  ensureSemicolon(1)
+                    reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                    rewriter()
+                  listener: handleExpressionStatement(;)
+          notEofOrValue(}, ))
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclaration(;, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                  looksLikeLocalFunction())
+                  parseExpressionStatement(;)
+                    parseExpression(;)
+                      parsePrecedenceExpression(;, 1, true)
+                        parseUnaryExpression(;, true)
+                          parsePrimary(;, expression)
+                            parseSend(;, expression)
+                              ensureIdentifier(;, expression)
+                                reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                                rewriter()
+                                listener: handleIdentifier(, expression)
+                              listener: handleNoTypeArguments())
+                              parseArgumentsOpt()
+                                listener: handleNoArguments())
+                              listener: handleSend(, ))
+                    ensureSemicolon()
+                      reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                      rewriter()
+                    listener: handleExpressionStatement(;)
+          reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+            listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+          notEofOrValue(}, +)
+          parseStatement())
+            parseStatementX())
+              parseExpressionStatementOrDeclaration(), false)
+                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                  looksLikeLocalFunction(+)
+                  parseExpressionStatement())
+                    parseExpression())
+                      parsePrecedenceExpression(), 1, true)
+                        parseUnaryExpression(), true)
+                          rewriteAndRecover(), UnsupportedPrefixPlus, )
+                            reportRecoverableError(+, UnsupportedPrefixPlus)
+                              listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                            rewriter()
+                          parsePrimary(), expression)
+                            parseSendOrFunctionLiteral(), expression)
+                              parseSend(), expression)
+                                ensureIdentifier(), expression)
+                                  listener: handleIdentifier(, expression)
+                                listener: handleNoTypeArguments(+)
+                                parseArgumentsOpt()
+                                  listener: handleNoArguments(+)
+                                listener: handleSend(, +)
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(6, {, })
+        listener: endTopLevelMethod(final, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(finally)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(finally)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(finally)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(finally)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, finally)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+          listener: handleIdentifier(finally, topLevelFunctionDeclaration)
+        parseMethodTypeVar(finally)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(finally, finally, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(finally, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+                            listener: handleIdentifier(finally, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(finally)
+                            parseArguments(finally)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(finally, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(finally, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(for)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(for)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(for)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(for)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, for)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+          listener: handleIdentifier(for, topLevelFunctionDeclaration)
+        parseMethodTypeVar(for)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(for, for, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(for, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(for)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(for)
+                          listener: handleSend(, for)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], for, for)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, for)
+          parseStatement(;)
+            parseStatementX(;)
+              parseForStatement(;, null)
+                listener: beginForStatement(for)
+                parseForLoopPartsStart(null, for)
+                  parseExpressionStatementOrDeclaration((, true)
+                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, true)
+                parseForLoopPartsMid((, null, for)
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseSendOrFunctionLiteral((, expression)
+                            parseSend((, expression)
+                              ensureIdentifier((, expression)
+                                listener: handleIdentifier(x, expression)
+                              listener: handleNoTypeArguments(-)
+                              parseArgumentsOpt(x)
+                                listener: handleNoArguments(-)
+                              listener: handleSend(x, -)
+                      listener: beginBinaryExpression(-)
+                      parsePrecedenceExpression(-, 14, true)
+                        parseUnaryExpression(-, true)
+                          parsePrimary(-, expression)
+                            parseLiteralInt(-)
+                              listener: handleLiteralInt(1)
+                      listener: endBinaryExpression(-)
+                  listener: handleForInitializerExpressionStatement(1, false)
+                parseForRest(null, 1, for)
+                  parseForLoopPartsRest(1, for, null)
+                    ensureSemicolon(1)
+                      reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                      rewriter()
+                    parseExpressionStatement(;)
+                      parseExpression(;)
+                        parsePrecedenceExpression(;, 1, true)
+                          parseUnaryExpression(;, true)
+                            parsePrimary(;, expression)
+                              parseSend(;, expression)
+                                ensureIdentifier(;, expression)
+                                  reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                                  rewriter()
+                                  listener: handleIdentifier(, expression)
+                                listener: handleNoTypeArguments())
+                                parseArgumentsOpt()
+                                  listener: handleNoArguments())
+                                listener: handleSend(, ))
+                      ensureSemicolon()
+                        reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                          listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                        rewriter()
+                      listener: handleExpressionStatement(;)
+                    listener: handleForLoopParts(for, (, ;, 0)
+                  listener: beginForStatementBody(+)
+                  parseStatement())
+                    parseStatementX())
+                      parseExpressionStatementOrDeclaration(), false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                          looksLikeLocalFunction(+)
+                          parseExpressionStatement())
+                            parseExpression())
+                              parsePrecedenceExpression(), 1, true)
+                                parseUnaryExpression(), true)
+                                  rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                    reportRecoverableError(+, UnsupportedPrefixPlus)
+                                      listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                    rewriter()
+                                  parsePrimary(), expression)
+                                    parseSendOrFunctionLiteral(), expression)
+                                      parseSend(), expression)
+                                        ensureIdentifier(), expression)
+                                          listener: handleIdentifier(, expression)
+                                        listener: handleNoTypeArguments(+)
+                                        parseArgumentsOpt()
+                                          listener: handleNoArguments(+)
+                                        listener: handleSend(, +)
+                                listener: beginBinaryExpression(+)
+                                parsePrecedenceExpression(+, 14, true)
+                                  parseUnaryExpression(+, true)
+                                    parsePrimary(+, expression)
+                                      parseLiteralInt(+)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(+)
+                            ensureSemicolon(1)
+                            listener: handleExpressionStatement(;)
+                  listener: endForStatementBody(})
+                  listener: endForStatement(})
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(3, {, })
+        listener: endTopLevelMethod(for, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(if)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(if)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(if)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(if)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, if)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+          listener: handleIdentifier(if, topLevelFunctionDeclaration)
+        parseMethodTypeVar(if)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(if, if, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(if, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(if)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(if)
+                          listener: handleSend(, if)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], if, if)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, if)
+          parseStatement(;)
+            parseStatementX(;)
+              parseIfStatement(;)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(-)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(-)
+                                listener: handleSend(x, -)
+                        listener: beginBinaryExpression(-)
+                        parsePrecedenceExpression(-, 14, true)
+                          parseUnaryExpression(-, true)
+                            parsePrimary(-, expression)
+                              parseLiteralInt(-)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(-)
+                    ensureCloseParen(1, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(+)
+                parseStatement())
+                  parseStatementX())
+                    parseExpressionStatementOrDeclaration(), false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                        looksLikeLocalFunction(+)
+                        parseExpressionStatement())
+                          parseExpression())
+                            parsePrecedenceExpression(), 1, true)
+                              parseUnaryExpression(), true)
+                                rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                  reportRecoverableError(+, UnsupportedPrefixPlus)
+                                    listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                  rewriter()
+                                parsePrimary(), expression)
+                                  parseSendOrFunctionLiteral(), expression)
+                                    parseSend(), expression)
+                                      ensureIdentifier(), expression)
+                                        listener: handleIdentifier(, expression)
+                                      listener: handleNoTypeArguments(+)
+                                      parseArgumentsOpt()
+                                        listener: handleNoArguments(+)
+                                      listener: handleSend(, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: handleExpressionStatement(;)
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(3, {, })
+        listener: endTopLevelMethod(if, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(in)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(in)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(in)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(in)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, in)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+          listener: handleIdentifier(in, topLevelFunctionDeclaration)
+        parseMethodTypeVar(in)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(in, in, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(in, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+                            listener: handleIdentifier(in, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(in)
+                            parseArguments(in)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(in, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(in, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(is)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(is)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(is)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(is)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, is)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+          listener: handleIdentifier(is, topLevelFunctionDeclaration)
+        parseMethodTypeVar(is)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(is, is, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(is, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(is)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(is)
+                          listener: handleSend(, is)
+                    parseIsOperatorRest()
+                      listener: beginIsOperatorType(is)
+                      computeTypeAfterIsOrAs(is)
+                      reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[ExpectedType, Expected a type, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                      listener: handleIdentifier(, typeReference)
+                      listener: handleNoTypeArguments(()
+                      listener: handleType(, null)
+                      listener: endIsOperatorType(is)
+                      listener: handleIsOperator(is, null)
+                      skipChainedAsIsOperators()
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, ()
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclaration(;, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                  looksLikeLocalFunction(()
+                  parseExpressionStatement(;)
+                    parseExpression(;)
+                      parsePrecedenceExpression(;, 1, true)
+                        parseUnaryExpression(;, true)
+                          parsePrimary(;, expression)
+                            parseParenthesizedExpressionOrFunctionLiteral(;)
+                              parseParenthesizedExpression(;)
+                                parseExpressionInParenthesis(;)
+                                  parseExpressionInParenthesisRest(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseSendOrFunctionLiteral((, expression)
+                                              parseSend((, expression)
+                                                ensureIdentifier((, expression)
+                                                  listener: handleIdentifier(x, expression)
+                                                listener: handleNoTypeArguments(-)
+                                                parseArgumentsOpt(x)
+                                                  listener: handleNoArguments(-)
+                                                listener: handleSend(x, -)
+                                        listener: beginBinaryExpression(-)
+                                        parsePrecedenceExpression(-, 14, true)
+                                          parseUnaryExpression(-, true)
+                                            parsePrimary(-, expression)
+                                              parseLiteralInt(-)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(-)
+                                    ensureCloseParen(1, ()
+                                listener: handleParenthesizedExpression(()
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(3, {, })
+        listener: endTopLevelMethod(is, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(new)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(new)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(new)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(new)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, new)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'new'., null, {token: new}], new, new)
+          listener: handleIdentifier(new, topLevelFunctionDeclaration)
+        parseMethodTypeVar(new)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(new, new, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(new, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        parseNewExpression(return)
+                          listener: beginNewExpression(new)
+                          parseConstructorReference(new, null)
+                            ensureIdentifier(new, constructorReference)
+                              insertSyntheticIdentifier(new, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], messageOnToken: null)
+                                reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                                rewriter()
+                              listener: handleIdentifier(, constructorReference)
+                            listener: beginConstructorReference()
+                            parseQualifiedRestOpt(, constructorReferenceContinuation)
+                            listener: handleNoTypeArguments(()
+                            listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                            listener: endConstructorReference(, null, ()
+                          parseConstructorInvocationArguments()
+                            parseArgumentsRest(()
+                              listener: beginArguments(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(-)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(-)
+                                          listener: handleSend(x, -)
+                                  listener: beginBinaryExpression(-)
+                                  parsePrecedenceExpression(-, 14, true)
+                                    parseUnaryExpression(-, true)
+                                      parsePrimary(-, expression)
+                                        parseLiteralInt(-)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(-)
+                              listener: endArguments(1, (, ))
+                          listener: endNewExpression(new)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(new, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(null)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(null)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(null)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(null)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, null)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(null, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'null'., null, {token: null}], null, null)
+          listener: handleIdentifier(null, topLevelFunctionDeclaration)
+        parseMethodTypeVar(null)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(null, null, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(null, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        parseLiteralNull(return)
+                          listener: handleLiteralNull(null)
+                    parseArgumentOrIndexStar(null, Instance of 'NoTypeParamOrArg', false)
+                      listener: handleNoTypeArguments(()
+                      parseArguments(null)
+                        parseArgumentsRest(()
+                          listener: beginArguments(()
+                          parseExpression(()
+                            parsePrecedenceExpression((, 1, true)
+                              parseUnaryExpression((, true)
+                                parsePrimary((, expression)
+                                  parseSendOrFunctionLiteral((, expression)
+                                    parseSend((, expression)
+                                      ensureIdentifier((, expression)
+                                        listener: handleIdentifier(x, expression)
+                                      listener: handleNoTypeArguments(-)
+                                      parseArgumentsOpt(x)
+                                        listener: handleNoArguments(-)
+                                      listener: handleSend(x, -)
+                              listener: beginBinaryExpression(-)
+                              parsePrecedenceExpression(-, 14, true)
+                                parseUnaryExpression(-, true)
+                                  parsePrimary(-, expression)
+                                    parseLiteralInt(-)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(-)
+                          listener: endArguments(1, (, ))
+                      listener: handleSend((, ))
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(null, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(rethrow)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(rethrow)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(rethrow)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(rethrow)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, rethrow)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+          listener: handleIdentifier(rethrow, topLevelFunctionDeclaration)
+        parseMethodTypeVar(rethrow)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(rethrow, rethrow, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(rethrow, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+                            listener: handleIdentifier(rethrow, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(rethrow)
+                            parseArguments(rethrow)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(rethrow, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(rethrow, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(return)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(return)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(return)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(return)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, return)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'return'., null, {token: return}], return, return)
+          listener: handleIdentifier(return, topLevelFunctionDeclaration)
+        parseMethodTypeVar(return)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(return, return, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(return, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
+                          listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'return'., null, {token: return}], return, return)
+                        parsePrimary(return, expression)
+                          parseParenthesizedExpressionOrFunctionLiteral(return)
+                            parseParenthesizedExpression(return)
+                              parseExpressionInParenthesis(return)
+                                parseExpressionInParenthesisRest(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  ensureCloseParen(1, ()
+                              listener: handleParenthesizedExpression(()
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(return, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(super)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(super)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(super)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(super)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, super)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'super'., null, {token: super}], super, super)
+          listener: handleIdentifier(super, topLevelFunctionDeclaration)
+        parseMethodTypeVar(super)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(super, super, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(super, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        parseSuperExpression(return, expression)
+                          listener: handleSuperExpression(super, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArguments(super)
+                            parseArgumentsRest(()
+                              listener: beginArguments(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(-)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(-)
+                                          listener: handleSend(x, -)
+                                  listener: beginBinaryExpression(-)
+                                  parsePrecedenceExpression(-, 14, true)
+                                    parseUnaryExpression(-, true)
+                                      parsePrimary(-, expression)
+                                        parseLiteralInt(-)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(-)
+                              listener: endArguments(1, (, ))
+                          listener: handleSend(super, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(super, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(switch)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(switch)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(switch)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(switch)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, switch)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+          listener: handleIdentifier(switch, topLevelFunctionDeclaration)
+        parseMethodTypeVar(switch)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(switch, switch, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(switch, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(switch)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(switch)
+                          listener: handleSend(, switch)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], switch, switch)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, switch)
+          parseStatement(;)
+            parseStatementX(;)
+              parseSwitchStatement(;)
+                listener: beginSwitchStatement(switch)
+                ensureParenthesizedCondition(switch)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(-)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(-)
+                                listener: handleSend(x, -)
+                        listener: beginBinaryExpression(-)
+                        parsePrecedenceExpression(-, 14, true)
+                          parseUnaryExpression(-, true)
+                            parsePrimary(-, expression)
+                              parseLiteralInt(-)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(-)
+                    ensureCloseParen(1, ()
+                  listener: handleParenthesizedCondition(()
+                parseSwitchBlock())
+                  ensureBlock(), null, switch statement)
+                    reportRecoverableError(), Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}])
+                      listener: handleRecoverableError(Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}], ), ))
+                    insertBlock())
+                      rewriter()
+                      rewriter()
+                  listener: beginSwitchBlock({)
+                  notEofOrValue(}, })
+                  listener: endSwitchBlock(0, {, })
+                listener: endSwitchStatement(switch, })
+          notEofOrValue(}, +)
+          parseStatement(})
+            parseStatementX(})
+              parseExpressionStatementOrDeclaration(}, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+                  looksLikeLocalFunction(+)
+                  parseExpressionStatement(})
+                    parseExpression(})
+                      parsePrecedenceExpression(}, 1, true)
+                        parseUnaryExpression(}, true)
+                          rewriteAndRecover(}, UnsupportedPrefixPlus, )
+                            reportRecoverableError(+, UnsupportedPrefixPlus)
+                              listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                            rewriter()
+                          parsePrimary(}, expression)
+                            parseSendOrFunctionLiteral(}, expression)
+                              parseSend(}, expression)
+                                ensureIdentifier(}, expression)
+                                  listener: handleIdentifier(, expression)
+                                listener: handleNoTypeArguments(+)
+                                parseArgumentsOpt()
+                                  listener: handleNoArguments(+)
+                                listener: handleSend(, +)
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(4, {, })
+        listener: endTopLevelMethod(switch, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, this)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(this)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(this, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
+          listener: handleIdentifier(this, topLevelFunctionDeclaration)
+        parseMethodTypeVar(this)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(this, this, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(this, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        parseThisExpression(return, expression)
+                          listener: handleThisExpression(this, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArguments(this)
+                            parseArgumentsRest(()
+                              listener: beginArguments(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(-)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(-)
+                                          listener: handleSend(x, -)
+                                  listener: beginBinaryExpression(-)
+                                  parsePrecedenceExpression(-, 14, true)
+                                    parseUnaryExpression(-, true)
+                                      parsePrimary(-, expression)
+                                        parseLiteralInt(-)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(-)
+                              listener: endArguments(1, (, ))
+                          listener: handleSend(this, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(throw)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(throw)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(throw)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(throw)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, throw)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(throw, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'throw'., null, {token: throw}], throw, throw)
+          listener: handleIdentifier(throw, topLevelFunctionDeclaration)
+        parseMethodTypeVar(throw)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(throw, throw, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(throw, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parseThrowExpression(return, true)
+                    parseExpression(throw)
+                      parsePrecedenceExpression(throw, 1, true)
+                        parseUnaryExpression(throw, true)
+                          parsePrimary(throw, expression)
+                            parseParenthesizedExpressionOrFunctionLiteral(throw)
+                              parseParenthesizedExpression(throw)
+                                parseExpressionInParenthesis(throw)
+                                  parseExpressionInParenthesisRest(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseSendOrFunctionLiteral((, expression)
+                                              parseSend((, expression)
+                                                ensureIdentifier((, expression)
+                                                  listener: handleIdentifier(x, expression)
+                                                listener: handleNoTypeArguments(-)
+                                                parseArgumentsOpt(x)
+                                                  listener: handleNoArguments(-)
+                                                listener: handleSend(x, -)
+                                        listener: beginBinaryExpression(-)
+                                        parsePrecedenceExpression(-, 14, true)
+                                          parseUnaryExpression(-, true)
+                                            parsePrimary(-, expression)
+                                              parseLiteralInt(-)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(-)
+                                    ensureCloseParen(1, ()
+                                listener: handleParenthesizedExpression(()
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    listener: handleThrowExpression(throw, ;)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(throw, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(true)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(true)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(true)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(true)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, true)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(true, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'true'., null, {token: true}], true, true)
+          listener: handleIdentifier(true, topLevelFunctionDeclaration)
+        parseMethodTypeVar(true)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(true, true, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(true, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        parseLiteralBool(return)
+                          listener: handleLiteralBool(true)
+                    parseArgumentOrIndexStar(true, Instance of 'NoTypeParamOrArg', false)
+                      listener: handleNoTypeArguments(()
+                      parseArguments(true)
+                        parseArgumentsRest(()
+                          listener: beginArguments(()
+                          parseExpression(()
+                            parsePrecedenceExpression((, 1, true)
+                              parseUnaryExpression((, true)
+                                parsePrimary((, expression)
+                                  parseSendOrFunctionLiteral((, expression)
+                                    parseSend((, expression)
+                                      ensureIdentifier((, expression)
+                                        listener: handleIdentifier(x, expression)
+                                      listener: handleNoTypeArguments(-)
+                                      parseArgumentsOpt(x)
+                                        listener: handleNoArguments(-)
+                                      listener: handleSend(x, -)
+                              listener: beginBinaryExpression(-)
+                              parsePrecedenceExpression(-, 14, true)
+                                parseUnaryExpression(-, true)
+                                  parsePrimary(-, expression)
+                                    parseLiteralInt(-)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(-)
+                          listener: endArguments(1, (, ))
+                      listener: handleSend((, ))
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(true, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(try)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(try)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(try)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(try)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, try)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+          listener: handleIdentifier(try, topLevelFunctionDeclaration)
+        parseMethodTypeVar(try)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(try, try, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(try, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(try)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(try)
+                          listener: handleSend(, try)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], try, try)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, try)
+          parseStatement(;)
+            parseStatementX(;)
+              parseTryStatement(;)
+                listener: beginTryStatement(try)
+                parseBlock(try, BlockKind(try statement))
+                  ensureBlock(try, null, try statement)
+                    reportRecoverableError(try, Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}])
+                      listener: handleRecoverableError(Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}], try, try)
+                    insertBlock(try)
+                      rewriter()
+                      rewriter()
+                  listener: beginBlock({, BlockKind(try statement))
+                  notEofOrValue(}, })
+                  listener: endBlock(0, {, }, BlockKind(try statement))
+                reportRecoverableError(try, OnlyTry)
+                  listener: handleRecoverableError(OnlyTry, try, try)
+                listener: endTryStatement(0, try, null)
+          notEofOrValue(}, ()
+          parseStatement(})
+            parseStatementX(})
+              parseExpressionStatementOrDeclaration(}, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+                  looksLikeLocalFunction(()
+                  parseExpressionStatement(})
+                    parseExpression(})
+                      parsePrecedenceExpression(}, 1, true)
+                        parseUnaryExpression(}, true)
+                          parsePrimary(}, expression)
+                            parseParenthesizedExpressionOrFunctionLiteral(})
+                              parseParenthesizedExpression(})
+                                parseExpressionInParenthesis(})
+                                  parseExpressionInParenthesisRest(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseSendOrFunctionLiteral((, expression)
+                                              parseSend((, expression)
+                                                ensureIdentifier((, expression)
+                                                  listener: handleIdentifier(x, expression)
+                                                listener: handleNoTypeArguments(-)
+                                                parseArgumentsOpt(x)
+                                                  listener: handleNoArguments(-)
+                                                listener: handleSend(x, -)
+                                        listener: beginBinaryExpression(-)
+                                        parsePrecedenceExpression(-, 14, true)
+                                          parseUnaryExpression(-, true)
+                                            parsePrimary(-, expression)
+                                              parseLiteralInt(-)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(-)
+                                    ensureCloseParen(1, ()
+                                listener: handleParenthesizedExpression(()
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(4, {, })
+        listener: endTopLevelMethod(try, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(var)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(var)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(var)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(var)
+      insertSyntheticIdentifier(var, methodDeclaration, message: null, messageOnToken: null)
+        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+        rewriter()
+      reportRecoverableError(var, VarReturnType)
+        listener: handleRecoverableError(VarReturnType, var, var)
+      parseTopLevelMethod(;, null, var, Instance of 'NoType', null, )
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(var)
+        ensureIdentifier(var, topLevelFunctionDeclaration)
+          listener: handleIdentifier(, topLevelFunctionDeclaration)
+        parseMethodTypeVar()
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(, , false, MemberKind.TopLevelMethod)
+          parseFormalParameters(, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(var, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(var)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(var)
+                          listener: handleSend(, var)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], var, var)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, var)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+                looksLikeLocalFunction(()
+                listener: beginMetadataStar(var)
+                listener: endMetadataStar(0)
+                listener: handleNoType(var)
+                listener: beginVariablesDeclaration((, null, var)
+                parseVariablesDeclarationRest(var, true)
+                  parseOptionallyInitializedIdentifier(var)
+                    ensureIdentifier(var, localVariableDeclaration)
+                      reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                      listener: handleIdentifier(, localVariableDeclaration)
+                    listener: beginInitializedIdentifier()
+                    parseVariableInitializerOpt()
+                      listener: handleNoVariableInitializer(x)
+                    listener: endInitializedIdentifier()
+                  ensureSemicolon()
+                    reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                    rewriter()
+                  listener: endVariablesDeclaration(1, ;)
+          notEofOrValue(}, x)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                looksLikeLocalFunction(x)
+                parseExpressionStatement(;)
+                  parseExpression(;)
+                    parsePrecedenceExpression(;, 1, true)
+                      parseUnaryExpression(;, true)
+                        parsePrimary(;, expression)
+                          parseSendOrFunctionLiteral(;, expression)
+                            parseSend(;, expression)
+                              ensureIdentifier(;, expression)
+                                listener: handleIdentifier(x, expression)
+                              listener: handleNoTypeArguments(-)
+                              parseArgumentsOpt(x)
+                                listener: handleNoArguments(-)
+                              listener: handleSend(x, -)
+                      listener: beginBinaryExpression(-)
+                      parsePrecedenceExpression(-, 14, true)
+                        parseUnaryExpression(-, true)
+                          parsePrimary(-, expression)
+                            parseLiteralInt(-)
+                              listener: handleLiteralInt(1)
+                      listener: endBinaryExpression(-)
+                  ensureSemicolon(1)
+                    reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                    rewriter()
+                  listener: handleExpressionStatement(;)
+          notEofOrValue(}, ))
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclaration(;, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                  looksLikeLocalFunction())
+                  parseExpressionStatement(;)
+                    parseExpression(;)
+                      parsePrecedenceExpression(;, 1, true)
+                        parseUnaryExpression(;, true)
+                          parsePrimary(;, expression)
+                            parseSend(;, expression)
+                              ensureIdentifier(;, expression)
+                                reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                                rewriter()
+                                listener: handleIdentifier(, expression)
+                              listener: handleNoTypeArguments())
+                              parseArgumentsOpt()
+                                listener: handleNoArguments())
+                              listener: handleSend(, ))
+                    ensureSemicolon()
+                      reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                      rewriter()
+                    listener: handleExpressionStatement(;)
+          reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+            listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+          notEofOrValue(}, +)
+          parseStatement())
+            parseStatementX())
+              parseExpressionStatementOrDeclaration(), false)
+                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                  looksLikeLocalFunction(+)
+                  parseExpressionStatement())
+                    parseExpression())
+                      parsePrecedenceExpression(), 1, true)
+                        parseUnaryExpression(), true)
+                          rewriteAndRecover(), UnsupportedPrefixPlus, )
+                            reportRecoverableError(+, UnsupportedPrefixPlus)
+                              listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                            rewriter()
+                          parsePrimary(), expression)
+                            parseSendOrFunctionLiteral(), expression)
+                              parseSend(), expression)
+                                ensureIdentifier(), expression)
+                                  listener: handleIdentifier(, expression)
+                                listener: handleNoTypeArguments(+)
+                                parseArgumentsOpt()
+                                  listener: handleNoArguments(+)
+                                listener: handleSend(, +)
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(6, {, })
+        listener: endTopLevelMethod(var, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(void)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(void)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(void)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(void)
+      insertSyntheticIdentifier(void, methodDeclaration, message: null, messageOnToken: null)
+        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+        rewriter()
+      parseTopLevelMethod(;, null, ;, Instance of 'VoidType', null, )
+        listener: beginTopLevelMethod(;, null)
+        listener: handleVoidKeyword(void)
+        ensureIdentifier(void, topLevelFunctionDeclaration)
+          listener: handleIdentifier(, topLevelFunctionDeclaration)
+        parseMethodTypeVar()
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(, , false, MemberKind.TopLevelMethod)
+          parseFormalParameters(, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        parseSendOrFunctionLiteral(return, expression)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              reportRecoverableErrorWithToken(void, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+                              rewriter()
+                              listener: handleIdentifier(, expression)
+                            listener: handleNoTypeArguments(void)
+                            parseArgumentsOpt()
+                              listener: handleNoArguments(void)
+                            listener: handleSend(, void)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, void)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclaration(;, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                  looksLikeLocalFunction(()
+                  listener: beginMetadataStar(void)
+                  listener: endMetadataStar(0)
+                  listener: handleVoidKeyword(void)
+                  listener: beginVariablesDeclaration((, null, null)
+                  parseVariablesDeclarationRest(void, true)
+                    parseOptionallyInitializedIdentifier(void)
+                      ensureIdentifier(void, localVariableDeclaration)
+                        reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+                          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                        rewriter()
+                        listener: handleIdentifier(, localVariableDeclaration)
+                      listener: beginInitializedIdentifier()
+                      parseVariableInitializerOpt()
+                        listener: handleNoVariableInitializer(x)
+                      listener: endInitializedIdentifier()
+                    ensureSemicolon()
+                      reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                      rewriter()
+                    listener: endVariablesDeclaration(1, ;)
+          notEofOrValue(}, x)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                looksLikeLocalFunction(x)
+                parseExpressionStatement(;)
+                  parseExpression(;)
+                    parsePrecedenceExpression(;, 1, true)
+                      parseUnaryExpression(;, true)
+                        parsePrimary(;, expression)
+                          parseSendOrFunctionLiteral(;, expression)
+                            parseSend(;, expression)
+                              ensureIdentifier(;, expression)
+                                listener: handleIdentifier(x, expression)
+                              listener: handleNoTypeArguments(-)
+                              parseArgumentsOpt(x)
+                                listener: handleNoArguments(-)
+                              listener: handleSend(x, -)
+                      listener: beginBinaryExpression(-)
+                      parsePrecedenceExpression(-, 14, true)
+                        parseUnaryExpression(-, true)
+                          parsePrimary(-, expression)
+                            parseLiteralInt(-)
+                              listener: handleLiteralInt(1)
+                      listener: endBinaryExpression(-)
+                  ensureSemicolon(1)
+                    reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                    rewriter()
+                  listener: handleExpressionStatement(;)
+          notEofOrValue(}, ))
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclaration(;, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                  looksLikeLocalFunction())
+                  parseExpressionStatement(;)
+                    parseExpression(;)
+                      parsePrecedenceExpression(;, 1, true)
+                        parseUnaryExpression(;, true)
+                          parsePrimary(;, expression)
+                            parseSend(;, expression)
+                              ensureIdentifier(;, expression)
+                                reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                                rewriter()
+                                listener: handleIdentifier(, expression)
+                              listener: handleNoTypeArguments())
+                              parseArgumentsOpt()
+                                listener: handleNoArguments())
+                              listener: handleSend(, ))
+                    ensureSemicolon()
+                      reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                      rewriter()
+                    listener: handleExpressionStatement(;)
+          reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+            listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+          notEofOrValue(}, +)
+          parseStatement())
+            parseStatementX())
+              parseExpressionStatementOrDeclaration(), false)
+                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                  looksLikeLocalFunction(+)
+                  parseExpressionStatement())
+                    parseExpression())
+                      parsePrecedenceExpression(), 1, true)
+                        parseUnaryExpression(), true)
+                          rewriteAndRecover(), UnsupportedPrefixPlus, )
+                            reportRecoverableError(+, UnsupportedPrefixPlus)
+                              listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                            rewriter()
+                          parsePrimary(), expression)
+                            parseSendOrFunctionLiteral(), expression)
+                              parseSend(), expression)
+                                ensureIdentifier(), expression)
+                                  listener: handleIdentifier(, expression)
+                                listener: handleNoTypeArguments(+)
+                                parseArgumentsOpt()
+                                  listener: handleNoArguments(+)
+                                listener: handleSend(, +)
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(6, {, })
+        listener: endTopLevelMethod(void, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(while)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(while)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(while)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(while)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, while)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+          listener: handleIdentifier(while, topLevelFunctionDeclaration)
+        parseMethodTypeVar(while)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(while, while, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(while, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(while)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(while)
+                          listener: handleSend(, while)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], while, while)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, while)
+          parseStatement(;)
+            parseStatementX(;)
+              parseWhileStatement(;)
+                listener: beginWhileStatement(while)
+                ensureParenthesizedCondition(while)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(-)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(-)
+                                listener: handleSend(x, -)
+                        listener: beginBinaryExpression(-)
+                        parsePrecedenceExpression(-, 14, true)
+                          parseUnaryExpression(-, true)
+                            parsePrimary(-, expression)
+                              parseLiteralInt(-)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(-)
+                    ensureCloseParen(1, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginWhileStatementBody(+)
+                parseStatement())
+                  parseStatementX())
+                    parseExpressionStatementOrDeclaration(), false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                        looksLikeLocalFunction(+)
+                        parseExpressionStatement())
+                          parseExpression())
+                            parsePrecedenceExpression(), 1, true)
+                              parseUnaryExpression(), true)
+                                rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                  reportRecoverableError(+, UnsupportedPrefixPlus)
+                                    listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                  rewriter()
+                                parsePrimary(), expression)
+                                  parseSendOrFunctionLiteral(), expression)
+                                    parseSend(), expression)
+                                      ensureIdentifier(), expression)
+                                        listener: handleIdentifier(, expression)
+                                      listener: handleNoTypeArguments(+)
+                                      parseArgumentsOpt()
+                                        listener: handleNoArguments(+)
+                                      listener: handleSend(, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: handleExpressionStatement(;)
+                listener: endWhileStatementBody(})
+                listener: endWhileStatement(while, })
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(3, {, })
+        listener: endTopLevelMethod(while, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(with)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(with)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(with)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(with)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, with)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+          listener: handleIdentifier(with, topLevelFunctionDeclaration)
+        parseMethodTypeVar(with)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(with, with, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(with, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+                            listener: handleIdentifier(with, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(with)
+                            parseArguments(with)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(with, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(with, null, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(int)
+  listener: endCompilationUnit(71, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.parser.expect
new file mode 100644
index 0000000..1dc529d
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.parser.expect
@@ -0,0 +1,333 @@
+NOTICE: Stream was rewritten by parser!
+
+int ;assert(int x) {
+if (x == 0) return 42;
+return assert(x-1) + 1;
+}
+
+int ;break(int x) {
+if (x == 0) return 42;
+return ;break;(x-1) + 1;
+}
+
+int ;case(int x) {
+if (x == 0) return 42;
+return case(x-1) + 1;
+}
+
+int ;catch(int x) {
+if (x == 0) return 42;
+return catch(x-1) + 1;
+}
+
+int ;class({}int x;) {
+if (x == 0) return 42;
+return class(x-1) + 1;
+}
+
+int ;const(int x) {
+if (x == 0) return 42;
+return const(x-1) + 1;
+}
+
+int ;continue(int x) {
+if (x == 0) return 42;
+return ;continue;(x-1) + 1;
+}
+
+int ;default(int x) {
+if (x == 0) return 42;
+return default(x-1) + 1;
+}
+
+int ;do(int x) {
+if (x == 0) return 42;
+return ;do(x-1) + 1;
+while();}
+
+int ;else(int x) {
+if (x == 0) return 42;
+return ;;else(x-1) + 1;
+}
+
+int ;enum({}int x;) {
+if (x == 0) return 42;
+return enum(x-1) + 1;
+}
+
+int ;extends(int x) {
+if (x == 0) return 42;
+return extends(x-1) + 1;
+}
+
+int ;false(int x) {
+if (x == 0) return 42;
+return false(x-1) + 1;
+}
+
+int ;final(int x) {
+if (x == 0) return 42;
+return ;final(;x-1;;) + 1;
+}
+
+int ;finally(int x) {
+if (x == 0) return 42;
+return finally(x-1) + 1;
+}
+
+int ;for(int x) {
+if (x == 0) return 42;
+return ;for(x-1;;) + 1;
+}
+
+int ;if(int x) {
+if (x == 0) return 42;
+return ;if(x-1) + 1;
+}
+
+int ;in(int x) {
+if (x == 0) return 42;
+return in(x-1) + 1;
+}
+
+int ;is(int x) {
+if (x == 0) return 42;
+return is;(x-1) + 1;
+}
+
+int ;new(int x) {
+if (x == 0) return 42;
+return new(x-1) + 1;
+}
+
+int ;null(int x) {
+if (x == 0) return 42;
+return null(x-1) + 1;
+}
+
+int ;rethrow(int x) {
+if (x == 0) return 42;
+return rethrow(x-1) + 1;
+}
+
+int ;return(int x) {
+if (x == 0) return 42;
+return return(x-1) + 1;
+}
+
+int ;super(int x) {
+if (x == 0) return 42;
+return super(x-1) + 1;
+}
+
+int ;switch(int x) {
+if (x == 0) return 42;
+return ;switch(x-1) {}+ 1;
+}
+
+int this(int x) {
+if (x == 0) return 42;
+return this(x-1) + 1;
+}
+
+int ;throw(int x) {
+if (x == 0) return 42;
+return throw(x-1) + 1;
+}
+
+int ;true(int x) {
+if (x == 0) return 42;
+return true(x-1) + 1;
+}
+
+int ;try(int x) {
+if (x == 0) return 42;
+return ;try{}(x-1) + 1;
+}
+
+int ;var(int x) {
+if (x == 0) return 42;
+return ;var(;x-1;;) + 1;
+}
+
+int ;void(int x) {
+if (x == 0) return 42;
+return ;void(;x-1;;) + 1;
+}
+
+int ;while(int x) {
+if (x == 0) return 42;
+return ;while(x-1) + 1;
+}
+
+int ;with(int x) {
+if (x == 0) return 42;
+return with(x-1) + 1;
+}
+
+
+int[StringToken] ;[SyntheticToken]assert[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] assert[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]break[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]break[KeywordToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]case[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] case[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]catch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] catch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]class[KeywordToken]([BeginToken][SyntheticStringToken]{[SyntheticBeginToken]}[SyntheticToken]int[StringToken] x[StringToken];[SyntheticToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] class[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]const[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] const[KeywordToken][SyntheticStringToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]continue[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]continue[KeywordToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]default[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] default[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]do[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]do[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+while[SyntheticKeywordToken]([SyntheticBeginToken][SyntheticStringToken])[SyntheticToken];[SyntheticToken]}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]else[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken]else[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]enum[KeywordToken]([BeginToken][SyntheticStringToken]{[SyntheticBeginToken]}[SyntheticToken]int[StringToken] x[StringToken];[SyntheticToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] enum[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]extends[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] extends[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]false[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] false[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]final[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]final[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]finally[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] finally[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]for[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]for[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]if[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]if[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]in[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] in[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]is[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken]is[KeywordToken][SyntheticStringToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]new[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] new[KeywordToken][SyntheticStringToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]null[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] null[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]rethrow[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] rethrow[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]return[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] return[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]super[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] super[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]switch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]switch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] {[SyntheticBeginToken]}[SyntheticToken][SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] this[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] this[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]throw[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] throw[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]true[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] true[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]try[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]try[KeywordToken]{[SyntheticBeginToken]}[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]var[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]var[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]void[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]void[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]while[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]while[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]with[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] with[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.scanner.expect
new file mode 100644
index 0000000..896ca86
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.scanner.expect
@@ -0,0 +1,331 @@
+int assert(int x) {
+if (x == 0) return 42;
+return assert(x-1) + 1;
+}
+
+int break(int x) {
+if (x == 0) return 42;
+return break(x-1) + 1;
+}
+
+int case(int x) {
+if (x == 0) return 42;
+return case(x-1) + 1;
+}
+
+int catch(int x) {
+if (x == 0) return 42;
+return catch(x-1) + 1;
+}
+
+int class(int x) {
+if (x == 0) return 42;
+return class(x-1) + 1;
+}
+
+int const(int x) {
+if (x == 0) return 42;
+return const(x-1) + 1;
+}
+
+int continue(int x) {
+if (x == 0) return 42;
+return continue(x-1) + 1;
+}
+
+int default(int x) {
+if (x == 0) return 42;
+return default(x-1) + 1;
+}
+
+int do(int x) {
+if (x == 0) return 42;
+return do(x-1) + 1;
+}
+
+int else(int x) {
+if (x == 0) return 42;
+return else(x-1) + 1;
+}
+
+int enum(int x) {
+if (x == 0) return 42;
+return enum(x-1) + 1;
+}
+
+int extends(int x) {
+if (x == 0) return 42;
+return extends(x-1) + 1;
+}
+
+int false(int x) {
+if (x == 0) return 42;
+return false(x-1) + 1;
+}
+
+int final(int x) {
+if (x == 0) return 42;
+return final(x-1) + 1;
+}
+
+int finally(int x) {
+if (x == 0) return 42;
+return finally(x-1) + 1;
+}
+
+int for(int x) {
+if (x == 0) return 42;
+return for(x-1) + 1;
+}
+
+int if(int x) {
+if (x == 0) return 42;
+return if(x-1) + 1;
+}
+
+int in(int x) {
+if (x == 0) return 42;
+return in(x-1) + 1;
+}
+
+int is(int x) {
+if (x == 0) return 42;
+return is(x-1) + 1;
+}
+
+int new(int x) {
+if (x == 0) return 42;
+return new(x-1) + 1;
+}
+
+int null(int x) {
+if (x == 0) return 42;
+return null(x-1) + 1;
+}
+
+int rethrow(int x) {
+if (x == 0) return 42;
+return rethrow(x-1) + 1;
+}
+
+int return(int x) {
+if (x == 0) return 42;
+return return(x-1) + 1;
+}
+
+int super(int x) {
+if (x == 0) return 42;
+return super(x-1) + 1;
+}
+
+int switch(int x) {
+if (x == 0) return 42;
+return switch(x-1) + 1;
+}
+
+int this(int x) {
+if (x == 0) return 42;
+return this(x-1) + 1;
+}
+
+int throw(int x) {
+if (x == 0) return 42;
+return throw(x-1) + 1;
+}
+
+int true(int x) {
+if (x == 0) return 42;
+return true(x-1) + 1;
+}
+
+int try(int x) {
+if (x == 0) return 42;
+return try(x-1) + 1;
+}
+
+int var(int x) {
+if (x == 0) return 42;
+return var(x-1) + 1;
+}
+
+int void(int x) {
+if (x == 0) return 42;
+return void(x-1) + 1;
+}
+
+int while(int x) {
+if (x == 0) return 42;
+return while(x-1) + 1;
+}
+
+int with(int x) {
+if (x == 0) return 42;
+return with(x-1) + 1;
+}
+
+
+int[StringToken] assert[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] assert[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] break[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] break[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] case[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] case[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] catch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] catch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] class[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] class[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] const[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] const[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] continue[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] continue[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] default[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] default[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] do[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] do[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] else[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] else[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] enum[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] enum[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] extends[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] extends[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] false[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] false[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] final[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] final[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] finally[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] finally[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] for[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] for[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] if[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] if[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] in[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] in[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] is[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] is[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] new[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] new[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] null[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] null[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] rethrow[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] rethrow[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] return[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] return[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] super[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] super[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] switch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] switch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] this[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] this[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] throw[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] throw[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] true[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] true[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] try[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] try[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] var[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] var[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] void[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] void[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] while[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] while[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] with[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] with[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart
new file mode 100644
index 0000000..30bed69
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart
@@ -0,0 +1,164 @@
+int assert(int x) {
+  if (x == 0) return 42;
+  return assert(x-1) + 1;
+}
+
+int break(int x) {
+  if (x == 0) return 42;
+  return break(x-1) + 1;
+}
+
+int case(int x) {
+  if (x == 0) return 42;
+  return case(x-1) + 1;
+}
+
+int catch(int x) {
+  if (x == 0) return 42;
+  return catch(x-1) + 1;
+}
+
+int class(int x) {
+  if (x == 0) return 42;
+  return class(x-1) + 1;
+}
+
+int const(int x) {
+  if (x == 0) return 42;
+  return const(x-1) + 1;
+}
+
+int continue(int x) {
+  if (x == 0) return 42;
+  return continue(x-1) + 1;
+}
+
+int default(int x) {
+  if (x == 0) return 42;
+  return default(x-1) + 1;
+}
+
+int do(int x) {
+  if (x == 0) return 42;
+  return do(x-1) + 1;
+}
+
+int else(int x) {
+  if (x == 0) return 42;
+  return else(x-1) + 1;
+}
+
+int enum(int x) {
+  if (x == 0) return 42;
+  return enum(x-1) + 1;
+}
+
+int extends(int x) {
+  if (x == 0) return 42;
+  return extends(x-1) + 1;
+}
+
+int false(int x) {
+  if (x == 0) return 42;
+  return false(x-1) + 1;
+}
+
+int final(int x) {
+  if (x == 0) return 42;
+  return final(x-1) + 1;
+}
+
+int finally(int x) {
+  if (x == 0) return 42;
+  return finally(x-1) + 1;
+}
+
+int for(int x) {
+  if (x == 0) return 42;
+  return for(x-1) + 1;
+}
+
+int if(int x) {
+  if (x == 0) return 42;
+  return if(x-1) + 1;
+}
+
+int in(int x) {
+  if (x == 0) return 42;
+  return in(x-1) + 1;
+}
+
+int is(int x) {
+  if (x == 0) return 42;
+  return is(x-1) + 1;
+}
+
+int new(int x) {
+  if (x == 0) return 42;
+  return new(x-1) + 1;
+}
+
+int null(int x) {
+  if (x == 0) return 42;
+  return null(x-1) + 1;
+}
+
+int rethrow(int x) {
+  if (x == 0) return 42;
+  return rethrow(x-1) + 1;
+}
+
+int return(int x) {
+  if (x == 0) return 42;
+  return return(x-1) + 1;
+}
+
+int super(int x) {
+  if (x == 0) return 42;
+  return super(x-1) + 1;
+}
+
+int switch(int x) {
+  if (x == 0) return 42;
+  return switch(x-1) + 1;
+}
+
+int this(int x) {
+  if (x == 0) return 42;
+  return this(x-1) + 1;
+}
+
+int throw(int x) {
+  if (x == 0) return 42;
+  return throw(x-1) + 1;
+}
+
+int true(int x) {
+  if (x == 0) return 42;
+  return true(x-1) + 1;
+}
+
+int try(int x) {
+  if (x == 0) return 42;
+  return try(x-1) + 1;
+}
+
+int var(int x) {
+  if (x == 0) return 42;
+  return var(x-1) + 1;
+}
+
+int void(int x) {
+  if (x == 0) return 42;
+  return void(x-1) + 1;
+}
+
+int while(int x) {
+  if (x == 0) return 42;
+  return while(x-1) + 1;
+}
+
+int with(int x) {
+  if (x == 0) return 42;
+  return with(x-1) + 1;
+}
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.expect
new file mode 100644
index 0000000..5d0f1b4
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.expect
@@ -0,0 +1,3177 @@
+Problems reported:
+
+parser/error_recovery/reserved_words_top_level_methods:1:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int assert(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:1:1: Expected ';' after this.
+int assert(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:1:5: Expected an identifier, but got 'assert'.
+int assert(int x) {
+    ^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:3:10: `assert` can't be used as an expression.
+  return assert(x-1) + 1;
+         ^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:6:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int break(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:6:1: Expected ';' after this.
+int break(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:6:5: Expected an identifier, but got 'break'.
+int break(int x) {
+    ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:8:10: Expected an identifier, but got 'break'.
+  return break(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:8:10: Expected ';' after this.
+  return break(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:8:10: A break statement can't be used outside of a loop or switch statement.
+  return break(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:8:10: Expected ';' after this.
+  return break(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:11:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int case(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:11:1: Expected ';' after this.
+int case(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:11:5: Expected an identifier, but got 'case'.
+int case(int x) {
+    ^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:13:10: Expected an identifier, but got 'case'.
+  return case(x-1) + 1;
+         ^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:16:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int catch(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:16:1: Expected ';' after this.
+int catch(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:16:5: Expected an identifier, but got 'catch'.
+int catch(int x) {
+    ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:18:10: Expected an identifier, but got 'catch'.
+  return catch(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:21:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int class(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:21:1: Expected ';' after this.
+int class(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:21:10: Expected an identifier, but got '('.
+int class(int x) {
+         ^
+
+parser/error_recovery/reserved_words_top_level_methods:21:11: A class declaration must have a body, even if it is empty.
+int class(int x) {
+          ^^^
+
+parser/error_recovery/reserved_words_top_level_methods:21:15: Expected ';' after this.
+int class(int x) {
+              ^
+
+parser/error_recovery/reserved_words_top_level_methods:21:16: Expected a declaration, but got ')'.
+int class(int x) {
+               ^
+
+parser/error_recovery/reserved_words_top_level_methods:21:18: Expected a declaration, but got '{'.
+int class(int x) {
+                 ^
+
+parser/error_recovery/reserved_words_top_level_methods:26:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int const(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:26:1: Expected ';' after this.
+int const(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:26:10: Expected an identifier, but got '('.
+int const(int x) {
+         ^
+
+parser/error_recovery/reserved_words_top_level_methods:26:5: Can't have modifier 'const' here.
+int const(int x) {
+    ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:28:15: Expected an identifier, but got '('.
+  return const(x-1) + 1;
+              ^
+
+parser/error_recovery/reserved_words_top_level_methods:31:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int continue(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:31:1: Expected ';' after this.
+int continue(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:31:5: Expected an identifier, but got 'continue'.
+int continue(int x) {
+    ^^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:33:10: Expected an identifier, but got 'continue'.
+  return continue(x-1) + 1;
+         ^^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:33:10: Expected ';' after this.
+  return continue(x-1) + 1;
+         ^^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:33:10: A continue statement can't be used outside of a loop or switch statement.
+  return continue(x-1) + 1;
+         ^^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:33:10: Expected ';' after this.
+  return continue(x-1) + 1;
+         ^^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:36:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int default(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:36:1: Expected ';' after this.
+int default(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:36:5: Expected an identifier, but got 'default'.
+int default(int x) {
+    ^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:38:10: Expected an identifier, but got 'default'.
+  return default(x-1) + 1;
+         ^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:41:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int do(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:41:1: Expected ';' after this.
+int do(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:41:5: Expected an identifier, but got 'do'.
+int do(int x) {
+    ^^
+
+parser/error_recovery/reserved_words_top_level_methods:43:10: Expected an identifier, but got 'do'.
+  return do(x-1) + 1;
+         ^^
+
+parser/error_recovery/reserved_words_top_level_methods:43:10: Expected ';' after this.
+  return do(x-1) + 1;
+         ^^
+
+parser/error_recovery/reserved_words_top_level_methods:44:1: Expected 'while' before this.
+}
+^
+
+parser/error_recovery/reserved_words_top_level_methods:44:1: Expected to find '('.
+}
+^
+
+parser/error_recovery/reserved_words_top_level_methods:44:1: Expected an identifier, but got '}'.
+}
+^
+
+parser/error_recovery/reserved_words_top_level_methods:44:1: Expected ';' after this.
+}
+^
+
+parser/error_recovery/reserved_words_top_level_methods:46:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int else(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:46:1: Expected ';' after this.
+int else(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:46:5: Expected an identifier, but got 'else'.
+int else(int x) {
+    ^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:48:10: Expected an identifier, but got 'else'.
+  return else(x-1) + 1;
+         ^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:48:10: Expected ';' after this.
+  return else(x-1) + 1;
+         ^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:48:10: Expected an identifier, but got 'else'.
+  return else(x-1) + 1;
+         ^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:48:10: Expected ';' after this.
+  return else(x-1) + 1;
+         ^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:48:10: Unexpected token ';'.
+  return else(x-1) + 1;
+         ^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:51:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int enum(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:51:1: Expected ';' after this.
+int enum(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:51:9: Expected an identifier, but got '('.
+int enum(int x) {
+        ^
+
+parser/error_recovery/reserved_words_top_level_methods:51:10: Expected a enum body, but got 'int'.
+int enum(int x) {
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_methods:51:14: Expected ';' after this.
+int enum(int x) {
+             ^
+
+parser/error_recovery/reserved_words_top_level_methods:51:15: Expected a declaration, but got ')'.
+int enum(int x) {
+              ^
+
+parser/error_recovery/reserved_words_top_level_methods:51:17: Expected a declaration, but got '{'.
+int enum(int x) {
+                ^
+
+parser/error_recovery/reserved_words_top_level_methods:56:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int extends(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:56:1: Expected ';' after this.
+int extends(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:56:5: Expected an identifier, but got 'extends'.
+int extends(int x) {
+    ^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:58:10: Expected an identifier, but got 'extends'.
+  return extends(x-1) + 1;
+         ^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:61:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int false(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:61:1: Expected ';' after this.
+int false(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:61:5: Expected an identifier, but got 'false'.
+int false(int x) {
+    ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:66:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int final(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:66:1: Expected ';' after this.
+int final(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:66:10: Expected an identifier, but got '('.
+int final(int x) {
+         ^
+
+parser/error_recovery/reserved_words_top_level_methods:66:5: Can't have modifier 'final' here.
+int final(int x) {
+    ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:68:10: Expected an identifier, but got 'final'.
+  return final(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:68:10: Expected ';' after this.
+  return final(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:68:15: Expected an identifier, but got '('.
+  return final(x-1) + 1;
+              ^
+
+parser/error_recovery/reserved_words_top_level_methods:68:16: Expected ';' after this.
+  return final(x-1) + 1;
+               ^
+
+parser/error_recovery/reserved_words_top_level_methods:68:18: Expected ';' after this.
+  return final(x-1) + 1;
+                 ^
+
+parser/error_recovery/reserved_words_top_level_methods:68:19: Expected an identifier, but got ')'.
+  return final(x-1) + 1;
+                  ^
+
+parser/error_recovery/reserved_words_top_level_methods:68:19: Expected ';' after this.
+  return final(x-1) + 1;
+                  ^
+
+parser/error_recovery/reserved_words_top_level_methods:68:19: Unexpected token ';'.
+  return final(x-1) + 1;
+                  ^
+
+parser/error_recovery/reserved_words_top_level_methods:68:21: '+' is not a prefix operator.
+  return final(x-1) + 1;
+                    ^
+
+parser/error_recovery/reserved_words_top_level_methods:71:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int finally(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:71:1: Expected ';' after this.
+int finally(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:71:5: Expected an identifier, but got 'finally'.
+int finally(int x) {
+    ^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:73:10: Expected an identifier, but got 'finally'.
+  return finally(x-1) + 1;
+         ^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:76:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int for(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:76:1: Expected ';' after this.
+int for(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:76:5: Expected an identifier, but got 'for'.
+int for(int x) {
+    ^^^
+
+parser/error_recovery/reserved_words_top_level_methods:78:10: Expected an identifier, but got 'for'.
+  return for(x-1) + 1;
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_methods:78:10: Expected ';' after this.
+  return for(x-1) + 1;
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_methods:78:16: Expected ';' after this.
+  return for(x-1) + 1;
+               ^
+
+parser/error_recovery/reserved_words_top_level_methods:78:17: Expected an identifier, but got ')'.
+  return for(x-1) + 1;
+                ^
+
+parser/error_recovery/reserved_words_top_level_methods:78:17: Expected ';' after this.
+  return for(x-1) + 1;
+                ^
+
+parser/error_recovery/reserved_words_top_level_methods:78:19: '+' is not a prefix operator.
+  return for(x-1) + 1;
+                  ^
+
+parser/error_recovery/reserved_words_top_level_methods:81:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int if(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:81:1: Expected ';' after this.
+int if(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:81:5: Expected an identifier, but got 'if'.
+int if(int x) {
+    ^^
+
+parser/error_recovery/reserved_words_top_level_methods:83:10: Expected an identifier, but got 'if'.
+  return if(x-1) + 1;
+         ^^
+
+parser/error_recovery/reserved_words_top_level_methods:83:10: Expected ';' after this.
+  return if(x-1) + 1;
+         ^^
+
+parser/error_recovery/reserved_words_top_level_methods:83:18: '+' is not a prefix operator.
+  return if(x-1) + 1;
+                 ^
+
+parser/error_recovery/reserved_words_top_level_methods:86:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int in(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:86:1: Expected ';' after this.
+int in(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:86:5: Expected an identifier, but got 'in'.
+int in(int x) {
+    ^^
+
+parser/error_recovery/reserved_words_top_level_methods:88:10: Expected an identifier, but got 'in'.
+  return in(x-1) + 1;
+         ^^
+
+parser/error_recovery/reserved_words_top_level_methods:91:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int is(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:91:1: Expected ';' after this.
+int is(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:91:5: Expected an identifier, but got 'is'.
+int is(int x) {
+    ^^
+
+parser/error_recovery/reserved_words_top_level_methods:93:10: Expected an identifier, but got 'is'.
+  return is(x-1) + 1;
+         ^^
+
+parser/error_recovery/reserved_words_top_level_methods:93:12: Expected a type, but got '('.
+  return is(x-1) + 1;
+           ^
+
+parser/error_recovery/reserved_words_top_level_methods:93:12: Expected ';' after this.
+  return is(x-1) + 1;
+           ^
+
+parser/error_recovery/reserved_words_top_level_methods:96:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int new(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:96:1: Expected ';' after this.
+int new(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:96:5: Expected an identifier, but got 'new'.
+int new(int x) {
+    ^^^
+
+parser/error_recovery/reserved_words_top_level_methods:98:13: Expected an identifier, but got '('.
+  return new(x-1) + 1;
+            ^
+
+parser/error_recovery/reserved_words_top_level_methods:101:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int null(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:101:1: Expected ';' after this.
+int null(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:101:5: Expected an identifier, but got 'null'.
+int null(int x) {
+    ^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:106:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int rethrow(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:106:1: Expected ';' after this.
+int rethrow(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:106:5: Expected an identifier, but got 'rethrow'.
+int rethrow(int x) {
+    ^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:108:10: Expected an identifier, but got 'rethrow'.
+  return rethrow(x-1) + 1;
+         ^^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:111:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int return(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:111:1: Expected ';' after this.
+int return(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:111:5: Expected an identifier, but got 'return'.
+int return(int x) {
+    ^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:113:10: Unexpected token 'return'.
+  return return(x-1) + 1;
+         ^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:116:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int super(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:116:1: Expected ';' after this.
+int super(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:116:5: Expected an identifier, but got 'super'.
+int super(int x) {
+    ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:121:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int switch(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:121:1: Expected ';' after this.
+int switch(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:121:5: Expected an identifier, but got 'switch'.
+int switch(int x) {
+    ^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:123:10: Expected an identifier, but got 'switch'.
+  return switch(x-1) + 1;
+         ^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:123:10: Expected ';' after this.
+  return switch(x-1) + 1;
+         ^^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:123:20: A switch statement must have a body, even if it is empty.
+  return switch(x-1) + 1;
+                   ^
+
+parser/error_recovery/reserved_words_top_level_methods:123:22: '+' is not a prefix operator.
+  return switch(x-1) + 1;
+                     ^
+
+parser/error_recovery/reserved_words_top_level_methods:126:5: Expected an identifier, but got 'this'.
+int this(int x) {
+    ^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:131:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int throw(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:131:1: Expected ';' after this.
+int throw(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:131:5: Expected an identifier, but got 'throw'.
+int throw(int x) {
+    ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:136:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int true(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:136:1: Expected ';' after this.
+int true(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:136:5: Expected an identifier, but got 'true'.
+int true(int x) {
+    ^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:141:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int try(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:141:1: Expected ';' after this.
+int try(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:141:5: Expected an identifier, but got 'try'.
+int try(int x) {
+    ^^^
+
+parser/error_recovery/reserved_words_top_level_methods:143:10: Expected an identifier, but got 'try'.
+  return try(x-1) + 1;
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_methods:143:10: Expected ';' after this.
+  return try(x-1) + 1;
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_methods:143:10: A try statement must have a body, even if it is empty.
+  return try(x-1) + 1;
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_methods:143:10: A try block must be followed by an 'on', 'catch', or 'finally' clause.
+  return try(x-1) + 1;
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_methods:146:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int var(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:146:1: Expected ';' after this.
+int var(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:146:8: Expected an identifier, but got '('.
+int var(int x) {
+       ^
+
+parser/error_recovery/reserved_words_top_level_methods:146:5: The return type can't be 'var'.
+int var(int x) {
+    ^^^
+
+parser/error_recovery/reserved_words_top_level_methods:148:10: Expected an identifier, but got 'var'.
+  return var(x-1) + 1;
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_methods:148:10: Expected ';' after this.
+  return var(x-1) + 1;
+         ^^^
+
+parser/error_recovery/reserved_words_top_level_methods:148:13: Expected an identifier, but got '('.
+  return var(x-1) + 1;
+            ^
+
+parser/error_recovery/reserved_words_top_level_methods:148:14: Expected ';' after this.
+  return var(x-1) + 1;
+             ^
+
+parser/error_recovery/reserved_words_top_level_methods:148:16: Expected ';' after this.
+  return var(x-1) + 1;
+               ^
+
+parser/error_recovery/reserved_words_top_level_methods:148:17: Expected an identifier, but got ')'.
+  return var(x-1) + 1;
+                ^
+
+parser/error_recovery/reserved_words_top_level_methods:148:17: Expected ';' after this.
+  return var(x-1) + 1;
+                ^
+
+parser/error_recovery/reserved_words_top_level_methods:148:17: Unexpected token ';'.
+  return var(x-1) + 1;
+                ^
+
+parser/error_recovery/reserved_words_top_level_methods:148:19: '+' is not a prefix operator.
+  return var(x-1) + 1;
+                  ^
+
+parser/error_recovery/reserved_words_top_level_methods:151:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int void(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:151:1: Expected ';' after this.
+int void(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:151:9: Expected an identifier, but got '('.
+int void(int x) {
+        ^
+
+parser/error_recovery/reserved_words_top_level_methods:153:10: Expected an identifier, but got 'void'.
+  return void(x-1) + 1;
+         ^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:153:10: Expected ';' after this.
+  return void(x-1) + 1;
+         ^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:153:14: Expected an identifier, but got '('.
+  return void(x-1) + 1;
+             ^
+
+parser/error_recovery/reserved_words_top_level_methods:153:15: Expected ';' after this.
+  return void(x-1) + 1;
+              ^
+
+parser/error_recovery/reserved_words_top_level_methods:153:17: Expected ';' after this.
+  return void(x-1) + 1;
+                ^
+
+parser/error_recovery/reserved_words_top_level_methods:153:18: Expected an identifier, but got ')'.
+  return void(x-1) + 1;
+                 ^
+
+parser/error_recovery/reserved_words_top_level_methods:153:18: Expected ';' after this.
+  return void(x-1) + 1;
+                 ^
+
+parser/error_recovery/reserved_words_top_level_methods:153:18: Unexpected token ';'.
+  return void(x-1) + 1;
+                 ^
+
+parser/error_recovery/reserved_words_top_level_methods:153:20: '+' is not a prefix operator.
+  return void(x-1) + 1;
+                   ^
+
+parser/error_recovery/reserved_words_top_level_methods:156:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int while(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:156:1: Expected ';' after this.
+int while(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:156:5: Expected an identifier, but got 'while'.
+int while(int x) {
+    ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:158:10: Expected an identifier, but got 'while'.
+  return while(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:158:10: Expected ';' after this.
+  return while(x-1) + 1;
+         ^^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:158:21: '+' is not a prefix operator.
+  return while(x-1) + 1;
+                    ^
+
+parser/error_recovery/reserved_words_top_level_methods:161:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+int with(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:161:1: Expected ';' after this.
+int with(int x) {
+^^^
+
+parser/error_recovery/reserved_words_top_level_methods:161:5: Expected an identifier, but got 'with'.
+int with(int x) {
+    ^^^^
+
+parser/error_recovery/reserved_words_top_level_methods:163:10: Expected an identifier, but got 'with'.
+  return with(x-1) + 1;
+         ^^^^
+
+beginCompilationUnit(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    handleRecoverableError(MissingConstFinalVarOrType, int, int)
+    handleNoType()
+    handleIdentifier(int, topLevelVariableDeclaration)
+    handleNoFieldInitializer(assert)
+    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+  endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(assert)
+beginMetadataStar(assert)
+endMetadataStar(0)
+beginTopLevelMember(assert)
+  beginTopLevelMethod(;, null)
+    handleNoType(;)
+    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'assert'., null, {token: assert}], assert, assert)
+    handleIdentifier(assert, topLevelFunctionDeclaration)
+    handleNoTypeVariables(()
+    beginFormalParameters((, MemberKind.TopLevelMethod)
+      beginMetadataStar(int)
+      endMetadataStar(0)
+      beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(x)
+        handleType(int, null)
+        handleIdentifier(x, formalParameterDeclaration)
+        handleFormalParameterWithoutValue())
+      endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+    endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+    handleAsyncModifier(null, null)
+    beginBlockFunctionBody({)
+      beginIfStatement(if)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(==)
+        handleNoArguments(==)
+        handleSend(x, ==)
+        beginBinaryExpression(==)
+        handleLiteralInt(0)
+        endBinaryExpression(==)
+        handleParenthesizedCondition(()
+        beginThenStatement(return)
+          beginReturnStatement(return)
+            handleLiteralInt(42)
+          endReturnStatement(true, return, ;)
+        endThenStatement(;)
+      endIfStatement(if, null)
+      beginReturnStatement(return)
+        beginAssert(assert, Assert.Expression)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(-)
+          handleNoArguments(-)
+          handleSend(x, -)
+          beginBinaryExpression(-)
+          handleLiteralInt(1)
+          endBinaryExpression(-)
+          handleRecoverableError(AssertAsExpression, assert, assert)
+        endAssert(assert, Assert.Expression, (, null, +)
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+      endReturnStatement(true, return, ;)
+    endBlockFunctionBody(2, {, })
+  endTopLevelMethod(assert, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+  handleRecoverableError(MissingConstFinalVarOrType, int, int)
+  handleNoType(})
+  handleIdentifier(int, topLevelVariableDeclaration)
+  handleNoFieldInitializer(break)
+  handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(break)
+beginMetadataStar(break)
+endMetadataStar(0)
+beginTopLevelMember(break)
+beginTopLevelMethod(;, null)
+  handleNoType(;)
+  handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+  handleIdentifier(break, topLevelFunctionDeclaration)
+  handleNoTypeVariables(()
+  beginFormalParameters((, MemberKind.TopLevelMethod)
+    beginMetadataStar(int)
+    endMetadataStar(0)
+    beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(x)
+      handleType(int, null)
+      handleIdentifier(x, formalParameterDeclaration)
+      handleFormalParameterWithoutValue())
+    endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+  endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+  handleAsyncModifier(null, null)
+  beginBlockFunctionBody({)
+    beginIfStatement(if)
+      handleIdentifier(x, expression)
+      handleNoTypeArguments(==)
+      handleNoArguments(==)
+      handleSend(x, ==)
+      beginBinaryExpression(==)
+      handleLiteralInt(0)
+      endBinaryExpression(==)
+      handleParenthesizedCondition(()
+      beginThenStatement(return)
+        beginReturnStatement(return)
+          handleLiteralInt(42)
+        endReturnStatement(true, return, ;)
+      endThenStatement(;)
+    endIfStatement(if, null)
+    beginReturnStatement(return)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+      handleIdentifier(, expression)
+      handleNoTypeArguments(break)
+      handleNoArguments(break)
+      handleSend(, break)
+      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+    endReturnStatement(true, return, ;)
+    handleRecoverableError(BreakOutsideOfLoop, break, break)
+    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+    handleBreakStatement(false, break, ;)
+    handleIdentifier(x, expression)
+    handleNoTypeArguments(-)
+    handleNoArguments(-)
+    handleSend(x, -)
+    beginBinaryExpression(-)
+    handleLiteralInt(1)
+    endBinaryExpression(-)
+    handleParenthesizedExpression(()
+    beginBinaryExpression(+)
+    handleLiteralInt(1)
+    endBinaryExpression(+)
+    handleExpressionStatement(;)
+  endBlockFunctionBody(4, {, })
+endTopLevelMethod(break, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(case)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(case)
+beginMetadataStar(case)
+endMetadataStar(0)
+beginTopLevelMember(case)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+handleIdentifier(case, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+    handleIdentifier(int, typeReference)
+    handleNoTypeArguments(x)
+    handleType(int, null)
+    handleIdentifier(x, formalParameterDeclaration)
+    handleFormalParameterWithoutValue())
+  endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+  beginIfStatement(if)
+    handleIdentifier(x, expression)
+    handleNoTypeArguments(==)
+    handleNoArguments(==)
+    handleSend(x, ==)
+    beginBinaryExpression(==)
+    handleLiteralInt(0)
+    endBinaryExpression(==)
+    handleParenthesizedCondition(()
+    beginThenStatement(return)
+      beginReturnStatement(return)
+        handleLiteralInt(42)
+      endReturnStatement(true, return, ;)
+    endThenStatement(;)
+  endIfStatement(if, null)
+  beginReturnStatement(return)
+    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+    handleIdentifier(case, expression)
+    handleNoTypeArguments(()
+    beginArguments(()
+      handleIdentifier(x, expression)
+      handleNoTypeArguments(-)
+      handleNoArguments(-)
+      handleSend(x, -)
+      beginBinaryExpression(-)
+      handleLiteralInt(1)
+      endBinaryExpression(-)
+    endArguments(1, (, ))
+    handleSend(case, +)
+    beginBinaryExpression(+)
+    handleLiteralInt(1)
+    endBinaryExpression(+)
+  endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(case, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(catch)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(catch)
+beginMetadataStar(catch)
+endMetadataStar(0)
+beginTopLevelMember(catch)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+handleIdentifier(catch, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+  handleIdentifier(int, typeReference)
+  handleNoTypeArguments(x)
+  handleType(int, null)
+  handleIdentifier(x, formalParameterDeclaration)
+  handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+  handleIdentifier(x, expression)
+  handleNoTypeArguments(==)
+  handleNoArguments(==)
+  handleSend(x, ==)
+  beginBinaryExpression(==)
+  handleLiteralInt(0)
+  endBinaryExpression(==)
+  handleParenthesizedCondition(()
+  beginThenStatement(return)
+    beginReturnStatement(return)
+      handleLiteralInt(42)
+    endReturnStatement(true, return, ;)
+  endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+  handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+  handleIdentifier(catch, expression)
+  handleNoTypeArguments(()
+  beginArguments(()
+    handleIdentifier(x, expression)
+    handleNoTypeArguments(-)
+    handleNoArguments(-)
+    handleSend(x, -)
+    beginBinaryExpression(-)
+    handleLiteralInt(1)
+    endBinaryExpression(-)
+  endArguments(1, (, ))
+  handleSend(catch, +)
+  beginBinaryExpression(+)
+  handleLiteralInt(1)
+  endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(catch, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(class)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(class)
+beginMetadataStar(class)
+endMetadataStar(0)
+beginClassOrNamedMixinApplicationPrelude(class)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, classOrMixinDeclaration)
+handleNoTypeVariables(int)
+beginClassDeclaration(class, null, )
+handleNoType()
+handleClassExtends(null)
+handleClassNoWithClause()
+handleClassOrMixinImplements(null, 0)
+handleClassHeader(class, class, null)
+handleNoType()
+handleClassExtends(null)
+handleClassNoWithClause()
+handleClassOrMixinImplements(null, 0)
+handleRecoverClassHeader()
+handleRecoverableError(Message[ExpectedClassOrMixinBody, A class declaration must have a body, even if it is empty., Try adding an empty body., {string: class declaration}], int, int)
+beginClassOrMixinBody(DeclarationKind.Class, {)
+endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+endClassDeclaration(class, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, topLevelVariableDeclaration)
+handleNoFieldInitializer())
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration())
+beginMetadataStar())
+endMetadataStar(0)
+beginTopLevelMember())
+handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {token: )}], ), ))
+handleInvalidTopLevelDeclaration())
+endTopLevelDeclaration({)
+beginMetadataStar({)
+endMetadataStar(0)
+beginTopLevelMember({)
+handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '{'., null, {token: {}], {, {)
+beginBlock({, BlockKind(invalid))
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleIdentifier(class, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(class, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlock(2, {, }, BlockKind(invalid))
+handleInvalidTopLevelBlock({)
+handleInvalidTopLevelDeclaration(})
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(const)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(const)
+beginMetadataStar(const)
+endMetadataStar(0)
+beginTopLevelMember(const)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'const' here., Try removing 'const'., {token: const}], const, const)
+beginTopLevelMethod(;, null)
+handleNoType(const)
+handleIdentifier(, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+beginConstExpression(const)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, constructorReference)
+beginConstructorReference()
+handleNoTypeArguments(()
+handleNoConstructorReferenceContinuationAfterTypeArguments(()
+endConstructorReference(, null, ()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+endConstExpression(const)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(const, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(continue)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(continue)
+beginMetadataStar(continue)
+endMetadataStar(0)
+beginTopLevelMember(continue)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+handleIdentifier(continue, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+handleIdentifier(, expression)
+handleNoTypeArguments(continue)
+handleNoArguments(continue)
+handleSend(, continue)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+endReturnStatement(true, return, ;)
+handleRecoverableError(ContinueOutsideOfLoop, continue, continue)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+handleContinueStatement(false, continue, ;)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(4, {, })
+endTopLevelMethod(continue, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(default)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(default)
+beginMetadataStar(default)
+endMetadataStar(0)
+beginTopLevelMember(default)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+handleIdentifier(default, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+handleIdentifier(default, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(default, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(default, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(do)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(do)
+beginMetadataStar(do)
+endMetadataStar(0)
+beginTopLevelMember(do)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+handleIdentifier(do, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+handleIdentifier(, expression)
+handleNoTypeArguments(do)
+handleNoArguments(do)
+handleSend(, do)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], do, do)
+endReturnStatement(true, return, ;)
+beginDoWhileStatement(do)
+beginDoWhileStatementBody(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endDoWhileStatementBody(;)
+handleRecoverableError(Message[ExpectedButGot, Expected 'while' before this., null, {string: while}], }, })
+handleRecoverableError(Message[ExpectedToken, Expected to find '('., null, {string: (}], }, })
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., null, {token: }}], }, })
+handleIdentifier(, expression)
+handleNoTypeArguments())
+handleNoArguments())
+handleSend(, ))
+handleParenthesizedCondition(()
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+endDoWhileStatement(do, while, ;)
+endBlockFunctionBody(3, {, })
+endTopLevelMethod(do, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(else)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(else)
+beginMetadataStar(else)
+endMetadataStar(0)
+beginTopLevelMember(else)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+handleIdentifier(else, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+handleIdentifier(, expression)
+handleNoTypeArguments(else)
+handleNoArguments(else)
+handleSend(, else)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+endReturnStatement(true, return, ;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+handleIdentifier(, expression)
+handleNoTypeArguments(else)
+handleNoArguments(else)
+handleSend(, else)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+handleExpressionStatement(;)
+handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], else, else)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(4, {, })
+endTopLevelMethod(else, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(enum)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(enum)
+beginMetadataStar(enum)
+endMetadataStar(0)
+beginEnum(enum)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, enumDeclaration)
+handleRecoverableError(Message[ExpectedEnumBody, Expected a enum body, but got 'int'., An enum definition must have a body with at least one constant name., {token: int}], int, int)
+endEnum(enum, {, 0)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, topLevelVariableDeclaration)
+handleNoFieldInitializer())
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration())
+beginMetadataStar())
+endMetadataStar(0)
+beginTopLevelMember())
+handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {token: )}], ), ))
+handleInvalidTopLevelDeclaration())
+endTopLevelDeclaration({)
+beginMetadataStar({)
+endMetadataStar(0)
+beginTopLevelMember({)
+handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '{'., null, {token: {}], {, {)
+beginBlock({, BlockKind(invalid))
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleIdentifier(enum, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(enum, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlock(2, {, }, BlockKind(invalid))
+handleInvalidTopLevelBlock({)
+handleInvalidTopLevelDeclaration(})
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(extends)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(extends)
+beginMetadataStar(extends)
+endMetadataStar(0)
+beginTopLevelMember(extends)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+handleIdentifier(extends, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+handleIdentifier(extends, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(extends, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(extends, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(false)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(false)
+beginMetadataStar(false)
+endMetadataStar(0)
+beginTopLevelMember(false)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'false'., null, {token: false}], false, false)
+handleIdentifier(false, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleLiteralBool(false)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend((, ))
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(false, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(final)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(final)
+beginMetadataStar(final)
+endMetadataStar(0)
+beginTopLevelMember(final)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'final' here., Try removing 'final'., {token: final}], final, final)
+beginTopLevelMethod(;, null)
+handleNoType(final)
+handleIdentifier(, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+handleIdentifier(, expression)
+handleNoTypeArguments(final)
+handleNoArguments(final)
+handleSend(, final)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], final, final)
+endReturnStatement(true, return, ;)
+beginMetadataStar(final)
+endMetadataStar(0)
+handleNoType(final)
+beginVariablesDeclaration((, null, final)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, localVariableDeclaration)
+beginInitializedIdentifier()
+handleNoVariableInitializer(x)
+endInitializedIdentifier()
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+endVariablesDeclaration(1, ;)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+handleExpressionStatement(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+handleIdentifier(, expression)
+handleNoTypeArguments())
+handleNoArguments())
+handleSend(, ))
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+handleExpressionStatement(;)
+handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(6, {, })
+endTopLevelMethod(final, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(finally)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(finally)
+beginMetadataStar(finally)
+endMetadataStar(0)
+beginTopLevelMember(finally)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+handleIdentifier(finally, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+handleIdentifier(finally, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(finally, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(finally, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(for)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(for)
+beginMetadataStar(for)
+endMetadataStar(0)
+beginTopLevelMember(for)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+handleIdentifier(for, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+handleIdentifier(, expression)
+handleNoTypeArguments(for)
+handleNoArguments(for)
+handleSend(, for)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], for, for)
+endReturnStatement(true, return, ;)
+beginForStatement(for)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleForInitializerExpressionStatement(1, false)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+handleIdentifier(, expression)
+handleNoTypeArguments())
+handleNoArguments())
+handleSend(, ))
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+handleExpressionStatement(;)
+handleForLoopParts(for, (, ;, 0)
+beginForStatementBody(+)
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endForStatementBody(})
+endForStatement(})
+endBlockFunctionBody(3, {, })
+endTopLevelMethod(for, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(if)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(if)
+beginMetadataStar(if)
+endMetadataStar(0)
+beginTopLevelMember(if)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+handleIdentifier(if, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+handleIdentifier(, expression)
+handleNoTypeArguments(if)
+handleNoArguments(if)
+handleSend(, if)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], if, if)
+endReturnStatement(true, return, ;)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedCondition(()
+beginThenStatement(+)
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endThenStatement(;)
+endIfStatement(if, null)
+endBlockFunctionBody(3, {, })
+endTopLevelMethod(if, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(in)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(in)
+beginMetadataStar(in)
+endMetadataStar(0)
+beginTopLevelMember(in)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+handleIdentifier(in, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+handleIdentifier(in, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(in, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(in, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(is)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(is)
+beginMetadataStar(is)
+endMetadataStar(0)
+beginTopLevelMember(is)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+handleIdentifier(is, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+handleIdentifier(, expression)
+handleNoTypeArguments(is)
+handleNoArguments(is)
+handleSend(, is)
+beginIsOperatorType(is)
+handleRecoverableError(Message[ExpectedType, Expected a type, but got '('., null, {token: (}], (, ()
+handleIdentifier(, typeReference)
+handleNoTypeArguments(()
+handleType(, null)
+endIsOperatorType(is)
+handleIsOperator(is, null)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
+endReturnStatement(true, return, ;)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(3, {, })
+endTopLevelMethod(is, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(new)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(new)
+beginMetadataStar(new)
+endMetadataStar(0)
+beginTopLevelMember(new)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'new'., null, {token: new}], new, new)
+handleIdentifier(new, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+beginNewExpression(new)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, constructorReference)
+beginConstructorReference()
+handleNoTypeArguments(()
+handleNoConstructorReferenceContinuationAfterTypeArguments(()
+endConstructorReference(, null, ()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+endNewExpression(new)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(new, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(null)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(null)
+beginMetadataStar(null)
+endMetadataStar(0)
+beginTopLevelMember(null)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'null'., null, {token: null}], null, null)
+handleIdentifier(null, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleLiteralNull(null)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend((, ))
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(null, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(rethrow)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(rethrow)
+beginMetadataStar(rethrow)
+endMetadataStar(0)
+beginTopLevelMember(rethrow)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+handleIdentifier(rethrow, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+handleIdentifier(rethrow, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(rethrow, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(rethrow, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(return)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(return)
+beginMetadataStar(return)
+endMetadataStar(0)
+beginTopLevelMember(return)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'return'., null, {token: return}], return, return)
+handleIdentifier(return, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[UnexpectedToken, Unexpected token 'return'., null, {token: return}], return, return)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(return, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(super)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(super)
+beginMetadataStar(super)
+endMetadataStar(0)
+beginTopLevelMember(super)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'super'., null, {token: super}], super, super)
+handleIdentifier(super, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleSuperExpression(super, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(super, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(super, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(switch)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(switch)
+beginMetadataStar(switch)
+endMetadataStar(0)
+beginTopLevelMember(switch)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+handleIdentifier(switch, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+handleIdentifier(, expression)
+handleNoTypeArguments(switch)
+handleNoArguments(switch)
+handleSend(, switch)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], switch, switch)
+endReturnStatement(true, return, ;)
+beginSwitchStatement(switch)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedCondition(()
+handleRecoverableError(Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}], ), ))
+beginSwitchBlock({)
+endSwitchBlock(0, {, })
+endSwitchStatement(switch, })
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(4, {, })
+endTopLevelMethod(switch, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+beginTopLevelMethod(}, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(this)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
+handleIdentifier(this, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleThisExpression(this, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(this, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(int, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(throw)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(throw)
+beginMetadataStar(throw)
+endMetadataStar(0)
+beginTopLevelMember(throw)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'throw'., null, {token: throw}], throw, throw)
+handleIdentifier(throw, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleThrowExpression(throw, ;)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(throw, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(true)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(true)
+beginMetadataStar(true)
+endMetadataStar(0)
+beginTopLevelMember(true)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'true'., null, {token: true}], true, true)
+handleIdentifier(true, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleLiteralBool(true)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend((, ))
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(true, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(try)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(try)
+beginMetadataStar(try)
+endMetadataStar(0)
+beginTopLevelMember(try)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+handleIdentifier(try, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+handleIdentifier(, expression)
+handleNoTypeArguments(try)
+handleNoArguments(try)
+handleSend(, try)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], try, try)
+endReturnStatement(true, return, ;)
+beginTryStatement(try)
+handleRecoverableError(Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}], try, try)
+beginBlock({, BlockKind(try statement))
+endBlock(0, {, }, BlockKind(try statement))
+handleRecoverableError(OnlyTry, try, try)
+endTryStatement(0, try, null)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedExpression(()
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(4, {, })
+endTopLevelMethod(try, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(var)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(var)
+beginMetadataStar(var)
+endMetadataStar(0)
+beginTopLevelMember(var)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleRecoverableError(VarReturnType, var, var)
+beginTopLevelMethod(;, null)
+handleNoType(var)
+handleIdentifier(, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+handleIdentifier(, expression)
+handleNoTypeArguments(var)
+handleNoArguments(var)
+handleSend(, var)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], var, var)
+endReturnStatement(true, return, ;)
+beginMetadataStar(var)
+endMetadataStar(0)
+handleNoType(var)
+beginVariablesDeclaration((, null, var)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, localVariableDeclaration)
+beginInitializedIdentifier()
+handleNoVariableInitializer(x)
+endInitializedIdentifier()
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+endVariablesDeclaration(1, ;)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+handleExpressionStatement(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+handleIdentifier(, expression)
+handleNoTypeArguments())
+handleNoArguments())
+handleSend(, ))
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+handleExpressionStatement(;)
+handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(6, {, })
+endTopLevelMethod(var, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(void)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(void)
+beginMetadataStar(void)
+endMetadataStar(0)
+beginTopLevelMember(void)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+beginTopLevelMethod(;, null)
+handleVoidKeyword(void)
+handleIdentifier(, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+handleIdentifier(, expression)
+handleNoTypeArguments(void)
+handleNoArguments(void)
+handleSend(, void)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void)
+endReturnStatement(true, return, ;)
+beginMetadataStar(void)
+endMetadataStar(0)
+handleVoidKeyword(void)
+beginVariablesDeclaration((, null, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+handleIdentifier(, localVariableDeclaration)
+beginInitializedIdentifier()
+handleNoVariableInitializer(x)
+endInitializedIdentifier()
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+endVariablesDeclaration(1, ;)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+handleExpressionStatement(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+handleIdentifier(, expression)
+handleNoTypeArguments())
+handleNoArguments())
+handleSend(, ))
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+handleExpressionStatement(;)
+handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endBlockFunctionBody(6, {, })
+endTopLevelMethod(void, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(while)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(while)
+beginMetadataStar(while)
+endMetadataStar(0)
+beginTopLevelMember(while)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+handleIdentifier(while, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+handleIdentifier(, expression)
+handleNoTypeArguments(while)
+handleNoArguments(while)
+handleSend(, while)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], while, while)
+endReturnStatement(true, return, ;)
+beginWhileStatement(while)
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+handleParenthesizedCondition(()
+beginWhileStatementBody(+)
+handleRecoverableError(UnsupportedPrefixPlus, +, +)
+handleIdentifier(, expression)
+handleNoTypeArguments(+)
+handleNoArguments(+)
+handleSend(, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+handleExpressionStatement(;)
+endWhileStatementBody(})
+endWhileStatement(while, })
+endBlockFunctionBody(3, {, })
+endTopLevelMethod(while, null, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleRecoverableError(MissingConstFinalVarOrType, int, int)
+handleNoType(})
+handleIdentifier(int, topLevelVariableDeclaration)
+handleNoFieldInitializer(with)
+handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(with)
+beginMetadataStar(with)
+endMetadataStar(0)
+beginTopLevelMember(with)
+beginTopLevelMethod(;, null)
+handleNoType(;)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+handleIdentifier(with, topLevelFunctionDeclaration)
+handleNoTypeVariables(()
+beginFormalParameters((, MemberKind.TopLevelMethod)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(x)
+handleType(int, null)
+handleIdentifier(x, formalParameterDeclaration)
+handleFormalParameterWithoutValue())
+endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+handleAsyncModifier(null, null)
+beginBlockFunctionBody({)
+beginIfStatement(if)
+handleIdentifier(x, expression)
+handleNoTypeArguments(==)
+handleNoArguments(==)
+handleSend(x, ==)
+beginBinaryExpression(==)
+handleLiteralInt(0)
+endBinaryExpression(==)
+handleParenthesizedCondition(()
+beginThenStatement(return)
+beginReturnStatement(return)
+handleLiteralInt(42)
+endReturnStatement(true, return, ;)
+endThenStatement(;)
+endIfStatement(if, null)
+beginReturnStatement(return)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+handleIdentifier(with, expression)
+handleNoTypeArguments(()
+beginArguments(()
+handleIdentifier(x, expression)
+handleNoTypeArguments(-)
+handleNoArguments(-)
+handleSend(x, -)
+beginBinaryExpression(-)
+handleLiteralInt(1)
+endBinaryExpression(-)
+endArguments(1, (, ))
+handleSend(with, +)
+beginBinaryExpression(+)
+handleLiteralInt(1)
+endBinaryExpression(+)
+endReturnStatement(true, return, ;)
+endBlockFunctionBody(2, {, })
+endTopLevelMethod(with, null, })
+endTopLevelDeclaration()
+endCompilationUnit(71, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.intertwined.expect
new file mode 100644
index 0000000..90e26b1
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.intertwined.expect
@@ -0,0 +1,5902 @@
+parseUnit(int)
+  skipErrorTokens(int)
+  listener: beginCompilationUnit(int)
+  syntheticPreviousToken(int)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl()
+      listener: beginTopLevelMember(int)
+      parseFields(, null, null, null, null, null, , Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType()
+        ensureIdentifier(, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(assert)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(assert)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(assert)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(assert)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, assert)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(assert, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'assert'., null, {token: assert}], assert, assert)
+          listener: handleIdentifier(assert, topLevelFunctionDeclaration)
+        parseMethodTypeVar(assert)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(assert, assert, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(assert, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseAssert(return, Assert.Expression)
+                          listener: beginAssert(assert, Assert.Expression)
+                          parseExpression(()
+                            parsePrecedenceExpression((, 1, true)
+                              parseUnaryExpression((, true)
+                                parsePrimary((, expression)
+                                  parseSendOrFunctionLiteral((, expression)
+                                    parseSend((, expression)
+                                      ensureIdentifier((, expression)
+                                        listener: handleIdentifier(x, expression)
+                                      listener: handleNoTypeArguments(-)
+                                      parseArgumentsOpt(x)
+                                        listener: handleNoArguments(-)
+                                      listener: handleSend(x, -)
+                              listener: beginBinaryExpression(-)
+                              parsePrecedenceExpression(-, 14, true)
+                                parseUnaryExpression(-, true)
+                                  parsePrimary(-, expression)
+                                    parseLiteralInt(-)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(-)
+                          reportRecoverableError(assert, AssertAsExpression)
+                            listener: handleRecoverableError(AssertAsExpression, assert, assert)
+                          listener: endAssert(assert, Assert.Expression, (, null, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(assert, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(break)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(break)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(break)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(break)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, break)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+          listener: handleIdentifier(break, topLevelFunctionDeclaration)
+        parseMethodTypeVar(break)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(break, break, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(break, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(break)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(break)
+                          listener: handleSend(, break)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, break)
+          parseStatement(;)
+            parseStatementX(;)
+              parseBreakStatement(;)
+                isBreakAllowed()
+                reportRecoverableError(break, BreakOutsideOfLoop)
+                  listener: handleRecoverableError(BreakOutsideOfLoop, break, break)
+                ensureSemicolon(break)
+                  reportRecoverableError(break, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+                  rewriter()
+                listener: handleBreakStatement(false, break, ;)
+          notEofOrValue(}, ()
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclaration(;, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                  looksLikeLocalFunction(()
+                  parseExpressionStatement(;)
+                    parseExpression(;)
+                      parsePrecedenceExpression(;, 1, true)
+                        parseUnaryExpression(;, true)
+                          parsePrimary(;, expression)
+                            parseParenthesizedExpressionOrFunctionLiteral(;)
+                              parseParenthesizedExpression(;)
+                                parseExpressionInParenthesis(;)
+                                  parseExpressionInParenthesisRest(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseSendOrFunctionLiteral((, expression)
+                                              parseSend((, expression)
+                                                ensureIdentifier((, expression)
+                                                  listener: handleIdentifier(x, expression)
+                                                listener: handleNoTypeArguments(-)
+                                                parseArgumentsOpt(x)
+                                                  listener: handleNoArguments(-)
+                                                listener: handleSend(x, -)
+                                        listener: beginBinaryExpression(-)
+                                        parsePrecedenceExpression(-, 14, true)
+                                          parseUnaryExpression(-, true)
+                                            parsePrimary(-, expression)
+                                              parseLiteralInt(-)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(-)
+                                    ensureCloseParen(1, ()
+                                listener: handleParenthesizedExpression(()
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(4, {, })
+        listener: endTopLevelMethod(break, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(case)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(case)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(case)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(case)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, case)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+          listener: handleIdentifier(case, topLevelFunctionDeclaration)
+        parseMethodTypeVar(case)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(case, case, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(case, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+                            listener: handleIdentifier(case, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(case)
+                            parseArguments(case)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(case, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(case, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(catch)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(catch)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(catch)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(catch)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, catch)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+          listener: handleIdentifier(catch, topLevelFunctionDeclaration)
+        parseMethodTypeVar(catch)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(catch, catch, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(catch, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+                            listener: handleIdentifier(catch, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(catch)
+                            parseArguments(catch)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(catch, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(catch, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(class)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(class)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(;, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+          rewriter()
+          listener: handleIdentifier(, classOrMixinDeclaration)
+        listener: handleNoTypeVariables(int)
+        listener: beginClassDeclaration(class, null, )
+        parseClass(, class, class, )
+          parseClassHeaderOpt(, class, class)
+            parseClassExtendsOpt()
+              listener: handleNoType()
+              listener: handleClassExtends(null)
+            parseWithClauseOpt()
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt()
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassHeaderRecovery(, class, class)
+            parseClassHeaderOpt(, class, class)
+              parseClassExtendsOpt()
+              parseWithClauseOpt()
+              parseClassOrMixinImplementsOpt()
+            skipUnexpectedTokenOpt(, [extends, with, implements, {])
+            parseClassExtendsOpt()
+              listener: handleNoType()
+              listener: handleClassExtends(null)
+            parseWithClauseOpt()
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt()
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleRecoverClassHeader()
+          ensureBlock(, null, class declaration)
+            reportRecoverableError(, Message[ExpectedClassOrMixinBody, A class declaration must have a body, even if it is empty., Try adding an empty body., {string: class declaration}])
+              listener: handleRecoverableError(Message[ExpectedClassOrMixinBody, A class declaration must have a body, even if it is empty., Try adding an empty body., {string: class declaration}], int, int)
+            insertBlock()
+              rewriter()
+              rewriter()
+          parseClassOrMixinOrExtensionBody(, DeclarationKind.Class, )
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'SimpleType', x, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(x)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(x, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(x, x, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer())
+        ensureSemicolon(x)
+          reportRecoverableError(x, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration())
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar())
+      listener: endMetadataStar(0)
+    listener: beginTopLevelMember())
+    parseInvalidTopLevelDeclaration(;)
+      reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {token: )}], ), ))
+      listener: handleInvalidTopLevelDeclaration())
+  listener: endTopLevelDeclaration({)
+  parseTopLevelDeclarationImpl(), Instance of 'DirectiveContext')
+    parseMetadataStar())
+      listener: beginMetadataStar({)
+      listener: endMetadataStar(0)
+    listener: beginTopLevelMember({)
+    parseInvalidTopLevelDeclaration())
+      reportRecoverableErrorWithToken({, Instance of 'Template<(Token) => Message>')
+        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '{'., null, {token: {}], {, {)
+      parseInvalidBlock())
+        parseBlock(), BlockKind(invalid))
+          ensureBlock(), null, null)
+          listener: beginBlock({, BlockKind(invalid))
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(class, Instance of 'Template<(Token) => Message>')
+                            listener: handleIdentifier(class, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(class)
+                            parseArguments(class)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(class, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlock(2, {, }, BlockKind(invalid))
+        listener: handleInvalidTopLevelBlock({)
+      listener: handleInvalidTopLevelDeclaration(})
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(const)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(const)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(const)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(const)
+      insertSyntheticIdentifier(const, methodDeclaration, message: null, messageOnToken: null)
+        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+        rewriter()
+      reportRecoverableErrorWithToken(const, Instance of 'Template<(Token) => Message>')
+        listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'const' here., Try removing 'const'., {token: const}], const, const)
+      parseTopLevelMethod(;, null, const, Instance of 'NoType', null, )
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(const)
+        ensureIdentifier(const, topLevelFunctionDeclaration)
+          listener: handleIdentifier(, topLevelFunctionDeclaration)
+        parseMethodTypeVar()
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(, , false, MemberKind.TopLevelMethod)
+          parseFormalParameters(, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        parseConstExpression(return)
+                          listener: beginConstExpression(const)
+                          parseConstructorReference(const, null)
+                            ensureIdentifier(const, constructorReference)
+                              insertSyntheticIdentifier(const, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], messageOnToken: null)
+                                reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                                rewriter()
+                              listener: handleIdentifier(, constructorReference)
+                            listener: beginConstructorReference()
+                            parseQualifiedRestOpt(, constructorReferenceContinuation)
+                            listener: handleNoTypeArguments(()
+                            listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                            listener: endConstructorReference(, null, ()
+                          parseConstructorInvocationArguments()
+                            parseArgumentsRest(()
+                              listener: beginArguments(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(-)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(-)
+                                          listener: handleSend(x, -)
+                                  listener: beginBinaryExpression(-)
+                                  parsePrecedenceExpression(-, 14, true)
+                                    parseUnaryExpression(-, true)
+                                      parsePrimary(-, expression)
+                                        parseLiteralInt(-)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(-)
+                              listener: endArguments(1, (, ))
+                          listener: endConstExpression(const)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(const, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(continue)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(continue)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(continue)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(continue)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, continue)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+          listener: handleIdentifier(continue, topLevelFunctionDeclaration)
+        parseMethodTypeVar(continue)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(continue, continue, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(continue, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(continue)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(continue)
+                          listener: handleSend(, continue)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, continue)
+          parseStatement(;)
+            parseStatementX(;)
+              parseContinueStatement(;)
+                isContinueAllowed()
+                reportRecoverableError(continue, ContinueOutsideOfLoop)
+                  listener: handleRecoverableError(ContinueOutsideOfLoop, continue, continue)
+                ensureSemicolon(continue)
+                  reportRecoverableError(continue, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+                  rewriter()
+                listener: handleContinueStatement(false, continue, ;)
+          notEofOrValue(}, ()
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclaration(;, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                  looksLikeLocalFunction(()
+                  parseExpressionStatement(;)
+                    parseExpression(;)
+                      parsePrecedenceExpression(;, 1, true)
+                        parseUnaryExpression(;, true)
+                          parsePrimary(;, expression)
+                            parseParenthesizedExpressionOrFunctionLiteral(;)
+                              parseParenthesizedExpression(;)
+                                parseExpressionInParenthesis(;)
+                                  parseExpressionInParenthesisRest(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseSendOrFunctionLiteral((, expression)
+                                              parseSend((, expression)
+                                                ensureIdentifier((, expression)
+                                                  listener: handleIdentifier(x, expression)
+                                                listener: handleNoTypeArguments(-)
+                                                parseArgumentsOpt(x)
+                                                  listener: handleNoArguments(-)
+                                                listener: handleSend(x, -)
+                                        listener: beginBinaryExpression(-)
+                                        parsePrecedenceExpression(-, 14, true)
+                                          parseUnaryExpression(-, true)
+                                            parsePrimary(-, expression)
+                                              parseLiteralInt(-)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(-)
+                                    ensureCloseParen(1, ()
+                                listener: handleParenthesizedExpression(()
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(4, {, })
+        listener: endTopLevelMethod(continue, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(default)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(default)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(default)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(default)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, default)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+          listener: handleIdentifier(default, topLevelFunctionDeclaration)
+        parseMethodTypeVar(default)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(default, default, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(default, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+                            listener: handleIdentifier(default, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(default)
+                            parseArguments(default)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(default, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(default, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(do)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(do)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(do)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(do)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, do)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+          listener: handleIdentifier(do, topLevelFunctionDeclaration)
+        parseMethodTypeVar(do)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(do, do, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(do, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(do)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(do)
+                          listener: handleSend(, do)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], do, do)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, do)
+          parseStatement(;)
+            parseStatementX(;)
+              parseDoWhileStatement(;)
+                listener: beginDoWhileStatement(do)
+                listener: beginDoWhileStatementBody(()
+                parseStatement(do)
+                  parseStatementX(do)
+                    parseExpressionStatementOrDeclaration(do, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(do, do, null, null, null, false)
+                        looksLikeLocalFunction(()
+                        parseExpressionStatement(do)
+                          parseExpression(do)
+                            parsePrecedenceExpression(do, 1, true)
+                              parseUnaryExpression(do, true)
+                                parsePrimary(do, expression)
+                                  parseParenthesizedExpressionOrFunctionLiteral(do)
+                                    parseParenthesizedExpression(do)
+                                      parseExpressionInParenthesis(do)
+                                        parseExpressionInParenthesisRest(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          ensureCloseParen(1, ()
+                                      listener: handleParenthesizedExpression(()
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: handleExpressionStatement(;)
+                listener: endDoWhileStatementBody(;)
+                reportRecoverableError(}, Message[ExpectedButGot, Expected 'while' before this., null, {string: while}])
+                  listener: handleRecoverableError(Message[ExpectedButGot, Expected 'while' before this., null, {string: while}], }, })
+                rewriter()
+                ensureParenthesizedCondition(while)
+                  reportRecoverableError(}, Message[ExpectedToken, Expected to find '('., null, {string: (}])
+                    listener: handleRecoverableError(Message[ExpectedToken, Expected to find '('., null, {string: (}], }, })
+                  rewriter()
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSend((, expression)
+                              ensureIdentifier((, expression)
+                                reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., null, {token: }}], }, })
+                                rewriter()
+                                listener: handleIdentifier(, expression)
+                              listener: handleNoTypeArguments())
+                              parseArgumentsOpt()
+                                listener: handleNoArguments())
+                              listener: handleSend(, ))
+                    ensureCloseParen(, ()
+                  listener: handleParenthesizedCondition(()
+                ensureSemicolon())
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+                  rewriter()
+                listener: endDoWhileStatement(do, while, ;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(3, {, })
+        listener: endTopLevelMethod(do, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(else)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(else)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(else)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(else)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, else)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+          listener: handleIdentifier(else, topLevelFunctionDeclaration)
+        parseMethodTypeVar(else)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(else, else, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(else, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(else)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(else)
+                          listener: handleSend(, else)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, else)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclaration(;, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                  looksLikeLocalFunction(else)
+                  parseExpressionStatement(;)
+                    parseExpression(;)
+                      parsePrecedenceExpression(;, 1, true)
+                        parseUnaryExpression(;, true)
+                          parsePrimary(;, expression)
+                            inPlainSync()
+                            parseSend(;, expression)
+                              ensureIdentifier(;, expression)
+                                reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
+                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+                                rewriter()
+                                listener: handleIdentifier(, expression)
+                              listener: handleNoTypeArguments(else)
+                              parseArgumentsOpt()
+                                listener: handleNoArguments(else)
+                              listener: handleSend(, else)
+                    ensureSemicolon()
+                      reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+                      rewriter()
+                    listener: handleExpressionStatement(;)
+          reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+            listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], else, else)
+          notEofOrValue(}, ()
+          parseStatement(else)
+            parseStatementX(else)
+              parseExpressionStatementOrDeclaration(else, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(else, else, null, null, null, false)
+                  looksLikeLocalFunction(()
+                  parseExpressionStatement(else)
+                    parseExpression(else)
+                      parsePrecedenceExpression(else, 1, true)
+                        parseUnaryExpression(else, true)
+                          parsePrimary(else, expression)
+                            parseParenthesizedExpressionOrFunctionLiteral(else)
+                              parseParenthesizedExpression(else)
+                                parseExpressionInParenthesis(else)
+                                  parseExpressionInParenthesisRest(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseSendOrFunctionLiteral((, expression)
+                                              parseSend((, expression)
+                                                ensureIdentifier((, expression)
+                                                  listener: handleIdentifier(x, expression)
+                                                listener: handleNoTypeArguments(-)
+                                                parseArgumentsOpt(x)
+                                                  listener: handleNoArguments(-)
+                                                listener: handleSend(x, -)
+                                        listener: beginBinaryExpression(-)
+                                        parsePrecedenceExpression(-, 14, true)
+                                          parseUnaryExpression(-, true)
+                                            parsePrimary(-, expression)
+                                              parseLiteralInt(-)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(-)
+                                    ensureCloseParen(1, ()
+                                listener: handleParenthesizedExpression(()
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(4, {, })
+        listener: endTopLevelMethod(else, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(enum)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(enum)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(enum)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(;, enum, Instance of 'DirectiveContext')
+      parseTopLevelKeywordModifiers(;, enum)
+      parseEnum(enum)
+        listener: beginEnum(enum)
+        ensureIdentifier(enum, enumDeclaration)
+          reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+          rewriter()
+          listener: handleIdentifier(, enumDeclaration)
+        ensureBlock(, Instance of 'Template<(Token) => Message>', null)
+          reportRecoverableError(int, Message[ExpectedEnumBody, Expected a enum body, but got 'int'., An enum definition must have a body with at least one constant name., {token: int}])
+            listener: handleRecoverableError(Message[ExpectedEnumBody, Expected a enum body, but got 'int'., An enum definition must have a body with at least one constant name., {token: int}], int, int)
+          insertBlock()
+            rewriter()
+            rewriter()
+        listener: endEnum(enum, {, 0)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'SimpleType', x, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(x)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(x, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(x, x, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer())
+        ensureSemicolon(x)
+          reportRecoverableError(x, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration())
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar())
+      listener: endMetadataStar(0)
+    listener: beginTopLevelMember())
+    parseInvalidTopLevelDeclaration(;)
+      reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {token: )}], ), ))
+      listener: handleInvalidTopLevelDeclaration())
+  listener: endTopLevelDeclaration({)
+  parseTopLevelDeclarationImpl(), Instance of 'DirectiveContext')
+    parseMetadataStar())
+      listener: beginMetadataStar({)
+      listener: endMetadataStar(0)
+    listener: beginTopLevelMember({)
+    parseInvalidTopLevelDeclaration())
+      reportRecoverableErrorWithToken({, Instance of 'Template<(Token) => Message>')
+        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '{'., null, {token: {}], {, {)
+      parseInvalidBlock())
+        parseBlock(), BlockKind(invalid))
+          ensureBlock(), null, null)
+          listener: beginBlock({, BlockKind(invalid))
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(enum, Instance of 'Template<(Token) => Message>')
+                            listener: handleIdentifier(enum, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(enum)
+                            parseArguments(enum)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(enum, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlock(2, {, }, BlockKind(invalid))
+        listener: handleInvalidTopLevelBlock({)
+      listener: handleInvalidTopLevelDeclaration(})
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(extends)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(extends)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(extends)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(extends)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, extends)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+          listener: handleIdentifier(extends, topLevelFunctionDeclaration)
+        parseMethodTypeVar(extends)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(extends, extends, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(extends, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+                            listener: handleIdentifier(extends, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(extends)
+                            parseArguments(extends)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(extends, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(extends, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(false)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(false)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(false)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(false)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, false)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(false, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'false'., null, {token: false}], false, false)
+          listener: handleIdentifier(false, topLevelFunctionDeclaration)
+        parseMethodTypeVar(false)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(false, false, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(false, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        parseLiteralBool(return)
+                          listener: handleLiteralBool(false)
+                    parseArgumentOrIndexStar(false, Instance of 'NoTypeParamOrArg', false)
+                      listener: handleNoTypeArguments(()
+                      parseArguments(false)
+                        parseArgumentsRest(()
+                          listener: beginArguments(()
+                          parseExpression(()
+                            parsePrecedenceExpression((, 1, true)
+                              parseUnaryExpression((, true)
+                                parsePrimary((, expression)
+                                  parseSendOrFunctionLiteral((, expression)
+                                    parseSend((, expression)
+                                      ensureIdentifier((, expression)
+                                        listener: handleIdentifier(x, expression)
+                                      listener: handleNoTypeArguments(-)
+                                      parseArgumentsOpt(x)
+                                        listener: handleNoArguments(-)
+                                      listener: handleSend(x, -)
+                              listener: beginBinaryExpression(-)
+                              parsePrecedenceExpression(-, 14, true)
+                                parseUnaryExpression(-, true)
+                                  parsePrimary(-, expression)
+                                    parseLiteralInt(-)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(-)
+                          listener: endArguments(1, (, ))
+                      listener: handleSend((, ))
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(false, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(final)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(final)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(final)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(final)
+      insertSyntheticIdentifier(final, methodDeclaration, message: null, messageOnToken: null)
+        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+        rewriter()
+      reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
+        listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'final' here., Try removing 'final'., {token: final}], final, final)
+      parseTopLevelMethod(;, null, final, Instance of 'NoType', null, )
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(final)
+        ensureIdentifier(final, topLevelFunctionDeclaration)
+          listener: handleIdentifier(, topLevelFunctionDeclaration)
+        parseMethodTypeVar()
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(, , false, MemberKind.TopLevelMethod)
+          parseFormalParameters(, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(final)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(final)
+                          listener: handleSend(, final)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], final, final)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, final)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclarationAfterModifiers(final, ;, null, final, null, false)
+                looksLikeLocalFunction(()
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+                listener: handleNoType(final)
+                listener: beginVariablesDeclaration((, null, final)
+                parseVariablesDeclarationRest(final, true)
+                  parseOptionallyInitializedIdentifier(final)
+                    ensureIdentifier(final, localVariableDeclaration)
+                      reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                      listener: handleIdentifier(, localVariableDeclaration)
+                    listener: beginInitializedIdentifier()
+                    parseVariableInitializerOpt()
+                      listener: handleNoVariableInitializer(x)
+                    listener: endInitializedIdentifier()
+                  ensureSemicolon()
+                    reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                    rewriter()
+                  listener: endVariablesDeclaration(1, ;)
+          notEofOrValue(}, x)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                looksLikeLocalFunction(x)
+                parseExpressionStatement(;)
+                  parseExpression(;)
+                    parsePrecedenceExpression(;, 1, true)
+                      parseUnaryExpression(;, true)
+                        parsePrimary(;, expression)
+                          parseSendOrFunctionLiteral(;, expression)
+                            parseSend(;, expression)
+                              ensureIdentifier(;, expression)
+                                listener: handleIdentifier(x, expression)
+                              listener: handleNoTypeArguments(-)
+                              parseArgumentsOpt(x)
+                                listener: handleNoArguments(-)
+                              listener: handleSend(x, -)
+                      listener: beginBinaryExpression(-)
+                      parsePrecedenceExpression(-, 14, true)
+                        parseUnaryExpression(-, true)
+                          parsePrimary(-, expression)
+                            parseLiteralInt(-)
+                              listener: handleLiteralInt(1)
+                      listener: endBinaryExpression(-)
+                  ensureSemicolon(1)
+                    reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                    rewriter()
+                  listener: handleExpressionStatement(;)
+          notEofOrValue(}, ))
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclaration(;, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                  looksLikeLocalFunction())
+                  parseExpressionStatement(;)
+                    parseExpression(;)
+                      parsePrecedenceExpression(;, 1, true)
+                        parseUnaryExpression(;, true)
+                          parsePrimary(;, expression)
+                            parseSend(;, expression)
+                              ensureIdentifier(;, expression)
+                                reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                                rewriter()
+                                listener: handleIdentifier(, expression)
+                              listener: handleNoTypeArguments())
+                              parseArgumentsOpt()
+                                listener: handleNoArguments())
+                              listener: handleSend(, ))
+                    ensureSemicolon()
+                      reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                      rewriter()
+                    listener: handleExpressionStatement(;)
+          reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+            listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+          notEofOrValue(}, +)
+          parseStatement())
+            parseStatementX())
+              parseExpressionStatementOrDeclaration(), false)
+                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                  looksLikeLocalFunction(+)
+                  parseExpressionStatement())
+                    parseExpression())
+                      parsePrecedenceExpression(), 1, true)
+                        parseUnaryExpression(), true)
+                          rewriteAndRecover(), UnsupportedPrefixPlus, )
+                            reportRecoverableError(+, UnsupportedPrefixPlus)
+                              listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                            rewriter()
+                          parsePrimary(), expression)
+                            parseSendOrFunctionLiteral(), expression)
+                              parseSend(), expression)
+                                ensureIdentifier(), expression)
+                                  listener: handleIdentifier(, expression)
+                                listener: handleNoTypeArguments(+)
+                                parseArgumentsOpt()
+                                  listener: handleNoArguments(+)
+                                listener: handleSend(, +)
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(6, {, })
+        listener: endTopLevelMethod(final, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(finally)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(finally)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(finally)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(finally)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, finally)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+          listener: handleIdentifier(finally, topLevelFunctionDeclaration)
+        parseMethodTypeVar(finally)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(finally, finally, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(finally, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+                            listener: handleIdentifier(finally, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(finally)
+                            parseArguments(finally)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(finally, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(finally, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(for)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(for)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(for)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(for)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, for)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+          listener: handleIdentifier(for, topLevelFunctionDeclaration)
+        parseMethodTypeVar(for)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(for, for, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(for, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(for)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(for)
+                          listener: handleSend(, for)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], for, for)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, for)
+          parseStatement(;)
+            parseStatementX(;)
+              parseForStatement(;, null)
+                listener: beginForStatement(for)
+                parseForLoopPartsStart(null, for)
+                  parseExpressionStatementOrDeclaration((, true)
+                    parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, true)
+                parseForLoopPartsMid((, null, for)
+                  parseExpression(()
+                    parsePrecedenceExpression((, 1, true)
+                      parseUnaryExpression((, true)
+                        parsePrimary((, expression)
+                          parseSendOrFunctionLiteral((, expression)
+                            parseSend((, expression)
+                              ensureIdentifier((, expression)
+                                listener: handleIdentifier(x, expression)
+                              listener: handleNoTypeArguments(-)
+                              parseArgumentsOpt(x)
+                                listener: handleNoArguments(-)
+                              listener: handleSend(x, -)
+                      listener: beginBinaryExpression(-)
+                      parsePrecedenceExpression(-, 14, true)
+                        parseUnaryExpression(-, true)
+                          parsePrimary(-, expression)
+                            parseLiteralInt(-)
+                              listener: handleLiteralInt(1)
+                      listener: endBinaryExpression(-)
+                  listener: handleForInitializerExpressionStatement(1, false)
+                parseForRest(null, 1, for)
+                  parseForLoopPartsRest(1, for, null)
+                    ensureSemicolon(1)
+                      reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                      rewriter()
+                    parseExpressionStatement(;)
+                      parseExpression(;)
+                        parsePrecedenceExpression(;, 1, true)
+                          parseUnaryExpression(;, true)
+                            parsePrimary(;, expression)
+                              parseSend(;, expression)
+                                ensureIdentifier(;, expression)
+                                  reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                                  rewriter()
+                                  listener: handleIdentifier(, expression)
+                                listener: handleNoTypeArguments())
+                                parseArgumentsOpt()
+                                  listener: handleNoArguments())
+                                listener: handleSend(, ))
+                      ensureSemicolon()
+                        reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                          listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                        rewriter()
+                      listener: handleExpressionStatement(;)
+                    listener: handleForLoopParts(for, (, ;, 0)
+                  listener: beginForStatementBody(+)
+                  parseStatement())
+                    parseStatementX())
+                      parseExpressionStatementOrDeclaration(), false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                          looksLikeLocalFunction(+)
+                          parseExpressionStatement())
+                            parseExpression())
+                              parsePrecedenceExpression(), 1, true)
+                                parseUnaryExpression(), true)
+                                  rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                    reportRecoverableError(+, UnsupportedPrefixPlus)
+                                      listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                    rewriter()
+                                  parsePrimary(), expression)
+                                    parseSendOrFunctionLiteral(), expression)
+                                      parseSend(), expression)
+                                        ensureIdentifier(), expression)
+                                          listener: handleIdentifier(, expression)
+                                        listener: handleNoTypeArguments(+)
+                                        parseArgumentsOpt()
+                                          listener: handleNoArguments(+)
+                                        listener: handleSend(, +)
+                                listener: beginBinaryExpression(+)
+                                parsePrecedenceExpression(+, 14, true)
+                                  parseUnaryExpression(+, true)
+                                    parsePrimary(+, expression)
+                                      parseLiteralInt(+)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(+)
+                            ensureSemicolon(1)
+                            listener: handleExpressionStatement(;)
+                  listener: endForStatementBody(})
+                  listener: endForStatement(})
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(3, {, })
+        listener: endTopLevelMethod(for, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(if)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(if)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(if)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(if)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, if)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+          listener: handleIdentifier(if, topLevelFunctionDeclaration)
+        parseMethodTypeVar(if)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(if, if, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(if, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(if)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(if)
+                          listener: handleSend(, if)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], if, if)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, if)
+          parseStatement(;)
+            parseStatementX(;)
+              parseIfStatement(;)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(-)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(-)
+                                listener: handleSend(x, -)
+                        listener: beginBinaryExpression(-)
+                        parsePrecedenceExpression(-, 14, true)
+                          parseUnaryExpression(-, true)
+                            parsePrimary(-, expression)
+                              parseLiteralInt(-)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(-)
+                    ensureCloseParen(1, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(+)
+                parseStatement())
+                  parseStatementX())
+                    parseExpressionStatementOrDeclaration(), false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                        looksLikeLocalFunction(+)
+                        parseExpressionStatement())
+                          parseExpression())
+                            parsePrecedenceExpression(), 1, true)
+                              parseUnaryExpression(), true)
+                                rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                  reportRecoverableError(+, UnsupportedPrefixPlus)
+                                    listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                  rewriter()
+                                parsePrimary(), expression)
+                                  parseSendOrFunctionLiteral(), expression)
+                                    parseSend(), expression)
+                                      ensureIdentifier(), expression)
+                                        listener: handleIdentifier(, expression)
+                                      listener: handleNoTypeArguments(+)
+                                      parseArgumentsOpt()
+                                        listener: handleNoArguments(+)
+                                      listener: handleSend(, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: handleExpressionStatement(;)
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(3, {, })
+        listener: endTopLevelMethod(if, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(in)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(in)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(in)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(in)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, in)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+          listener: handleIdentifier(in, topLevelFunctionDeclaration)
+        parseMethodTypeVar(in)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(in, in, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(in, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+                            listener: handleIdentifier(in, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(in)
+                            parseArguments(in)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(in, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(in, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(is)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(is)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(is)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(is)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, is)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+          listener: handleIdentifier(is, topLevelFunctionDeclaration)
+        parseMethodTypeVar(is)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(is, is, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(is, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(is)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(is)
+                          listener: handleSend(, is)
+                    parseIsOperatorRest()
+                      listener: beginIsOperatorType(is)
+                      computeTypeAfterIsOrAs(is)
+                      reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[ExpectedType, Expected a type, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                      listener: handleIdentifier(, typeReference)
+                      listener: handleNoTypeArguments(()
+                      listener: handleType(, null)
+                      listener: endIsOperatorType(is)
+                      listener: handleIsOperator(is, null)
+                      skipChainedAsIsOperators()
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, ()
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclaration(;, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                  looksLikeLocalFunction(()
+                  parseExpressionStatement(;)
+                    parseExpression(;)
+                      parsePrecedenceExpression(;, 1, true)
+                        parseUnaryExpression(;, true)
+                          parsePrimary(;, expression)
+                            parseParenthesizedExpressionOrFunctionLiteral(;)
+                              parseParenthesizedExpression(;)
+                                parseExpressionInParenthesis(;)
+                                  parseExpressionInParenthesisRest(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseSendOrFunctionLiteral((, expression)
+                                              parseSend((, expression)
+                                                ensureIdentifier((, expression)
+                                                  listener: handleIdentifier(x, expression)
+                                                listener: handleNoTypeArguments(-)
+                                                parseArgumentsOpt(x)
+                                                  listener: handleNoArguments(-)
+                                                listener: handleSend(x, -)
+                                        listener: beginBinaryExpression(-)
+                                        parsePrecedenceExpression(-, 14, true)
+                                          parseUnaryExpression(-, true)
+                                            parsePrimary(-, expression)
+                                              parseLiteralInt(-)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(-)
+                                    ensureCloseParen(1, ()
+                                listener: handleParenthesizedExpression(()
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(3, {, })
+        listener: endTopLevelMethod(is, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(new)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(new)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(new)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(new)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, new)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'new'., null, {token: new}], new, new)
+          listener: handleIdentifier(new, topLevelFunctionDeclaration)
+        parseMethodTypeVar(new)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(new, new, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(new, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        parseNewExpression(return)
+                          listener: beginNewExpression(new)
+                          parseConstructorReference(new, null)
+                            ensureIdentifier(new, constructorReference)
+                              insertSyntheticIdentifier(new, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], messageOnToken: null)
+                                reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                                rewriter()
+                              listener: handleIdentifier(, constructorReference)
+                            listener: beginConstructorReference()
+                            parseQualifiedRestOpt(, constructorReferenceContinuation)
+                            listener: handleNoTypeArguments(()
+                            listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                            listener: endConstructorReference(, null, ()
+                          parseConstructorInvocationArguments()
+                            parseArgumentsRest(()
+                              listener: beginArguments(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(-)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(-)
+                                          listener: handleSend(x, -)
+                                  listener: beginBinaryExpression(-)
+                                  parsePrecedenceExpression(-, 14, true)
+                                    parseUnaryExpression(-, true)
+                                      parsePrimary(-, expression)
+                                        parseLiteralInt(-)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(-)
+                              listener: endArguments(1, (, ))
+                          listener: endNewExpression(new)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(new, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(null)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(null)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(null)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(null)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, null)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(null, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'null'., null, {token: null}], null, null)
+          listener: handleIdentifier(null, topLevelFunctionDeclaration)
+        parseMethodTypeVar(null)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(null, null, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(null, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        parseLiteralNull(return)
+                          listener: handleLiteralNull(null)
+                    parseArgumentOrIndexStar(null, Instance of 'NoTypeParamOrArg', false)
+                      listener: handleNoTypeArguments(()
+                      parseArguments(null)
+                        parseArgumentsRest(()
+                          listener: beginArguments(()
+                          parseExpression(()
+                            parsePrecedenceExpression((, 1, true)
+                              parseUnaryExpression((, true)
+                                parsePrimary((, expression)
+                                  parseSendOrFunctionLiteral((, expression)
+                                    parseSend((, expression)
+                                      ensureIdentifier((, expression)
+                                        listener: handleIdentifier(x, expression)
+                                      listener: handleNoTypeArguments(-)
+                                      parseArgumentsOpt(x)
+                                        listener: handleNoArguments(-)
+                                      listener: handleSend(x, -)
+                              listener: beginBinaryExpression(-)
+                              parsePrecedenceExpression(-, 14, true)
+                                parseUnaryExpression(-, true)
+                                  parsePrimary(-, expression)
+                                    parseLiteralInt(-)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(-)
+                          listener: endArguments(1, (, ))
+                      listener: handleSend((, ))
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(null, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(rethrow)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(rethrow)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(rethrow)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(rethrow)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, rethrow)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+          listener: handleIdentifier(rethrow, topLevelFunctionDeclaration)
+        parseMethodTypeVar(rethrow)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(rethrow, rethrow, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(rethrow, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+                            listener: handleIdentifier(rethrow, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(rethrow)
+                            parseArguments(rethrow)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(rethrow, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(rethrow, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(return)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(return)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(return)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(return)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, return)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'return'., null, {token: return}], return, return)
+          listener: handleIdentifier(return, topLevelFunctionDeclaration)
+        parseMethodTypeVar(return)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(return, return, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(return, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
+                          listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'return'., null, {token: return}], return, return)
+                        parsePrimary(return, expression)
+                          parseParenthesizedExpressionOrFunctionLiteral(return)
+                            parseParenthesizedExpression(return)
+                              parseExpressionInParenthesis(return)
+                                parseExpressionInParenthesisRest(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  ensureCloseParen(1, ()
+                              listener: handleParenthesizedExpression(()
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(return, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(super)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(super)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(super)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(super)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, super)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'super'., null, {token: super}], super, super)
+          listener: handleIdentifier(super, topLevelFunctionDeclaration)
+        parseMethodTypeVar(super)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(super, super, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(super, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        parseSuperExpression(return, expression)
+                          listener: handleSuperExpression(super, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArguments(super)
+                            parseArgumentsRest(()
+                              listener: beginArguments(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(-)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(-)
+                                          listener: handleSend(x, -)
+                                  listener: beginBinaryExpression(-)
+                                  parsePrecedenceExpression(-, 14, true)
+                                    parseUnaryExpression(-, true)
+                                      parsePrimary(-, expression)
+                                        parseLiteralInt(-)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(-)
+                              listener: endArguments(1, (, ))
+                          listener: handleSend(super, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(super, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(switch)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(switch)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(switch)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(switch)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, switch)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+          listener: handleIdentifier(switch, topLevelFunctionDeclaration)
+        parseMethodTypeVar(switch)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(switch, switch, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(switch, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(switch)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(switch)
+                          listener: handleSend(, switch)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], switch, switch)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, switch)
+          parseStatement(;)
+            parseStatementX(;)
+              parseSwitchStatement(;)
+                listener: beginSwitchStatement(switch)
+                ensureParenthesizedCondition(switch)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(-)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(-)
+                                listener: handleSend(x, -)
+                        listener: beginBinaryExpression(-)
+                        parsePrecedenceExpression(-, 14, true)
+                          parseUnaryExpression(-, true)
+                            parsePrimary(-, expression)
+                              parseLiteralInt(-)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(-)
+                    ensureCloseParen(1, ()
+                  listener: handleParenthesizedCondition(()
+                parseSwitchBlock())
+                  ensureBlock(), null, switch statement)
+                    reportRecoverableError(), Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}])
+                      listener: handleRecoverableError(Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}], ), ))
+                    insertBlock())
+                      rewriter()
+                      rewriter()
+                  listener: beginSwitchBlock({)
+                  notEofOrValue(}, })
+                  listener: endSwitchBlock(0, {, })
+                listener: endSwitchStatement(switch, })
+          notEofOrValue(}, +)
+          parseStatement(})
+            parseStatementX(})
+              parseExpressionStatementOrDeclaration(}, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+                  looksLikeLocalFunction(+)
+                  parseExpressionStatement(})
+                    parseExpression(})
+                      parsePrecedenceExpression(}, 1, true)
+                        parseUnaryExpression(}, true)
+                          rewriteAndRecover(}, UnsupportedPrefixPlus, )
+                            reportRecoverableError(+, UnsupportedPrefixPlus)
+                              listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                            rewriter()
+                          parsePrimary(}, expression)
+                            parseSendOrFunctionLiteral(}, expression)
+                              parseSend(}, expression)
+                                ensureIdentifier(}, expression)
+                                  listener: handleIdentifier(, expression)
+                                listener: handleNoTypeArguments(+)
+                                parseArgumentsOpt()
+                                  listener: handleNoArguments(+)
+                                listener: handleSend(, +)
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(4, {, })
+        listener: endTopLevelMethod(switch, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, this)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(this)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(this, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
+          listener: handleIdentifier(this, topLevelFunctionDeclaration)
+        parseMethodTypeVar(this)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(this, this, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(this, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        parseThisExpression(return, expression)
+                          listener: handleThisExpression(this, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArguments(this)
+                            parseArgumentsRest(()
+                              listener: beginArguments(()
+                              parseExpression(()
+                                parsePrecedenceExpression((, 1, true)
+                                  parseUnaryExpression((, true)
+                                    parsePrimary((, expression)
+                                      parseSendOrFunctionLiteral((, expression)
+                                        parseSend((, expression)
+                                          ensureIdentifier((, expression)
+                                            listener: handleIdentifier(x, expression)
+                                          listener: handleNoTypeArguments(-)
+                                          parseArgumentsOpt(x)
+                                            listener: handleNoArguments(-)
+                                          listener: handleSend(x, -)
+                                  listener: beginBinaryExpression(-)
+                                  parsePrecedenceExpression(-, 14, true)
+                                    parseUnaryExpression(-, true)
+                                      parsePrimary(-, expression)
+                                        parseLiteralInt(-)
+                                          listener: handleLiteralInt(1)
+                                  listener: endBinaryExpression(-)
+                              listener: endArguments(1, (, ))
+                          listener: handleSend(this, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(throw)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(throw)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(throw)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(throw)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, throw)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(throw, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'throw'., null, {token: throw}], throw, throw)
+          listener: handleIdentifier(throw, topLevelFunctionDeclaration)
+        parseMethodTypeVar(throw)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(throw, throw, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(throw, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parseThrowExpression(return, true)
+                    parseExpression(throw)
+                      parsePrecedenceExpression(throw, 1, true)
+                        parseUnaryExpression(throw, true)
+                          parsePrimary(throw, expression)
+                            parseParenthesizedExpressionOrFunctionLiteral(throw)
+                              parseParenthesizedExpression(throw)
+                                parseExpressionInParenthesis(throw)
+                                  parseExpressionInParenthesisRest(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseSendOrFunctionLiteral((, expression)
+                                              parseSend((, expression)
+                                                ensureIdentifier((, expression)
+                                                  listener: handleIdentifier(x, expression)
+                                                listener: handleNoTypeArguments(-)
+                                                parseArgumentsOpt(x)
+                                                  listener: handleNoArguments(-)
+                                                listener: handleSend(x, -)
+                                        listener: beginBinaryExpression(-)
+                                        parsePrecedenceExpression(-, 14, true)
+                                          parseUnaryExpression(-, true)
+                                            parsePrimary(-, expression)
+                                              parseLiteralInt(-)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(-)
+                                    ensureCloseParen(1, ()
+                                listener: handleParenthesizedExpression(()
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    listener: handleThrowExpression(throw, ;)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(throw, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(true)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(true)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(true)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(true)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, true)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(true, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'true'., null, {token: true}], true, true)
+          listener: handleIdentifier(true, topLevelFunctionDeclaration)
+        parseMethodTypeVar(true)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(true, true, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(true, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        parseLiteralBool(return)
+                          listener: handleLiteralBool(true)
+                    parseArgumentOrIndexStar(true, Instance of 'NoTypeParamOrArg', false)
+                      listener: handleNoTypeArguments(()
+                      parseArguments(true)
+                        parseArgumentsRest(()
+                          listener: beginArguments(()
+                          parseExpression(()
+                            parsePrecedenceExpression((, 1, true)
+                              parseUnaryExpression((, true)
+                                parsePrimary((, expression)
+                                  parseSendOrFunctionLiteral((, expression)
+                                    parseSend((, expression)
+                                      ensureIdentifier((, expression)
+                                        listener: handleIdentifier(x, expression)
+                                      listener: handleNoTypeArguments(-)
+                                      parseArgumentsOpt(x)
+                                        listener: handleNoArguments(-)
+                                      listener: handleSend(x, -)
+                              listener: beginBinaryExpression(-)
+                              parsePrecedenceExpression(-, 14, true)
+                                parseUnaryExpression(-, true)
+                                  parsePrimary(-, expression)
+                                    parseLiteralInt(-)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(-)
+                          listener: endArguments(1, (, ))
+                      listener: handleSend((, ))
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(true, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(try)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(try)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(try)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(try)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, try)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+          listener: handleIdentifier(try, topLevelFunctionDeclaration)
+        parseMethodTypeVar(try)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(try, try, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(try, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(try)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(try)
+                          listener: handleSend(, try)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], try, try)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, try)
+          parseStatement(;)
+            parseStatementX(;)
+              parseTryStatement(;)
+                listener: beginTryStatement(try)
+                parseBlock(try, BlockKind(try statement))
+                  ensureBlock(try, null, try statement)
+                    reportRecoverableError(try, Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}])
+                      listener: handleRecoverableError(Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}], try, try)
+                    insertBlock(try)
+                      rewriter()
+                      rewriter()
+                  listener: beginBlock({, BlockKind(try statement))
+                  notEofOrValue(}, })
+                  listener: endBlock(0, {, }, BlockKind(try statement))
+                reportRecoverableError(try, OnlyTry)
+                  listener: handleRecoverableError(OnlyTry, try, try)
+                listener: endTryStatement(0, try, null)
+          notEofOrValue(}, ()
+          parseStatement(})
+            parseStatementX(})
+              parseExpressionStatementOrDeclaration(}, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+                  looksLikeLocalFunction(()
+                  parseExpressionStatement(})
+                    parseExpression(})
+                      parsePrecedenceExpression(}, 1, true)
+                        parseUnaryExpression(}, true)
+                          parsePrimary(}, expression)
+                            parseParenthesizedExpressionOrFunctionLiteral(})
+                              parseParenthesizedExpression(})
+                                parseExpressionInParenthesis(})
+                                  parseExpressionInParenthesisRest(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseSendOrFunctionLiteral((, expression)
+                                              parseSend((, expression)
+                                                ensureIdentifier((, expression)
+                                                  listener: handleIdentifier(x, expression)
+                                                listener: handleNoTypeArguments(-)
+                                                parseArgumentsOpt(x)
+                                                  listener: handleNoArguments(-)
+                                                listener: handleSend(x, -)
+                                        listener: beginBinaryExpression(-)
+                                        parsePrecedenceExpression(-, 14, true)
+                                          parseUnaryExpression(-, true)
+                                            parsePrimary(-, expression)
+                                              parseLiteralInt(-)
+                                                listener: handleLiteralInt(1)
+                                        listener: endBinaryExpression(-)
+                                    ensureCloseParen(1, ()
+                                listener: handleParenthesizedExpression(()
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(4, {, })
+        listener: endTopLevelMethod(try, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(var)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(var)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(var)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(var)
+      insertSyntheticIdentifier(var, methodDeclaration, message: null, messageOnToken: null)
+        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+        rewriter()
+      reportRecoverableError(var, VarReturnType)
+        listener: handleRecoverableError(VarReturnType, var, var)
+      parseTopLevelMethod(;, null, var, Instance of 'NoType', null, )
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(var)
+        ensureIdentifier(var, topLevelFunctionDeclaration)
+          listener: handleIdentifier(, topLevelFunctionDeclaration)
+        parseMethodTypeVar()
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(, , false, MemberKind.TopLevelMethod)
+          parseFormalParameters(, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(var, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(var)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(var)
+                          listener: handleSend(, var)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], var, var)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, var)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+                looksLikeLocalFunction(()
+                listener: beginMetadataStar(var)
+                listener: endMetadataStar(0)
+                listener: handleNoType(var)
+                listener: beginVariablesDeclaration((, null, var)
+                parseVariablesDeclarationRest(var, true)
+                  parseOptionallyInitializedIdentifier(var)
+                    ensureIdentifier(var, localVariableDeclaration)
+                      reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                      rewriter()
+                      listener: handleIdentifier(, localVariableDeclaration)
+                    listener: beginInitializedIdentifier()
+                    parseVariableInitializerOpt()
+                      listener: handleNoVariableInitializer(x)
+                    listener: endInitializedIdentifier()
+                  ensureSemicolon()
+                    reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                    rewriter()
+                  listener: endVariablesDeclaration(1, ;)
+          notEofOrValue(}, x)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                looksLikeLocalFunction(x)
+                parseExpressionStatement(;)
+                  parseExpression(;)
+                    parsePrecedenceExpression(;, 1, true)
+                      parseUnaryExpression(;, true)
+                        parsePrimary(;, expression)
+                          parseSendOrFunctionLiteral(;, expression)
+                            parseSend(;, expression)
+                              ensureIdentifier(;, expression)
+                                listener: handleIdentifier(x, expression)
+                              listener: handleNoTypeArguments(-)
+                              parseArgumentsOpt(x)
+                                listener: handleNoArguments(-)
+                              listener: handleSend(x, -)
+                      listener: beginBinaryExpression(-)
+                      parsePrecedenceExpression(-, 14, true)
+                        parseUnaryExpression(-, true)
+                          parsePrimary(-, expression)
+                            parseLiteralInt(-)
+                              listener: handleLiteralInt(1)
+                      listener: endBinaryExpression(-)
+                  ensureSemicolon(1)
+                    reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                    rewriter()
+                  listener: handleExpressionStatement(;)
+          notEofOrValue(}, ))
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclaration(;, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                  looksLikeLocalFunction())
+                  parseExpressionStatement(;)
+                    parseExpression(;)
+                      parsePrecedenceExpression(;, 1, true)
+                        parseUnaryExpression(;, true)
+                          parsePrimary(;, expression)
+                            parseSend(;, expression)
+                              ensureIdentifier(;, expression)
+                                reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                                rewriter()
+                                listener: handleIdentifier(, expression)
+                              listener: handleNoTypeArguments())
+                              parseArgumentsOpt()
+                                listener: handleNoArguments())
+                              listener: handleSend(, ))
+                    ensureSemicolon()
+                      reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                      rewriter()
+                    listener: handleExpressionStatement(;)
+          reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+            listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+          notEofOrValue(}, +)
+          parseStatement())
+            parseStatementX())
+              parseExpressionStatementOrDeclaration(), false)
+                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                  looksLikeLocalFunction(+)
+                  parseExpressionStatement())
+                    parseExpression())
+                      parsePrecedenceExpression(), 1, true)
+                        parseUnaryExpression(), true)
+                          rewriteAndRecover(), UnsupportedPrefixPlus, )
+                            reportRecoverableError(+, UnsupportedPrefixPlus)
+                              listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                            rewriter()
+                          parsePrimary(), expression)
+                            parseSendOrFunctionLiteral(), expression)
+                              parseSend(), expression)
+                                ensureIdentifier(), expression)
+                                  listener: handleIdentifier(, expression)
+                                listener: handleNoTypeArguments(+)
+                                parseArgumentsOpt()
+                                  listener: handleNoArguments(+)
+                                listener: handleSend(, +)
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(6, {, })
+        listener: endTopLevelMethod(var, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(void)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(void)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(void)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(void)
+      insertSyntheticIdentifier(void, methodDeclaration, message: null, messageOnToken: null)
+        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+        rewriter()
+      parseTopLevelMethod(;, null, ;, Instance of 'VoidType', null, )
+        listener: beginTopLevelMethod(;, null)
+        listener: handleVoidKeyword(void)
+        ensureIdentifier(void, topLevelFunctionDeclaration)
+          listener: handleIdentifier(, topLevelFunctionDeclaration)
+        parseMethodTypeVar()
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(, , false, MemberKind.TopLevelMethod)
+          parseFormalParameters(, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        parseSendOrFunctionLiteral(return, expression)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              reportRecoverableErrorWithToken(void, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+                              rewriter()
+                              listener: handleIdentifier(, expression)
+                            listener: handleNoTypeArguments(void)
+                            parseArgumentsOpt()
+                              listener: handleNoArguments(void)
+                            listener: handleSend(, void)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, void)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclaration(;, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                  looksLikeLocalFunction(()
+                  listener: beginMetadataStar(void)
+                  listener: endMetadataStar(0)
+                  listener: handleVoidKeyword(void)
+                  listener: beginVariablesDeclaration((, null, null)
+                  parseVariablesDeclarationRest(void, true)
+                    parseOptionallyInitializedIdentifier(void)
+                      ensureIdentifier(void, localVariableDeclaration)
+                        reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+                          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                        rewriter()
+                        listener: handleIdentifier(, localVariableDeclaration)
+                      listener: beginInitializedIdentifier()
+                      parseVariableInitializerOpt()
+                        listener: handleNoVariableInitializer(x)
+                      listener: endInitializedIdentifier()
+                    ensureSemicolon()
+                      reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                      rewriter()
+                    listener: endVariablesDeclaration(1, ;)
+          notEofOrValue(}, x)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                looksLikeLocalFunction(x)
+                parseExpressionStatement(;)
+                  parseExpression(;)
+                    parsePrecedenceExpression(;, 1, true)
+                      parseUnaryExpression(;, true)
+                        parsePrimary(;, expression)
+                          parseSendOrFunctionLiteral(;, expression)
+                            parseSend(;, expression)
+                              ensureIdentifier(;, expression)
+                                listener: handleIdentifier(x, expression)
+                              listener: handleNoTypeArguments(-)
+                              parseArgumentsOpt(x)
+                                listener: handleNoArguments(-)
+                              listener: handleSend(x, -)
+                      listener: beginBinaryExpression(-)
+                      parsePrecedenceExpression(-, 14, true)
+                        parseUnaryExpression(-, true)
+                          parsePrimary(-, expression)
+                            parseLiteralInt(-)
+                              listener: handleLiteralInt(1)
+                      listener: endBinaryExpression(-)
+                  ensureSemicolon(1)
+                    reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                    rewriter()
+                  listener: handleExpressionStatement(;)
+          notEofOrValue(}, ))
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclaration(;, false)
+                parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                  looksLikeLocalFunction())
+                  parseExpressionStatement(;)
+                    parseExpression(;)
+                      parsePrecedenceExpression(;, 1, true)
+                        parseUnaryExpression(;, true)
+                          parsePrimary(;, expression)
+                            parseSend(;, expression)
+                              ensureIdentifier(;, expression)
+                                reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                                rewriter()
+                                listener: handleIdentifier(, expression)
+                              listener: handleNoTypeArguments())
+                              parseArgumentsOpt()
+                                listener: handleNoArguments())
+                              listener: handleSend(, ))
+                    ensureSemicolon()
+                      reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                        listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                      rewriter()
+                    listener: handleExpressionStatement(;)
+          reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+            listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+          notEofOrValue(}, +)
+          parseStatement())
+            parseStatementX())
+              parseExpressionStatementOrDeclaration(), false)
+                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                  looksLikeLocalFunction(+)
+                  parseExpressionStatement())
+                    parseExpression())
+                      parsePrecedenceExpression(), 1, true)
+                        parseUnaryExpression(), true)
+                          rewriteAndRecover(), UnsupportedPrefixPlus, )
+                            reportRecoverableError(+, UnsupportedPrefixPlus)
+                              listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                            rewriter()
+                          parsePrimary(), expression)
+                            parseSendOrFunctionLiteral(), expression)
+                              parseSend(), expression)
+                                ensureIdentifier(), expression)
+                                  listener: handleIdentifier(, expression)
+                                listener: handleNoTypeArguments(+)
+                                parseArgumentsOpt()
+                                  listener: handleNoArguments(+)
+                                listener: handleSend(, +)
+                        listener: beginBinaryExpression(+)
+                        parsePrecedenceExpression(+, 14, true)
+                          parseUnaryExpression(+, true)
+                            parsePrimary(+, expression)
+                              parseLiteralInt(+)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(+)
+                    ensureSemicolon(1)
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(6, {, })
+        listener: endTopLevelMethod(void, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(while)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(while)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(while)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(while)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, while)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+          listener: handleIdentifier(while, topLevelFunctionDeclaration)
+        parseMethodTypeVar(while)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(while, while, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(while, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+                            rewriter()
+                            listener: handleIdentifier(, expression)
+                          listener: handleNoTypeArguments(while)
+                          parseArgumentsOpt()
+                            listener: handleNoArguments(while)
+                          listener: handleSend(, while)
+                ensureSemicolon()
+                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], while, while)
+                  rewriter()
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, while)
+          parseStatement(;)
+            parseStatementX(;)
+              parseWhileStatement(;)
+                listener: beginWhileStatement(while)
+                ensureParenthesizedCondition(while)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(-)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(-)
+                                listener: handleSend(x, -)
+                        listener: beginBinaryExpression(-)
+                        parsePrecedenceExpression(-, 14, true)
+                          parseUnaryExpression(-, true)
+                            parsePrimary(-, expression)
+                              parseLiteralInt(-)
+                                listener: handleLiteralInt(1)
+                        listener: endBinaryExpression(-)
+                    ensureCloseParen(1, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginWhileStatementBody(+)
+                parseStatement())
+                  parseStatementX())
+                    parseExpressionStatementOrDeclaration(), false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                        looksLikeLocalFunction(+)
+                        parseExpressionStatement())
+                          parseExpression())
+                            parsePrecedenceExpression(), 1, true)
+                              parseUnaryExpression(), true)
+                                rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                  reportRecoverableError(+, UnsupportedPrefixPlus)
+                                    listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                  rewriter()
+                                parsePrimary(), expression)
+                                  parseSendOrFunctionLiteral(), expression)
+                                    parseSend(), expression)
+                                      ensureIdentifier(), expression)
+                                        listener: handleIdentifier(, expression)
+                                      listener: handleNoTypeArguments(+)
+                                      parseArgumentsOpt()
+                                        listener: handleNoArguments(+)
+                                      listener: handleSend(, +)
+                              listener: beginBinaryExpression(+)
+                              parsePrecedenceExpression(+, 14, true)
+                                parseUnaryExpression(+, true)
+                                  parsePrimary(+, expression)
+                                    parseLiteralInt(+)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(+)
+                          ensureSemicolon(1)
+                          listener: handleExpressionStatement(;)
+                listener: endWhileStatementBody(})
+                listener: endWhileStatement(while, })
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(3, {, })
+        listener: endTopLevelMethod(while, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
+        reportRecoverableError(int, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
+        listener: handleNoType(})
+        ensureIdentifier(}, topLevelVariableDeclaration)
+          listener: handleIdentifier(int, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(with)
+        ensureSemicolon(int)
+          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(with)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(with)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(with)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, with)
+        listener: beginTopLevelMethod(;, null)
+        listener: handleNoType(;)
+        ensureIdentifier(;, topLevelFunctionDeclaration)
+          reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+          listener: handleIdentifier(with, topLevelFunctionDeclaration)
+        parseMethodTypeVar(with)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(with, with, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(with, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSend(return, expression)
+                          ensureIdentifier(return, expression)
+                            reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+                            listener: handleIdentifier(with, expression)
+                          listener: handleNoTypeArguments(()
+                          parseArgumentsOpt(with)
+                            parseArguments(with)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                parseExpression(()
+                                  parsePrecedenceExpression((, 1, true)
+                                    parseUnaryExpression((, true)
+                                      parsePrimary((, expression)
+                                        parseSendOrFunctionLiteral((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              listener: handleIdentifier(x, expression)
+                                            listener: handleNoTypeArguments(-)
+                                            parseArgumentsOpt(x)
+                                              listener: handleNoArguments(-)
+                                            listener: handleSend(x, -)
+                                    listener: beginBinaryExpression(-)
+                                    parsePrecedenceExpression(-, 14, true)
+                                      parseUnaryExpression(-, true)
+                                        parsePrimary(-, expression)
+                                          parseLiteralInt(-)
+                                            listener: handleLiteralInt(1)
+                                    listener: endBinaryExpression(-)
+                                listener: endArguments(1, (, ))
+                          listener: handleSend(with, +)
+                    listener: beginBinaryExpression(+)
+                    parsePrecedenceExpression(+, 14, true)
+                      parseUnaryExpression(+, true)
+                        parsePrimary(+, expression)
+                          parseLiteralInt(+)
+                            listener: handleLiteralInt(1)
+                    listener: endBinaryExpression(+)
+                ensureSemicolon(1)
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(with, null, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(int)
+  listener: endCompilationUnit(71, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.parser.expect
new file mode 100644
index 0000000..1dc529d
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.parser.expect
@@ -0,0 +1,333 @@
+NOTICE: Stream was rewritten by parser!
+
+int ;assert(int x) {
+if (x == 0) return 42;
+return assert(x-1) + 1;
+}
+
+int ;break(int x) {
+if (x == 0) return 42;
+return ;break;(x-1) + 1;
+}
+
+int ;case(int x) {
+if (x == 0) return 42;
+return case(x-1) + 1;
+}
+
+int ;catch(int x) {
+if (x == 0) return 42;
+return catch(x-1) + 1;
+}
+
+int ;class({}int x;) {
+if (x == 0) return 42;
+return class(x-1) + 1;
+}
+
+int ;const(int x) {
+if (x == 0) return 42;
+return const(x-1) + 1;
+}
+
+int ;continue(int x) {
+if (x == 0) return 42;
+return ;continue;(x-1) + 1;
+}
+
+int ;default(int x) {
+if (x == 0) return 42;
+return default(x-1) + 1;
+}
+
+int ;do(int x) {
+if (x == 0) return 42;
+return ;do(x-1) + 1;
+while();}
+
+int ;else(int x) {
+if (x == 0) return 42;
+return ;;else(x-1) + 1;
+}
+
+int ;enum({}int x;) {
+if (x == 0) return 42;
+return enum(x-1) + 1;
+}
+
+int ;extends(int x) {
+if (x == 0) return 42;
+return extends(x-1) + 1;
+}
+
+int ;false(int x) {
+if (x == 0) return 42;
+return false(x-1) + 1;
+}
+
+int ;final(int x) {
+if (x == 0) return 42;
+return ;final(;x-1;;) + 1;
+}
+
+int ;finally(int x) {
+if (x == 0) return 42;
+return finally(x-1) + 1;
+}
+
+int ;for(int x) {
+if (x == 0) return 42;
+return ;for(x-1;;) + 1;
+}
+
+int ;if(int x) {
+if (x == 0) return 42;
+return ;if(x-1) + 1;
+}
+
+int ;in(int x) {
+if (x == 0) return 42;
+return in(x-1) + 1;
+}
+
+int ;is(int x) {
+if (x == 0) return 42;
+return is;(x-1) + 1;
+}
+
+int ;new(int x) {
+if (x == 0) return 42;
+return new(x-1) + 1;
+}
+
+int ;null(int x) {
+if (x == 0) return 42;
+return null(x-1) + 1;
+}
+
+int ;rethrow(int x) {
+if (x == 0) return 42;
+return rethrow(x-1) + 1;
+}
+
+int ;return(int x) {
+if (x == 0) return 42;
+return return(x-1) + 1;
+}
+
+int ;super(int x) {
+if (x == 0) return 42;
+return super(x-1) + 1;
+}
+
+int ;switch(int x) {
+if (x == 0) return 42;
+return ;switch(x-1) {}+ 1;
+}
+
+int this(int x) {
+if (x == 0) return 42;
+return this(x-1) + 1;
+}
+
+int ;throw(int x) {
+if (x == 0) return 42;
+return throw(x-1) + 1;
+}
+
+int ;true(int x) {
+if (x == 0) return 42;
+return true(x-1) + 1;
+}
+
+int ;try(int x) {
+if (x == 0) return 42;
+return ;try{}(x-1) + 1;
+}
+
+int ;var(int x) {
+if (x == 0) return 42;
+return ;var(;x-1;;) + 1;
+}
+
+int ;void(int x) {
+if (x == 0) return 42;
+return ;void(;x-1;;) + 1;
+}
+
+int ;while(int x) {
+if (x == 0) return 42;
+return ;while(x-1) + 1;
+}
+
+int ;with(int x) {
+if (x == 0) return 42;
+return with(x-1) + 1;
+}
+
+
+int[StringToken] ;[SyntheticToken]assert[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] assert[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]break[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]break[KeywordToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]case[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] case[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]catch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] catch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]class[KeywordToken]([BeginToken][SyntheticStringToken]{[SyntheticBeginToken]}[SyntheticToken]int[StringToken] x[StringToken];[SyntheticToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] class[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]const[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] const[KeywordToken][SyntheticStringToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]continue[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]continue[KeywordToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]default[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] default[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]do[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]do[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+while[SyntheticKeywordToken]([SyntheticBeginToken][SyntheticStringToken])[SyntheticToken];[SyntheticToken]}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]else[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken]else[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]enum[KeywordToken]([BeginToken][SyntheticStringToken]{[SyntheticBeginToken]}[SyntheticToken]int[StringToken] x[StringToken];[SyntheticToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] enum[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]extends[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] extends[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]false[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] false[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]final[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]final[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]finally[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] finally[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]for[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]for[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]if[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]if[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]in[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] in[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]is[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken]is[KeywordToken][SyntheticStringToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]new[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] new[KeywordToken][SyntheticStringToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]null[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] null[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]rethrow[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] rethrow[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]return[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] return[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]super[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] super[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]switch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]switch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] {[SyntheticBeginToken]}[SyntheticToken][SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] this[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] this[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]throw[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] throw[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]true[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] true[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]try[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]try[KeywordToken]{[SyntheticBeginToken]}[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]var[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]var[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]void[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]void[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]while[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] [SyntheticStringToken];[SyntheticToken]while[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] ;[SyntheticToken]with[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] with[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.scanner.expect
new file mode 100644
index 0000000..896ca86
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.scanner.expect
@@ -0,0 +1,331 @@
+int assert(int x) {
+if (x == 0) return 42;
+return assert(x-1) + 1;
+}
+
+int break(int x) {
+if (x == 0) return 42;
+return break(x-1) + 1;
+}
+
+int case(int x) {
+if (x == 0) return 42;
+return case(x-1) + 1;
+}
+
+int catch(int x) {
+if (x == 0) return 42;
+return catch(x-1) + 1;
+}
+
+int class(int x) {
+if (x == 0) return 42;
+return class(x-1) + 1;
+}
+
+int const(int x) {
+if (x == 0) return 42;
+return const(x-1) + 1;
+}
+
+int continue(int x) {
+if (x == 0) return 42;
+return continue(x-1) + 1;
+}
+
+int default(int x) {
+if (x == 0) return 42;
+return default(x-1) + 1;
+}
+
+int do(int x) {
+if (x == 0) return 42;
+return do(x-1) + 1;
+}
+
+int else(int x) {
+if (x == 0) return 42;
+return else(x-1) + 1;
+}
+
+int enum(int x) {
+if (x == 0) return 42;
+return enum(x-1) + 1;
+}
+
+int extends(int x) {
+if (x == 0) return 42;
+return extends(x-1) + 1;
+}
+
+int false(int x) {
+if (x == 0) return 42;
+return false(x-1) + 1;
+}
+
+int final(int x) {
+if (x == 0) return 42;
+return final(x-1) + 1;
+}
+
+int finally(int x) {
+if (x == 0) return 42;
+return finally(x-1) + 1;
+}
+
+int for(int x) {
+if (x == 0) return 42;
+return for(x-1) + 1;
+}
+
+int if(int x) {
+if (x == 0) return 42;
+return if(x-1) + 1;
+}
+
+int in(int x) {
+if (x == 0) return 42;
+return in(x-1) + 1;
+}
+
+int is(int x) {
+if (x == 0) return 42;
+return is(x-1) + 1;
+}
+
+int new(int x) {
+if (x == 0) return 42;
+return new(x-1) + 1;
+}
+
+int null(int x) {
+if (x == 0) return 42;
+return null(x-1) + 1;
+}
+
+int rethrow(int x) {
+if (x == 0) return 42;
+return rethrow(x-1) + 1;
+}
+
+int return(int x) {
+if (x == 0) return 42;
+return return(x-1) + 1;
+}
+
+int super(int x) {
+if (x == 0) return 42;
+return super(x-1) + 1;
+}
+
+int switch(int x) {
+if (x == 0) return 42;
+return switch(x-1) + 1;
+}
+
+int this(int x) {
+if (x == 0) return 42;
+return this(x-1) + 1;
+}
+
+int throw(int x) {
+if (x == 0) return 42;
+return throw(x-1) + 1;
+}
+
+int true(int x) {
+if (x == 0) return 42;
+return true(x-1) + 1;
+}
+
+int try(int x) {
+if (x == 0) return 42;
+return try(x-1) + 1;
+}
+
+int var(int x) {
+if (x == 0) return 42;
+return var(x-1) + 1;
+}
+
+int void(int x) {
+if (x == 0) return 42;
+return void(x-1) + 1;
+}
+
+int while(int x) {
+if (x == 0) return 42;
+return while(x-1) + 1;
+}
+
+int with(int x) {
+if (x == 0) return 42;
+return with(x-1) + 1;
+}
+
+
+int[StringToken] assert[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] assert[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] break[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] break[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] case[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] case[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] catch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] catch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] class[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] class[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] const[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] const[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] continue[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] continue[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] default[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] default[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] do[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] do[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] else[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] else[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] enum[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] enum[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] extends[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] extends[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] false[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] false[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] final[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] final[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] finally[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] finally[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] for[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] for[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] if[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] if[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] in[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] in[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] is[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] is[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] new[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] new[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] null[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] null[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] rethrow[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] rethrow[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] return[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] return[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] super[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] super[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] switch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] switch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] this[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] this[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] throw[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] throw[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] true[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] true[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] try[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] try[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] var[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] var[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] void[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] void[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] while[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] while[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] with[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] with[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart b/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart
new file mode 100644
index 0000000..b337598
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart
@@ -0,0 +1,22 @@
+class WrapperClass {
+  int abstract = 42;
+  int as = 42;
+  int covariant = 42;
+  int deferred = 42;
+  int dynamic = 42;
+  int export = 42;
+  int external = 42;
+  int factory = 42;
+  int Function = 42;
+  int get = 42;
+  int implements = 42;
+  int import = 42;
+  int interface = 42;
+  int library = 42;
+  int operator = 42;
+  int mixin = 42;
+  int part = 42;
+  int set = 42;
+  int static = 42;
+  int typedef = 42;
+}
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.expect
new file mode 100644
index 0000000..3b9db40
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.expect
@@ -0,0 +1,257 @@
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(WrapperClass, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, WrapperClass)
+      handleNoType(WrapperClass)
+      handleClassExtends(null)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(abstract)
+          handleType(int, null)
+          handleIdentifier(abstract, fieldDeclaration)
+          beginFieldInitializer(=)
+            handleLiteralInt(42)
+          endFieldInitializer(=, ;)
+        endClassFields(null, null, null, null, 1, int, ;)
+      endMember()
+      beginMetadataStar(int)
+      endMetadataStar(0)
+      beginMember()
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(as)
+        handleType(int, null)
+        handleIdentifier(as, fieldDeclaration)
+        beginFieldInitializer(=)
+          handleLiteralInt(42)
+        endFieldInitializer(=, ;)
+      endClassFields(null, null, null, null, 1, int, ;)
+    endMember()
+    beginMetadataStar(int)
+    endMetadataStar(0)
+    beginMember()
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(covariant)
+      handleType(int, null)
+      handleIdentifier(covariant, fieldDeclaration)
+      beginFieldInitializer(=)
+        handleLiteralInt(42)
+      endFieldInitializer(=, ;)
+    endClassFields(null, null, null, null, 1, int, ;)
+  endMember()
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginMember()
+    handleIdentifier(int, typeReference)
+    handleNoTypeArguments(deferred)
+    handleType(int, null)
+    handleIdentifier(deferred, fieldDeclaration)
+    beginFieldInitializer(=)
+      handleLiteralInt(42)
+    endFieldInitializer(=, ;)
+  endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+  handleIdentifier(int, typeReference)
+  handleNoTypeArguments(dynamic)
+  handleType(int, null)
+  handleIdentifier(dynamic, fieldDeclaration)
+  beginFieldInitializer(=)
+    handleLiteralInt(42)
+  endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(export)
+handleType(int, null)
+handleIdentifier(export, fieldDeclaration)
+beginFieldInitializer(=)
+  handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(external)
+handleType(int, null)
+handleIdentifier(external, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(factory)
+handleType(int, null)
+handleIdentifier(factory, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(Function)
+handleType(int, null)
+handleIdentifier(Function, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(get)
+handleType(int, null)
+handleIdentifier(get, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(implements)
+handleType(int, null)
+handleIdentifier(implements, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(import)
+handleType(int, null)
+handleIdentifier(import, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(interface)
+handleType(int, null)
+handleIdentifier(interface, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(library)
+handleType(int, null)
+handleIdentifier(library, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(operator)
+handleType(int, null)
+handleIdentifier(operator, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(mixin)
+handleType(int, null)
+handleIdentifier(mixin, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(part)
+handleType(int, null)
+handleIdentifier(part, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(set)
+handleType(int, null)
+handleIdentifier(set, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(static)
+handleType(int, null)
+handleIdentifier(static, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+beginMetadataStar(int)
+endMetadataStar(0)
+beginMember()
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(typedef)
+handleType(int, null)
+handleIdentifier(typedef, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
+endMember()
+endClassOrMixinBody(DeclarationKind.Class, 20, {, })
+endClassDeclaration(class, })
+endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.intertwined.expect
new file mode 100644
index 0000000..b8e145f
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.intertwined.expect
@@ -0,0 +1,495 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(WrapperClass, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, WrapperClass)
+        parseClass(WrapperClass, class, class, WrapperClass)
+          parseClassHeaderOpt(WrapperClass, class, class)
+            parseClassExtendsOpt(WrapperClass)
+              listener: handleNoType(WrapperClass)
+              listener: handleClassExtends(null)
+            parseWithClauseOpt(WrapperClass)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(WrapperClass)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(WrapperClass, DeclarationKind.Class, WrapperClass)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar({)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', abstract, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(abstract)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(abstract, fieldDeclaration)
+                parseFieldInitializerOpt(abstract, abstract, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', as, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(as)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(as, fieldDeclaration)
+                parseFieldInitializerOpt(as, as, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', covariant, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(covariant)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(covariant, fieldDeclaration)
+                parseFieldInitializerOpt(covariant, covariant, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', deferred, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(deferred)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(deferred, fieldDeclaration)
+                parseFieldInitializerOpt(deferred, deferred, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', dynamic, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(dynamic)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(dynamic, fieldDeclaration)
+                parseFieldInitializerOpt(dynamic, dynamic, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', export, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(export)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(export, fieldDeclaration)
+                parseFieldInitializerOpt(export, export, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', external, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(external)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(external, fieldDeclaration)
+                parseFieldInitializerOpt(external, external, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', factory, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(factory)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(factory, fieldDeclaration)
+                parseFieldInitializerOpt(factory, factory, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', Function, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(Function)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(Function, fieldDeclaration)
+                parseFieldInitializerOpt(Function, Function, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', get, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(get)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(get, fieldDeclaration)
+                parseFieldInitializerOpt(get, get, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', implements, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(implements)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(implements, fieldDeclaration)
+                parseFieldInitializerOpt(implements, implements, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', import, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(import)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(import, fieldDeclaration)
+                parseFieldInitializerOpt(import, import, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', interface, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(interface)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(interface, fieldDeclaration)
+                parseFieldInitializerOpt(interface, interface, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', library, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(library)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(library, fieldDeclaration)
+                parseFieldInitializerOpt(library, library, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isUnaryMinus(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', operator, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(operator)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(operator, fieldDeclaration)
+                parseFieldInitializerOpt(operator, operator, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', mixin, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(mixin)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(mixin, fieldDeclaration)
+                parseFieldInitializerOpt(mixin, mixin, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', part, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(part)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(part, fieldDeclaration)
+                parseFieldInitializerOpt(part, part, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', set, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(set)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(set, fieldDeclaration)
+                parseFieldInitializerOpt(set, set, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', static, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(static)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(static, fieldDeclaration)
+                parseFieldInitializerOpt(static, static, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', typedef, DeclarationKind.Class, WrapperClass)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(typedef)
+                listener: handleType(int, null)
+                ensureIdentifier(int, fieldDeclaration)
+                  listener: handleIdentifier(typedef, fieldDeclaration)
+                parseFieldInitializerOpt(typedef, typedef, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 20, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.parser.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.parser.expect
new file mode 100644
index 0000000..1f7ddbf
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.parser.expect
@@ -0,0 +1,47 @@
+class WrapperClass {
+int abstract = 42;
+int as = 42;
+int covariant = 42;
+int deferred = 42;
+int dynamic = 42;
+int export = 42;
+int external = 42;
+int factory = 42;
+int Function = 42;
+int get = 42;
+int implements = 42;
+int import = 42;
+int interface = 42;
+int library = 42;
+int operator = 42;
+int mixin = 42;
+int part = 42;
+int set = 42;
+int static = 42;
+int typedef = 42;
+}
+
+
+class[KeywordToken] WrapperClass[StringToken] {[BeginToken]
+int[StringToken] abstract[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] as[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] covariant[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] deferred[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] dynamic[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] export[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] external[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] factory[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] Function[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] implements[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] import[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] interface[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] library[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] operator[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] mixin[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] part[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] set[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] static[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] typedef[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.scanner.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.scanner.expect
new file mode 100644
index 0000000..1f7ddbf
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.scanner.expect
@@ -0,0 +1,47 @@
+class WrapperClass {
+int abstract = 42;
+int as = 42;
+int covariant = 42;
+int deferred = 42;
+int dynamic = 42;
+int export = 42;
+int external = 42;
+int factory = 42;
+int Function = 42;
+int get = 42;
+int implements = 42;
+int import = 42;
+int interface = 42;
+int library = 42;
+int operator = 42;
+int mixin = 42;
+int part = 42;
+int set = 42;
+int static = 42;
+int typedef = 42;
+}
+
+
+class[KeywordToken] WrapperClass[StringToken] {[BeginToken]
+int[StringToken] abstract[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] as[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] covariant[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] deferred[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] dynamic[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] export[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] external[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] factory[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] Function[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] implements[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] import[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] interface[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] library[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] operator[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] mixin[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] part[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] set[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] static[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] typedef[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart
new file mode 100644
index 0000000..58f62e2
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart
@@ -0,0 +1,101 @@
+class WrapperClass {
+  int abstract(int x) {
+    if (x == 0) return 42;
+    return abstract(x - 1);
+  }
+
+  int as(int x) {
+    if (x == 0) return 42;
+    return as(x - 1);
+  }
+
+  int covariant(int x) {
+    if (x == 0) return 42;
+    return covariant(x - 1);
+  }
+
+  int deferred(int x) {
+    if (x == 0) return 42;
+    return deferred(x - 1);
+  }
+
+  int dynamic(int x) {
+    if (x == 0) return 42;
+    return dynamic(x - 1);
+  }
+
+  int export(int x) {
+    if (x == 0) return 42;
+    return export(x - 1);
+  }
+
+  int external(int x) {
+    if (x == 0) return 42;
+    return external(x - 1);
+  }
+
+  int factory(int x) {
+    if (x == 0) return 42;
+    return factory(x - 1);
+  }
+
+  int Function(int x) {
+    if (x == 0) return 42;
+    return Function(x - 1);
+  }
+
+  int get(int x) {
+    if (x == 0) return 42;
+    return get(x - 1);
+  }
+
+  int implements(int x) {
+    if (x == 0) return 42;
+    return implements(x - 1);
+  }
+
+  int import(int x) {
+    if (x == 0) return 42;
+    return import(x - 1);
+  }
+
+  int interface(int x) {
+    if (x == 0) return 42;
+    return interface(x - 1);
+  }
+
+  int library(int x) {
+    if (x == 0) return 42;
+    return library(x - 1);
+  }
+
+  int operator(int x) {
+    if (x == 0) return 42;
+    return operator(x - 1);
+  }
+
+  int mixin(int x) {
+    if (x == 0) return 42;
+    return mixin(x - 1);
+  }
+
+  int part(int x) {
+    if (x == 0) return 42;
+    return part(x - 1);
+  }
+
+  int set(int x) {
+    if (x == 0) return 42;
+    return set(x - 1);
+  }
+
+  int static(int x) {
+    if (x == 0) return 42;
+    return static(x - 1);
+  }
+
+  int typedef(int x) {
+    if (x == 0) return 42;
+    return typedef(x - 1);
+  }
+}
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.expect
new file mode 100644
index 0000000..4e94eac
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.expect
@@ -0,0 +1,1117 @@
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(WrapperClass, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, WrapperClass)
+      handleNoType(WrapperClass)
+      handleClassExtends(null)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, abstract)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(abstract)
+            handleType(int, null)
+            handleIdentifier(abstract, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(abstract, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(abstract, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, as)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(as)
+            handleType(int, null)
+            handleIdentifier(as, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(as, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(as, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, covariant)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(covariant)
+            handleType(int, null)
+            handleIdentifier(covariant, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(covariant, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(covariant, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, deferred)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(deferred)
+            handleType(int, null)
+            handleIdentifier(deferred, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(deferred, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(deferred, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, dynamic)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(dynamic)
+            handleType(int, null)
+            handleIdentifier(dynamic, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(dynamic, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(dynamic, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, export)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(export)
+            handleType(int, null)
+            handleIdentifier(export, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(export, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(export, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, external)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(external)
+            handleType(int, null)
+            handleIdentifier(external, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(external, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(external, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, factory)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(factory)
+            handleType(int, null)
+            handleIdentifier(factory, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(factory, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(factory, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, Function)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(Function)
+            handleType(int, null)
+            handleIdentifier(Function, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(Function, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(Function, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, get)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(get)
+            handleType(int, null)
+            handleIdentifier(get, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(get, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(get, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, implements)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(implements)
+            handleType(int, null)
+            handleIdentifier(implements, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(implements, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(implements, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, import)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(import)
+            handleType(int, null)
+            handleIdentifier(import, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(import, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(import, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, interface)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(interface)
+            handleType(int, null)
+            handleIdentifier(interface, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(interface, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(interface, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, library)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(library)
+            handleType(int, null)
+            handleIdentifier(library, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(library, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(library, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, operator)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(operator)
+            handleType(int, null)
+            handleIdentifier(operator, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(operator, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(operator, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, mixin)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(mixin)
+            handleType(int, null)
+            handleIdentifier(mixin, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(mixin, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(mixin, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, part)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(part)
+            handleType(int, null)
+            handleIdentifier(part, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(part, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(part, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, set)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(set)
+            handleType(int, null)
+            handleIdentifier(set, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(set, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(set, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, static)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(static)
+            handleType(int, null)
+            handleIdentifier(static, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(static, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(static, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, typedef)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(typedef)
+            handleType(int, null)
+            handleIdentifier(typedef, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleIdentifier(typedef, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(typedef, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 20, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.intertwined.expect
new file mode 100644
index 0000000..34e9020
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.intertwined.expect
@@ -0,0 +1,2716 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(WrapperClass, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, WrapperClass)
+        parseClass(WrapperClass, class, class, WrapperClass)
+          parseClassHeaderOpt(WrapperClass, class, class)
+            parseClassExtendsOpt(WrapperClass)
+              listener: handleNoType(WrapperClass)
+              listener: handleClassExtends(null)
+            parseWithClauseOpt(WrapperClass)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(WrapperClass)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(WrapperClass, DeclarationKind.Class, WrapperClass)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar({)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', null, abstract, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, abstract)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(abstract)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(abstract, methodDeclaration)
+                parseQualifiedRestOpt(abstract, methodDeclarationContinuation)
+                parseMethodTypeVar(abstract)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(abstract, abstract, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(abstract, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(abstract, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(abstract)
+                                      parseArguments(abstract)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(abstract, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, as, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, as)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(as)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(as, methodDeclaration)
+                parseQualifiedRestOpt(as, methodDeclarationContinuation)
+                parseMethodTypeVar(as)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(as, as, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(as, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(as, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(as)
+                                      parseArguments(as)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(as, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, covariant, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, covariant)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(covariant)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(covariant, methodDeclaration)
+                parseQualifiedRestOpt(covariant, methodDeclarationContinuation)
+                parseMethodTypeVar(covariant)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(covariant, covariant, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(covariant, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(covariant, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(covariant)
+                                      parseArguments(covariant)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(covariant, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, deferred, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, deferred)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(deferred)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(deferred, methodDeclaration)
+                parseQualifiedRestOpt(deferred, methodDeclarationContinuation)
+                parseMethodTypeVar(deferred)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(deferred, deferred, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(deferred, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(deferred, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(deferred)
+                                      parseArguments(deferred)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(deferred, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, dynamic, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, dynamic)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(dynamic)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(dynamic, methodDeclaration)
+                parseQualifiedRestOpt(dynamic, methodDeclarationContinuation)
+                parseMethodTypeVar(dynamic)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(dynamic, dynamic, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(dynamic, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(dynamic, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(dynamic)
+                                      parseArguments(dynamic)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(dynamic, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, export, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, export)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(export)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(export, methodDeclaration)
+                parseQualifiedRestOpt(export, methodDeclarationContinuation)
+                parseMethodTypeVar(export)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(export, export, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(export, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(export, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(export)
+                                      parseArguments(export)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(export, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, external, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, external)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(external)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(external, methodDeclaration)
+                parseQualifiedRestOpt(external, methodDeclarationContinuation)
+                parseMethodTypeVar(external)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(external, external, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(external, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(external, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(external)
+                                      parseArguments(external)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(external, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, factory, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, factory)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(factory)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(factory, methodDeclaration)
+                parseQualifiedRestOpt(factory, methodDeclarationContinuation)
+                parseMethodTypeVar(factory)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(factory, factory, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(factory, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(factory, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(factory)
+                                      parseArguments(factory)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(factory, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, Function, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, Function)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(Function)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(Function, methodDeclaration)
+                parseQualifiedRestOpt(Function, methodDeclarationContinuation)
+                parseMethodTypeVar(Function)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(Function, Function, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(Function, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(Function, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(Function)
+                                      parseArguments(Function)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(Function, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, get, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, get)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(get)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(get, methodDeclaration)
+                parseQualifiedRestOpt(get, methodDeclarationContinuation)
+                parseMethodTypeVar(get)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(get, get, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(get, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(get, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(get)
+                                      parseArguments(get)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(get, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, implements, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, implements)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(implements)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(implements, methodDeclaration)
+                parseQualifiedRestOpt(implements, methodDeclarationContinuation)
+                parseMethodTypeVar(implements)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(implements, implements, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(implements, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(implements, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(implements)
+                                      parseArguments(implements)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(implements, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, import, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, import)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(import)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(import, methodDeclaration)
+                parseQualifiedRestOpt(import, methodDeclarationContinuation)
+                parseMethodTypeVar(import)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(import, import, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(import, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(import, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(import)
+                                      parseArguments(import)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(import, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, interface, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, interface)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(interface)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(interface, methodDeclaration)
+                parseQualifiedRestOpt(interface, methodDeclarationContinuation)
+                parseMethodTypeVar(interface)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(interface, interface, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(interface, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(interface, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(interface)
+                                      parseArguments(interface)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(interface, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, library, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, library)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(library)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(library, methodDeclaration)
+                parseQualifiedRestOpt(library, methodDeclarationContinuation)
+                parseMethodTypeVar(library)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(library, library, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(library, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(library, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(library)
+                                      parseArguments(library)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(library, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isUnaryMinus(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, operator, DeclarationKind.Class, WrapperClass)
+                isUnaryMinus(()
+                listener: beginMethod(null, null, null, null, null, operator)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(operator)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(operator, methodDeclaration)
+                parseQualifiedRestOpt(operator, methodDeclarationContinuation)
+                parseMethodTypeVar(operator)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(operator, operator, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(operator, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(operator, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(operator)
+                                      parseArguments(operator)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(operator, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, mixin, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, mixin)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(mixin)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(mixin, methodDeclaration)
+                parseQualifiedRestOpt(mixin, methodDeclarationContinuation)
+                parseMethodTypeVar(mixin)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(mixin, mixin, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(mixin, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(mixin, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(mixin)
+                                      parseArguments(mixin)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(mixin, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, part, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, part)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(part)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(part, methodDeclaration)
+                parseQualifiedRestOpt(part, methodDeclarationContinuation)
+                parseMethodTypeVar(part)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(part, part, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(part, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(part, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(part)
+                                      parseArguments(part)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(part, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, set, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, set)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(set)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(set, methodDeclaration)
+                parseQualifiedRestOpt(set, methodDeclarationContinuation)
+                parseMethodTypeVar(set)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(set, set, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(set, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(set, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(set)
+                                      parseArguments(set)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(set, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, static, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, static)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(static)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(static, methodDeclaration)
+                parseQualifiedRestOpt(static, methodDeclarationContinuation)
+                parseMethodTypeVar(static)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(static, static, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(static, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(static, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(static)
+                                      parseArguments(static)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(static, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, typedef, DeclarationKind.Class, WrapperClass)
+                listener: beginMethod(null, null, null, null, null, typedef)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(typedef)
+                listener: handleType(int, null)
+                ensureIdentifier(int, methodDeclaration)
+                  listener: handleIdentifier(typedef, methodDeclaration)
+                parseQualifiedRestOpt(typedef, methodDeclarationContinuation)
+                parseMethodTypeVar(typedef)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(typedef, typedef, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(typedef, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      inPlainSync()
+                                      listener: handleIdentifier(typedef, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(typedef)
+                                      parseArguments(typedef)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(typedef, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 20, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.parser.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.parser.expect
new file mode 100644
index 0000000..055374b
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.parser.expect
@@ -0,0 +1,205 @@
+class WrapperClass {
+int abstract(int x) {
+if (x == 0) return 42;
+return abstract(x - 1);
+}
+
+int as(int x) {
+if (x == 0) return 42;
+return as(x - 1);
+}
+
+int covariant(int x) {
+if (x == 0) return 42;
+return covariant(x - 1);
+}
+
+int deferred(int x) {
+if (x == 0) return 42;
+return deferred(x - 1);
+}
+
+int dynamic(int x) {
+if (x == 0) return 42;
+return dynamic(x - 1);
+}
+
+int export(int x) {
+if (x == 0) return 42;
+return export(x - 1);
+}
+
+int external(int x) {
+if (x == 0) return 42;
+return external(x - 1);
+}
+
+int factory(int x) {
+if (x == 0) return 42;
+return factory(x - 1);
+}
+
+int Function(int x) {
+if (x == 0) return 42;
+return Function(x - 1);
+}
+
+int get(int x) {
+if (x == 0) return 42;
+return get(x - 1);
+}
+
+int implements(int x) {
+if (x == 0) return 42;
+return implements(x - 1);
+}
+
+int import(int x) {
+if (x == 0) return 42;
+return import(x - 1);
+}
+
+int interface(int x) {
+if (x == 0) return 42;
+return interface(x - 1);
+}
+
+int library(int x) {
+if (x == 0) return 42;
+return library(x - 1);
+}
+
+int operator(int x) {
+if (x == 0) return 42;
+return operator(x - 1);
+}
+
+int mixin(int x) {
+if (x == 0) return 42;
+return mixin(x - 1);
+}
+
+int part(int x) {
+if (x == 0) return 42;
+return part(x - 1);
+}
+
+int set(int x) {
+if (x == 0) return 42;
+return set(x - 1);
+}
+
+int static(int x) {
+if (x == 0) return 42;
+return static(x - 1);
+}
+
+int typedef(int x) {
+if (x == 0) return 42;
+return typedef(x - 1);
+}
+}
+
+
+class[KeywordToken] WrapperClass[StringToken] {[BeginToken]
+int[StringToken] abstract[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] abstract[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] as[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] as[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] covariant[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] covariant[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] deferred[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] deferred[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] dynamic[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] dynamic[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] export[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] export[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] external[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] external[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] factory[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] factory[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] Function[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] Function[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] get[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] implements[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] implements[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] import[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] import[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] interface[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] interface[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] library[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] library[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] operator[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] operator[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] mixin[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] mixin[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] part[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] part[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] set[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] set[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] static[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] static[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] typedef[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] typedef[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.scanner.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.scanner.expect
new file mode 100644
index 0000000..055374b
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.scanner.expect
@@ -0,0 +1,205 @@
+class WrapperClass {
+int abstract(int x) {
+if (x == 0) return 42;
+return abstract(x - 1);
+}
+
+int as(int x) {
+if (x == 0) return 42;
+return as(x - 1);
+}
+
+int covariant(int x) {
+if (x == 0) return 42;
+return covariant(x - 1);
+}
+
+int deferred(int x) {
+if (x == 0) return 42;
+return deferred(x - 1);
+}
+
+int dynamic(int x) {
+if (x == 0) return 42;
+return dynamic(x - 1);
+}
+
+int export(int x) {
+if (x == 0) return 42;
+return export(x - 1);
+}
+
+int external(int x) {
+if (x == 0) return 42;
+return external(x - 1);
+}
+
+int factory(int x) {
+if (x == 0) return 42;
+return factory(x - 1);
+}
+
+int Function(int x) {
+if (x == 0) return 42;
+return Function(x - 1);
+}
+
+int get(int x) {
+if (x == 0) return 42;
+return get(x - 1);
+}
+
+int implements(int x) {
+if (x == 0) return 42;
+return implements(x - 1);
+}
+
+int import(int x) {
+if (x == 0) return 42;
+return import(x - 1);
+}
+
+int interface(int x) {
+if (x == 0) return 42;
+return interface(x - 1);
+}
+
+int library(int x) {
+if (x == 0) return 42;
+return library(x - 1);
+}
+
+int operator(int x) {
+if (x == 0) return 42;
+return operator(x - 1);
+}
+
+int mixin(int x) {
+if (x == 0) return 42;
+return mixin(x - 1);
+}
+
+int part(int x) {
+if (x == 0) return 42;
+return part(x - 1);
+}
+
+int set(int x) {
+if (x == 0) return 42;
+return set(x - 1);
+}
+
+int static(int x) {
+if (x == 0) return 42;
+return static(x - 1);
+}
+
+int typedef(int x) {
+if (x == 0) return 42;
+return typedef(x - 1);
+}
+}
+
+
+class[KeywordToken] WrapperClass[StringToken] {[BeginToken]
+int[StringToken] abstract[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] abstract[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] as[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] as[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] covariant[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] covariant[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] deferred[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] deferred[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] dynamic[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] dynamic[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] export[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] export[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] external[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] external[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] factory[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] factory[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] Function[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] Function[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] get[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] implements[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] implements[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] import[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] import[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] interface[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] interface[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] library[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] library[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] operator[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] operator[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] mixin[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] mixin[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] part[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] part[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] set[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] set[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] static[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] static[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] typedef[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] typedef[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart
new file mode 100644
index 0000000..ad56230
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart
@@ -0,0 +1,20 @@
+int abstract = 42;
+int as = 42;
+int covariant = 42;
+int deferred = 42;
+int dynamic = 42;
+int export = 42;
+int external = 42;
+int factory = 42;
+int Function = 42;
+int get = 42;
+int implements = 42;
+int import = 42;
+int interface = 42;
+int library = 42;
+int operator = 42;
+int mixin = 42;
+int part = 42;
+int set = 42;
+int static = 42;
+int typedef = 42;
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.expect
new file mode 100644
index 0000000..77809be
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.expect
@@ -0,0 +1,242 @@
+beginCompilationUnit(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    handleIdentifier(int, typeReference)
+    handleNoTypeArguments(abstract)
+    handleType(int, null)
+    handleIdentifier(abstract, topLevelVariableDeclaration)
+    beginFieldInitializer(=)
+      handleLiteralInt(42)
+    endFieldInitializer(=, ;)
+  endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+  handleIdentifier(int, typeReference)
+  handleNoTypeArguments(as)
+  handleType(int, null)
+  handleIdentifier(as, topLevelVariableDeclaration)
+  beginFieldInitializer(=)
+    handleLiteralInt(42)
+  endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(covariant)
+handleType(int, null)
+handleIdentifier(covariant, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+  handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(deferred)
+handleType(int, null)
+handleIdentifier(deferred, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(dynamic)
+handleType(int, null)
+handleIdentifier(dynamic, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(export)
+handleType(int, null)
+handleIdentifier(export, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(external)
+handleType(int, null)
+handleIdentifier(external, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(factory)
+handleType(int, null)
+handleIdentifier(factory, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(Function)
+handleType(int, null)
+handleIdentifier(Function, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(get)
+handleType(int, null)
+handleIdentifier(get, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(implements)
+handleType(int, null)
+handleIdentifier(implements, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(import)
+handleType(int, null)
+handleIdentifier(import, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(interface)
+handleType(int, null)
+handleIdentifier(interface, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(library)
+handleType(int, null)
+handleIdentifier(library, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(operator)
+handleType(int, null)
+handleIdentifier(operator, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(mixin)
+handleType(int, null)
+handleIdentifier(mixin, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(part)
+handleType(int, null)
+handleIdentifier(part, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(set)
+handleType(int, null)
+handleIdentifier(set, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(static)
+handleType(int, null)
+handleIdentifier(static, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
+endMetadataStar(0)
+beginTopLevelMember(int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(typedef)
+handleType(int, null)
+handleIdentifier(typedef, topLevelVariableDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, int, ;)
+endTopLevelDeclaration()
+endCompilationUnit(20, )
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.intertwined.expect
new file mode 100644
index 0000000..eed1e21
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.intertwined.expect
@@ -0,0 +1,466 @@
+parseUnit(int)
+  skipErrorTokens(int)
+  listener: beginCompilationUnit(int)
+  syntheticPreviousToken(int)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl()
+      listener: beginTopLevelMember(int)
+      parseFields(, null, null, null, null, null, , Instance of 'SimpleType', abstract, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(abstract)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(abstract, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(abstract, abstract, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', as, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(as)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(as, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(as, as, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', covariant, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(covariant)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(covariant, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(covariant, covariant, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', deferred, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(deferred)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(deferred, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(deferred, deferred, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', dynamic, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(dynamic)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(dynamic, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(dynamic, dynamic, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', export, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(export)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(export, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(export, export, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', external, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(external)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(external, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(external, external, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', factory, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(factory)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(factory, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(factory, factory, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', Function, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(Function)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(Function, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(Function, Function, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', get, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(get)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(get, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(get, get, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', implements, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(implements)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(implements, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(implements, implements, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', import, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(import)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(import, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(import, import, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', interface, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(interface)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(interface, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(interface, interface, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', library, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(library)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(library, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(library, library, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', operator, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(operator)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(operator, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(operator, operator, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', mixin, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(mixin)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(mixin, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(mixin, mixin, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', part, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(part)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(part, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(part, part, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', set, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(set)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(set, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(set, set, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', static, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(static)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(static, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(static, static, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(;)
+      listener: beginTopLevelMember(int)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', typedef, DeclarationKind.TopLevel, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(typedef)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelVariableDeclaration)
+          listener: handleIdentifier(typedef, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(typedef, typedef, null, null, DeclarationKind.TopLevel, null)
+          listener: beginFieldInitializer(=)
+          parseExpression(=)
+            parsePrecedenceExpression(=, 1, true)
+              parseUnaryExpression(=, true)
+                parsePrimary(=, expression)
+                  parseLiteralInt(=)
+                    listener: handleLiteralInt(42)
+          listener: endFieldInitializer(=, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(int)
+  listener: endCompilationUnit(20, )
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.parser.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.parser.expect
new file mode 100644
index 0000000..9b81eaf
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.parser.expect
@@ -0,0 +1,43 @@
+int abstract = 42;
+int as = 42;
+int covariant = 42;
+int deferred = 42;
+int dynamic = 42;
+int export = 42;
+int external = 42;
+int factory = 42;
+int Function = 42;
+int get = 42;
+int implements = 42;
+int import = 42;
+int interface = 42;
+int library = 42;
+int operator = 42;
+int mixin = 42;
+int part = 42;
+int set = 42;
+int static = 42;
+int typedef = 42;
+
+
+int[StringToken] abstract[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] as[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] covariant[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] deferred[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] dynamic[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] export[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] external[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] factory[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] Function[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] implements[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] import[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] interface[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] library[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] operator[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] mixin[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] part[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] set[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] static[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] typedef[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.scanner.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.scanner.expect
new file mode 100644
index 0000000..9b81eaf
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.scanner.expect
@@ -0,0 +1,43 @@
+int abstract = 42;
+int as = 42;
+int covariant = 42;
+int deferred = 42;
+int dynamic = 42;
+int export = 42;
+int external = 42;
+int factory = 42;
+int Function = 42;
+int get = 42;
+int implements = 42;
+int import = 42;
+int interface = 42;
+int library = 42;
+int operator = 42;
+int mixin = 42;
+int part = 42;
+int set = 42;
+int static = 42;
+int typedef = 42;
+
+
+int[StringToken] abstract[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] as[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] covariant[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] deferred[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] dynamic[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] export[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] external[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] factory[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] Function[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] implements[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] import[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] interface[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] library[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] operator[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] mixin[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] part[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] set[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] static[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] typedef[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart
new file mode 100644
index 0000000..aa2717a
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart
@@ -0,0 +1,99 @@
+int abstract(int x) {
+  if (x == 0) return 42;
+  return abstract(x - 1);
+}
+
+int as(int x) {
+  if (x == 0) return 42;
+  return as(x - 1);
+}
+
+int covariant(int x) {
+  if (x == 0) return 42;
+  return covariant(x - 1);
+}
+
+int deferred(int x) {
+  if (x == 0) return 42;
+  return deferred(x - 1);
+}
+
+int dynamic(int x) {
+  if (x == 0) return 42;
+  return dynamic(x - 1);
+}
+
+int export(int x) {
+  if (x == 0) return 42;
+  return export(x - 1);
+}
+
+int external(int x) {
+  if (x == 0) return 42;
+  return external(x - 1);
+}
+
+int factory(int x) {
+  if (x == 0) return 42;
+  return factory(x - 1);
+}
+
+int Function(int x) {
+  if (x == 0) return 42;
+  return Function(x - 1);
+}
+
+int get(int x) {
+  if (x == 0) return 42;
+  return get(x - 1);
+}
+
+int implements(int x) {
+  if (x == 0) return 42;
+  return implements(x - 1);
+}
+
+int import(int x) {
+  if (x == 0) return 42;
+  return import(x - 1);
+}
+
+int interface(int x) {
+  if (x == 0) return 42;
+  return interface(x - 1);
+}
+
+int library(int x) {
+  if (x == 0) return 42;
+  return library(x - 1);
+}
+
+int operator(int x) {
+  if (x == 0) return 42;
+  return operator(x - 1);
+}
+
+int mixin(int x) {
+  if (x == 0) return 42;
+  return mixin(x - 1);
+}
+
+int part(int x) {
+  if (x == 0) return 42;
+  return part(x - 1);
+}
+
+int set(int x) {
+  if (x == 0) return 42;
+  return set(x - 1);
+}
+
+int static(int x) {
+  if (x == 0) return 42;
+  return static(x - 1);
+}
+
+int typedef(int x) {
+  if (x == 0) return 42;
+  return typedef(x - 1);
+}
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.expect
new file mode 100644
index 0000000..e32cd8e
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.expect
@@ -0,0 +1,1082 @@
+beginCompilationUnit(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(abstract)
+      handleType(int, null)
+      handleIdentifier(abstract, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(abstract, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(abstract, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(as)
+      handleType(int, null)
+      handleIdentifier(as, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(as, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(as, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(covariant)
+      handleType(int, null)
+      handleIdentifier(covariant, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(covariant, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(covariant, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(deferred)
+      handleType(int, null)
+      handleIdentifier(deferred, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(deferred, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(deferred, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(dynamic)
+      handleType(int, null)
+      handleIdentifier(dynamic, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(dynamic, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(dynamic, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(export)
+      handleType(int, null)
+      handleIdentifier(export, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(export, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(export, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(external)
+      handleType(int, null)
+      handleIdentifier(external, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(external, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(external, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(factory)
+      handleType(int, null)
+      handleIdentifier(factory, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(factory, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(factory, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(Function)
+      handleType(int, null)
+      handleIdentifier(Function, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(Function, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(Function, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(get)
+      handleType(int, null)
+      handleIdentifier(get, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(get, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(get, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(implements)
+      handleType(int, null)
+      handleIdentifier(implements, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(implements, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(implements, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(import)
+      handleType(int, null)
+      handleIdentifier(import, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(import, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(import, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(interface)
+      handleType(int, null)
+      handleIdentifier(interface, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(interface, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(interface, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(library)
+      handleType(int, null)
+      handleIdentifier(library, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(library, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(library, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(operator)
+      handleType(int, null)
+      handleIdentifier(operator, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(operator, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(operator, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(mixin)
+      handleType(int, null)
+      handleIdentifier(mixin, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(mixin, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(mixin, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(part)
+      handleType(int, null)
+      handleIdentifier(part, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(part, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(part, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(set)
+      handleType(int, null)
+      handleIdentifier(set, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(set, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(set, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(static)
+      handleType(int, null)
+      handleIdentifier(static, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(static, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(static, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(typedef)
+      handleType(int, null)
+      handleIdentifier(typedef, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(typedef, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(typedef, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration()
+endCompilationUnit(20, )
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.intertwined.expect
new file mode 100644
index 0000000..3c006e5
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.intertwined.expect
@@ -0,0 +1,2606 @@
+parseUnit(int)
+  skipErrorTokens(int)
+  listener: beginCompilationUnit(int)
+  syntheticPreviousToken(int)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl()
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(, null, , Instance of 'SimpleType', null, abstract)
+        listener: beginTopLevelMethod(, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(abstract)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(abstract, topLevelFunctionDeclaration)
+        parseMethodTypeVar(abstract)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(abstract, abstract, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(abstract, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(abstract, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(abstract)
+                              parseArguments(abstract)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(abstract, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, as)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(as)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(as, topLevelFunctionDeclaration)
+        parseMethodTypeVar(as)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(as, as, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(as, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(as, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(as)
+                              parseArguments(as)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(as, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, covariant)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(covariant)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(covariant, topLevelFunctionDeclaration)
+        parseMethodTypeVar(covariant)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(covariant, covariant, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(covariant, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(covariant, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(covariant)
+                              parseArguments(covariant)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(covariant, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, deferred)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(deferred)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(deferred, topLevelFunctionDeclaration)
+        parseMethodTypeVar(deferred)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(deferred, deferred, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(deferred, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(deferred, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(deferred)
+                              parseArguments(deferred)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(deferred, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, dynamic)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(dynamic)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(dynamic, topLevelFunctionDeclaration)
+        parseMethodTypeVar(dynamic)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(dynamic, dynamic, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(dynamic, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(dynamic, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(dynamic)
+                              parseArguments(dynamic)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(dynamic, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, export)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(export)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(export, topLevelFunctionDeclaration)
+        parseMethodTypeVar(export)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(export, export, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(export, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(export, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(export)
+                              parseArguments(export)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(export, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, external)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(external)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(external, topLevelFunctionDeclaration)
+        parseMethodTypeVar(external)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(external, external, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(external, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(external, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(external)
+                              parseArguments(external)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(external, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, factory)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(factory)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(factory, topLevelFunctionDeclaration)
+        parseMethodTypeVar(factory)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(factory, factory, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(factory, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(factory, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(factory)
+                              parseArguments(factory)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(factory, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, Function)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(Function)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(Function, topLevelFunctionDeclaration)
+        parseMethodTypeVar(Function)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(Function, Function, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(Function, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(Function, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(Function)
+                              parseArguments(Function)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(Function, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, get)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(get)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(get, topLevelFunctionDeclaration)
+        parseMethodTypeVar(get)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(get, get, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(get, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(get, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(get)
+                              parseArguments(get)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(get, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, implements)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(implements)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(implements, topLevelFunctionDeclaration)
+        parseMethodTypeVar(implements)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(implements, implements, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(implements, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(implements, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(implements)
+                              parseArguments(implements)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(implements, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, import)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(import)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(import, topLevelFunctionDeclaration)
+        parseMethodTypeVar(import)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(import, import, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(import, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(import, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(import)
+                              parseArguments(import)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(import, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, interface)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(interface)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(interface, topLevelFunctionDeclaration)
+        parseMethodTypeVar(interface)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(interface, interface, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(interface, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(interface, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(interface)
+                              parseArguments(interface)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(interface, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, library)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(library)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(library, topLevelFunctionDeclaration)
+        parseMethodTypeVar(library)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(library, library, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(library, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(library, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(library)
+                              parseArguments(library)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(library, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, operator)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(operator)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(operator, topLevelFunctionDeclaration)
+        parseMethodTypeVar(operator)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(operator, operator, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(operator, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(operator, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(operator)
+                              parseArguments(operator)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(operator, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, mixin)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(mixin)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(mixin, topLevelFunctionDeclaration)
+        parseMethodTypeVar(mixin)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(mixin, mixin, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(mixin, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(mixin, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(mixin)
+                              parseArguments(mixin)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(mixin, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, part)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(part)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(part, topLevelFunctionDeclaration)
+        parseMethodTypeVar(part)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(part, part, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(part, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(part, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(part)
+                              parseArguments(part)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(part, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, set)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(set)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(set, topLevelFunctionDeclaration)
+        parseMethodTypeVar(set)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(set, set, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(set, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(set, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(set)
+                              parseArguments(set)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(set, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, static)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(static)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(static, topLevelFunctionDeclaration)
+        parseMethodTypeVar(static)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(static, static, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(static, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(static, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(static)
+                              parseArguments(static)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(static, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration(int)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(int)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(int)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, typedef)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(typedef)
+        listener: handleType(int, null)
+        ensureIdentifier(int, topLevelFunctionDeclaration)
+          listener: handleIdentifier(typedef, topLevelFunctionDeclaration)
+        parseMethodTypeVar(typedef)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(typedef, typedef, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(typedef, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, if)
+          parseStatement({)
+            parseStatementX({)
+              parseIfStatement({)
+                listener: beginIfStatement(if)
+                ensureParenthesizedCondition(if)
+                  parseExpressionInParenthesisRest(()
+                    parseExpression(()
+                      parsePrecedenceExpression((, 1, true)
+                        parseUnaryExpression((, true)
+                          parsePrimary((, expression)
+                            parseSendOrFunctionLiteral((, expression)
+                              parseSend((, expression)
+                                ensureIdentifier((, expression)
+                                  listener: handleIdentifier(x, expression)
+                                listener: handleNoTypeArguments(==)
+                                parseArgumentsOpt(x)
+                                  listener: handleNoArguments(==)
+                                listener: handleSend(x, ==)
+                        listener: beginBinaryExpression(==)
+                        parsePrecedenceExpression(==, 8, true)
+                          parseUnaryExpression(==, true)
+                            parsePrimary(==, expression)
+                              parseLiteralInt(==)
+                                listener: handleLiteralInt(0)
+                        listener: endBinaryExpression(==)
+                    ensureCloseParen(0, ()
+                  listener: handleParenthesizedCondition(()
+                listener: beginThenStatement(return)
+                parseStatement())
+                  parseStatementX())
+                    parseReturnStatement())
+                      listener: beginReturnStatement(return)
+                      parseExpression(return)
+                        parsePrecedenceExpression(return, 1, true)
+                          parseUnaryExpression(return, true)
+                            parsePrimary(return, expression)
+                              parseLiteralInt(return)
+                                listener: handleLiteralInt(42)
+                      ensureSemicolon(42)
+                      listener: endReturnStatement(true, return, ;)
+                      inGenerator()
+                listener: endThenStatement(;)
+                listener: endIfStatement(if, null)
+          notEofOrValue(}, return)
+          parseStatement(;)
+            parseStatementX(;)
+              parseReturnStatement(;)
+                listener: beginReturnStatement(return)
+                parseExpression(return)
+                  parsePrecedenceExpression(return, 1, true)
+                    parseUnaryExpression(return, true)
+                      parsePrimary(return, expression)
+                        inPlainSync()
+                        parseSendOrFunctionLiteral(return, expression)
+                          looksLikeFunctionBody(;)
+                          parseSend(return, expression)
+                            ensureIdentifier(return, expression)
+                              inPlainSync()
+                              listener: handleIdentifier(typedef, expression)
+                            listener: handleNoTypeArguments(()
+                            parseArgumentsOpt(typedef)
+                              parseArguments(typedef)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                            listener: handleSend(typedef, ;)
+                ensureSemicolon())
+                listener: endReturnStatement(true, return, ;)
+                inGenerator()
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(int)
+  listener: endCompilationUnit(20, )
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.parser.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.parser.expect
new file mode 100644
index 0000000..cef190a
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.parser.expect
@@ -0,0 +1,201 @@
+int abstract(int x) {
+if (x == 0) return 42;
+return abstract(x - 1);
+}
+
+int as(int x) {
+if (x == 0) return 42;
+return as(x - 1);
+}
+
+int covariant(int x) {
+if (x == 0) return 42;
+return covariant(x - 1);
+}
+
+int deferred(int x) {
+if (x == 0) return 42;
+return deferred(x - 1);
+}
+
+int dynamic(int x) {
+if (x == 0) return 42;
+return dynamic(x - 1);
+}
+
+int export(int x) {
+if (x == 0) return 42;
+return export(x - 1);
+}
+
+int external(int x) {
+if (x == 0) return 42;
+return external(x - 1);
+}
+
+int factory(int x) {
+if (x == 0) return 42;
+return factory(x - 1);
+}
+
+int Function(int x) {
+if (x == 0) return 42;
+return Function(x - 1);
+}
+
+int get(int x) {
+if (x == 0) return 42;
+return get(x - 1);
+}
+
+int implements(int x) {
+if (x == 0) return 42;
+return implements(x - 1);
+}
+
+int import(int x) {
+if (x == 0) return 42;
+return import(x - 1);
+}
+
+int interface(int x) {
+if (x == 0) return 42;
+return interface(x - 1);
+}
+
+int library(int x) {
+if (x == 0) return 42;
+return library(x - 1);
+}
+
+int operator(int x) {
+if (x == 0) return 42;
+return operator(x - 1);
+}
+
+int mixin(int x) {
+if (x == 0) return 42;
+return mixin(x - 1);
+}
+
+int part(int x) {
+if (x == 0) return 42;
+return part(x - 1);
+}
+
+int set(int x) {
+if (x == 0) return 42;
+return set(x - 1);
+}
+
+int static(int x) {
+if (x == 0) return 42;
+return static(x - 1);
+}
+
+int typedef(int x) {
+if (x == 0) return 42;
+return typedef(x - 1);
+}
+
+
+int[StringToken] abstract[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] abstract[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] as[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] as[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] covariant[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] covariant[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] deferred[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] deferred[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] dynamic[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] dynamic[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] export[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] export[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] external[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] external[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] factory[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] factory[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] Function[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] Function[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] get[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] implements[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] implements[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] import[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] import[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] interface[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] interface[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] library[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] library[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] operator[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] operator[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] mixin[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] mixin[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] part[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] part[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] set[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] set[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] static[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] static[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] typedef[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] typedef[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.scanner.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.scanner.expect
new file mode 100644
index 0000000..cef190a
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.scanner.expect
@@ -0,0 +1,201 @@
+int abstract(int x) {
+if (x == 0) return 42;
+return abstract(x - 1);
+}
+
+int as(int x) {
+if (x == 0) return 42;
+return as(x - 1);
+}
+
+int covariant(int x) {
+if (x == 0) return 42;
+return covariant(x - 1);
+}
+
+int deferred(int x) {
+if (x == 0) return 42;
+return deferred(x - 1);
+}
+
+int dynamic(int x) {
+if (x == 0) return 42;
+return dynamic(x - 1);
+}
+
+int export(int x) {
+if (x == 0) return 42;
+return export(x - 1);
+}
+
+int external(int x) {
+if (x == 0) return 42;
+return external(x - 1);
+}
+
+int factory(int x) {
+if (x == 0) return 42;
+return factory(x - 1);
+}
+
+int Function(int x) {
+if (x == 0) return 42;
+return Function(x - 1);
+}
+
+int get(int x) {
+if (x == 0) return 42;
+return get(x - 1);
+}
+
+int implements(int x) {
+if (x == 0) return 42;
+return implements(x - 1);
+}
+
+int import(int x) {
+if (x == 0) return 42;
+return import(x - 1);
+}
+
+int interface(int x) {
+if (x == 0) return 42;
+return interface(x - 1);
+}
+
+int library(int x) {
+if (x == 0) return 42;
+return library(x - 1);
+}
+
+int operator(int x) {
+if (x == 0) return 42;
+return operator(x - 1);
+}
+
+int mixin(int x) {
+if (x == 0) return 42;
+return mixin(x - 1);
+}
+
+int part(int x) {
+if (x == 0) return 42;
+return part(x - 1);
+}
+
+int set(int x) {
+if (x == 0) return 42;
+return set(x - 1);
+}
+
+int static(int x) {
+if (x == 0) return 42;
+return static(x - 1);
+}
+
+int typedef(int x) {
+if (x == 0) return 42;
+return typedef(x - 1);
+}
+
+
+int[StringToken] abstract[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] abstract[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] as[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] as[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] covariant[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] covariant[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] deferred[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] deferred[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] dynamic[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] dynamic[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] export[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] export[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] external[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] external[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] factory[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] factory[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] Function[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] Function[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] get[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] implements[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] implements[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] import[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] import[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] interface[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] interface[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] library[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] library[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] operator[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] operator[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] mixin[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] mixin[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] part[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] part[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] set[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] set[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] static[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] static[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+int[StringToken] typedef[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
+return[KeywordToken] typedef[KeywordToken]([BeginToken]x[StringToken] -[SimpleToken] 1[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/kernel/lib/text/text_serialization_verifier.dart b/pkg/kernel/lib/text/text_serialization_verifier.dart
index 44e9240..9b83f3c 100644
--- a/pkg/kernel/lib/text/text_serialization_verifier.dart
+++ b/pkg/kernel/lib/text/text_serialization_verifier.dart
@@ -188,7 +188,8 @@
       node is VoidType ||
       node is BottomType ||
       node is FunctionType ||
-      node is TypeParameterType;
+      node is TypeParameterType ||
+      node is InterfaceType;
 
   static bool isExpressionSupported(Expression node) =>
       node is StringLiteral ||
diff --git a/pkg/kernel/lib/text/text_serializer.dart b/pkg/kernel/lib/text/text_serializer.dart
index 1b8ddd4..70fa064 100644
--- a/pkg/kernel/lib/text/text_serializer.dart
+++ b/pkg/kernel/lib/text/text_serializer.dart
@@ -879,6 +879,7 @@
   String visitBottomType(BottomType _) => "bottom";
   String visitFunctionType(FunctionType _) => "->";
   String visitTypeParameterType(TypeParameterType _) => "par";
+  String visitInterfaceType(InterfaceType _) => "interface";
 }
 
 const TextSerializer<InvalidType> invalidTypeSerializer =
@@ -970,6 +971,21 @@
   return new TypeParameterType(tuple.first, Nullability.legacy, tuple.second);
 }
 
+TextSerializer<InterfaceType> interfaceTypeSerializer = new Wrapped(
+    unwrapInterfaceType,
+    wrapInterfaceType,
+    Tuple2Serializer(const CanonicalNameSerializer(),
+        new ListSerializer(dartTypeSerializer)));
+
+Tuple2<CanonicalName, List<DartType>> unwrapInterfaceType(InterfaceType node) {
+  return new Tuple2(node.className.canonicalName, node.typeArguments);
+}
+
+InterfaceType wrapInterfaceType(Tuple2<CanonicalName, List<DartType>> tuple) {
+  return new InterfaceType.byReference(
+      tuple.first.reference, Nullability.legacy, tuple.second);
+}
+
 Case<DartType> dartTypeSerializer =
     new Case.uninitialized(const DartTypeTagger());
 
@@ -1329,6 +1345,7 @@
     "bottom": bottomTypeSerializer,
     "->": functionTypeSerializer,
     "par": typeParameterTypeSerializer,
+    "interface": interfaceTypeSerializer,
   });
   statementSerializer.registerTags({
     "expr": expressionStatementSerializer,
diff --git a/pkg/kernel/test/text_serializer_from_kernel_nodes_test.dart b/pkg/kernel/test/text_serializer_from_kernel_nodes_test.dart
index eb2f032..8035631 100644
--- a/pkg/kernel/test/text_serializer_from_kernel_nodes_test.dart
+++ b/pkg/kernel/test/text_serializer_from_kernel_nodes_test.dart
@@ -458,6 +458,32 @@
               new DeserializationEnvironment(null), new CanonicalName.root()),
           serializer: librarySerializer);
     }(),
+    () {
+      Class a = Class(name: "A");
+      Procedure foo = Procedure(
+          Name("foo"),
+          ProcedureKind.Method,
+          FunctionNode(ReturnStatement(NullLiteral()),
+              returnType: InterfaceType(a, Nullability.legacy)),
+          isStatic: true);
+      Library library = Library(Uri(scheme: "package", path: "foo/bar.dart"),
+          classes: [a], procedures: [foo]);
+      Component component = Component(libraries: [library]);
+      component.computeCanonicalNames();
+      return new TestCase<Library>(
+          name: 'class A{} A foo() => null;',
+          node: library,
+          expectation: ''
+              '(legacy "package:foo/bar.dart"'
+              ' ((static-method (public "foo")'
+              ' (sync () () () () () () (interface "package:foo/bar.dart::A" ())'
+              ' (ret (null))))))',
+          serializationState:
+              new SerializationState(new SerializationEnvironment(null)),
+          deserializationState: new DeserializationState(
+              new DeserializationEnvironment(null), component.root),
+          serializer: librarySerializer);
+    }(),
   ];
   for (TestCase testCase in tests) {
     String roundTripInput =
diff --git a/pkg/nnbd_migration/lib/nnbd_migration.dart b/pkg/nnbd_migration/lib/nnbd_migration.dart
index d7d29f4..7388f0c 100644
--- a/pkg/nnbd_migration/lib/nnbd_migration.dart
+++ b/pkg/nnbd_migration/lib/nnbd_migration.dart
@@ -45,6 +45,21 @@
     kind: NullabilityFixKind.checkExpressionDueToHint,
   );
 
+  /// A compound assignment's combiner operator returns a type that isn't
+  /// assignable to the LHS of the assignment.
+  static const compoundAssignmentHasBadCombinedType =
+      const NullabilityFixDescription._(
+    appliedMessage: 'Compound assignment has bad combined type',
+    kind: NullabilityFixKind.compoundAssignmentHasBadCombinedType,
+  );
+
+  /// A compound assignment's LHS has a nullable type.
+  static const compoundAssignmentHasNullableSource =
+      const NullabilityFixDescription._(
+    appliedMessage: 'Compound assignment has nullable source',
+    kind: NullabilityFixKind.compoundAssignmentHasNullableSource,
+  );
+
   /// Informative message: a condition of an if-test or conditional expression
   /// will always evaluate to `false` in strong checking mode.
   static const conditionFalseInStrongMode = const NullabilityFixDescription._(
@@ -99,6 +114,14 @@
               'Null-aware access will be unnecessary in strong checking mode',
           kind: NullabilityFixKind.nullAwarenessUnnecessaryInStrongMode);
 
+  /// Informative message: a null-aware assignment won't be necessary in strong
+  /// checking mode.
+  static const nullAwareAssignmentUnnecessaryInStrongMode =
+      const NullabilityFixDescription._(
+          appliedMessage:
+              'Null-aware assignment will be unnecessary in strong checking mode',
+          kind: NullabilityFixKind.nullAwareAssignmentUnnecessaryInStrongMode);
+
   static const otherCastExpression = const NullabilityFixDescription._(
     appliedMessage: 'Added a cast to an expression (non-downcast)',
     kind: NullabilityFixKind.otherCastExpression,
@@ -217,12 +240,15 @@
   addType,
   checkExpression,
   checkExpressionDueToHint,
+  compoundAssignmentHasNullableSource,
+  compoundAssignmentHasBadCombinedType,
   conditionFalseInStrongMode,
   conditionTrueInStrongMode,
   downcastExpression,
   makeTypeNullable,
   makeTypeNullableDueToHint,
   nullAwarenessUnnecessaryInStrongMode,
+  nullAwareAssignmentUnnecessaryInStrongMode,
   otherCastExpression,
   removeAs,
   removeDeadCode,
diff --git a/pkg/nnbd_migration/lib/src/edit_plan.dart b/pkg/nnbd_migration/lib/src/edit_plan.dart
index 6e4f5aa..d2004de 100644
--- a/pkg/nnbd_migration/lib/src/edit_plan.dart
+++ b/pkg/nnbd_migration/lib/src/edit_plan.dart
@@ -392,6 +392,20 @@
     return (plan as NodeProducingEditPlan)._getChanges(false);
   }
 
+  /// Creates a new edit plan that adds an informative message to the given
+  /// [token].
+  ///
+  /// The created edit plan should be inserted into the list of inner plans for
+  /// a pass-through plan targeted at the [containingNode].  See [passThrough].
+  EditPlan informativeMessageForToken(AstNode containingNode, Token token,
+      {AtomicEditInfo info}) {
+    return _TokenChangePlan(containingNode, {
+      token.offset: [
+        AtomicEdit.delete(token.lexeme.length, info: info, isInformative: true)
+      ]
+    });
+  }
+
   /// Creates a new edit plan that inserts the text indicated by [edits] at the
   /// given [offset].
   ///
diff --git a/pkg/nnbd_migration/lib/src/fix_aggregator.dart b/pkg/nnbd_migration/lib/src/fix_aggregator.dart
index 9200694..e1548ab 100644
--- a/pkg/nnbd_migration/lib/src/fix_aggregator.dart
+++ b/pkg/nnbd_migration/lib/src/fix_aggregator.dart
@@ -302,6 +302,70 @@
 }
 
 /// Implementation of [NodeChange] specialized for operating on
+/// [AssignmentExpression] nodes.
+class NodeChangeForAssignment
+    extends NodeChangeForExpression<AssignmentExpression> {
+  /// Indicates whether the user should be warned that the assignment is a
+  /// compound assignment with a bad combined type (the return type of the
+  /// combiner isn't assignable to the the write type of the LHS).
+  bool isCompoundAssignmentWithBadCombinedType = false;
+
+  /// Indicates whether the user should be warned that the assignment is a
+  /// compound assignment with a nullable source type.
+  bool isCompoundAssignmentWithNullableSource = false;
+
+  /// Indicates whether the user should be warned that the assignment is a
+  /// null-aware assignment that will have no effect when strong checking is
+  /// enabled.
+  bool isWeakNullAware = false;
+
+  @override
+  Iterable<String> get _toStringParts => [
+        ...super._toStringParts,
+        if (isCompoundAssignmentWithBadCombinedType)
+          'isCompoundAssignmentWithBadCombinedType',
+        if (isCompoundAssignmentWithNullableSource)
+          'isCompoundAssignmentWithNullableSource',
+        if (isWeakNullAware) 'isWeakNullAware'
+      ];
+
+  @override
+  NodeProducingEditPlan _apply(
+      AssignmentExpression node, FixAggregator aggregator) {
+    var lhsPlan = aggregator.planForNode(node.leftHandSide);
+    EditPlan operatorPlan;
+    if (isCompoundAssignmentWithNullableSource) {
+      operatorPlan = aggregator.planner.informativeMessageForToken(
+          node, node.operator,
+          info: AtomicEditInfo(
+              NullabilityFixDescription.compoundAssignmentHasNullableSource,
+              const {}));
+    } else if (isCompoundAssignmentWithBadCombinedType) {
+      operatorPlan = aggregator.planner.informativeMessageForToken(
+          node, node.operator,
+          info: AtomicEditInfo(
+              NullabilityFixDescription.compoundAssignmentHasBadCombinedType,
+              const {}));
+    } else if (isWeakNullAware) {
+      operatorPlan = aggregator.planner.informativeMessageForToken(
+          node, node.operator,
+          info: AtomicEditInfo(
+              NullabilityFixDescription
+                  .nullAwareAssignmentUnnecessaryInStrongMode,
+              const {}));
+    }
+    var rhsPlan = aggregator.planForNode(node.rightHandSide);
+    var innerPlans = <EditPlan>[
+      lhsPlan,
+      if (operatorPlan != null) operatorPlan,
+      rhsPlan
+    ];
+    return _applyExpression(aggregator,
+        aggregator.planner.passThrough(node, innerPlans: innerPlans));
+  }
+}
+
+/// Implementation of [NodeChange] specialized for operating on
 /// [CompilationUnit] nodes.
 class NodeChangeForCompilationUnit extends NodeChange<CompilationUnit> {
   bool removeLanguageVersionComment = false;
@@ -833,6 +897,10 @@
       NodeChangeForAsExpression();
 
   @override
+  NodeChange visitAssignmentExpression(AssignmentExpression node) =>
+      NodeChangeForAssignment();
+
+  @override
   NodeChange visitCompilationUnit(CompilationUnit node) =>
       NodeChangeForCompilationUnit();
 
diff --git a/pkg/nnbd_migration/lib/src/fix_builder.dart b/pkg/nnbd_migration/lib/src/fix_builder.dart
index 60abe3f..bbec67f 100644
--- a/pkg/nnbd_migration/lib/src/fix_builder.dart
+++ b/pkg/nnbd_migration/lib/src/fix_builder.dart
@@ -25,6 +25,7 @@
 import 'package:analyzer/src/generated/resolver.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/generated/utilities_dart.dart';
+import 'package:analyzer/src/task/strong/checker.dart';
 import 'package:nnbd_migration/fix_reason_target.dart';
 import 'package:nnbd_migration/instrumentation.dart';
 import 'package:nnbd_migration/nnbd_migration.dart';
@@ -288,6 +289,9 @@
 
   final Expando<bool> _shouldStayNullAware = Expando();
 
+  final Map<AssignmentExpression, _AssignmentExpressionHandler>
+      _assignmentExpressionHandlers = {};
+
   FlowAnalysis<AstNode, Statement, Expression, PromotableElement, DartType>
       _flowAnalysis;
 
@@ -423,37 +427,14 @@
   @override
   DartType modifyExpressionType(Expression node, DartType type) =>
       _wrapExceptions(node, () => type, () {
-        var hint =
-            _fixBuilder._variables.getNullCheckHint(_fixBuilder.source, node);
-        if (hint != null) {
-          type = _addNullCheck(node, type,
-              info: AtomicEditInfo(
-                  NullabilityFixDescription.checkExpressionDueToHint,
-                  {
-                    FixReasonTarget.root:
-                        FixReason_NullCheckHint(CodeReference.fromAstNode(node))
-                  },
-                  hintComment: hint),
-              hint: hint);
+        var parent = node.parent;
+        if (parent is AssignmentExpression) {
+          return (_assignmentExpressionHandlers[parent] ??=
+                  _AssignmentExpressionHandler(parent))
+              .modifySubexpressionType(this, node, type);
+        } else {
+          return _modifyRValueType(node, type);
         }
-        if (type.isDynamic) return type;
-        var ancestor = _findNullabilityContextAncestor(node);
-        DartType context = _getNullabilityContext(ancestor);
-        if (!_fixBuilder._typeSystem.isSubtypeOf(type, context)) {
-          // Either a cast or a null check is needed.  We prefer to do a null
-          // check if we can.
-          var nonNullType = _fixBuilder._typeSystem.promoteToNonNull(type);
-          if (_fixBuilder._typeSystem.isSubtypeOf(nonNullType, context)) {
-            return _addNullCheck(node, type);
-          } else {
-            return _addCast(node, type, context);
-          }
-        }
-        if (!_fixBuilder._typeSystem.isNullable(type)) return type;
-        if (_needsNullCheckDueToStructure(ancestor)) {
-          return _addNullCheck(node, type);
-        }
-        return type;
       });
 
   @override
@@ -519,33 +500,40 @@
     }
   }
 
-  DartType _getNullabilityContext(Expression node) {
-    var parent = node.parent;
-    if (parent is AssignmentExpression) {
-      var lhs = parent.leftHandSide;
-      if (lhs is SimpleIdentifier) {
-        var lhsElement = lhs.staticElement;
-        if (lhsElement is PromotableElement) {
-          var operatorType = parent.operator.type;
-          switch (operatorType) {
-            case TokenType.EQ:
-            case TokenType.QUESTION_QUESTION_EQ:
-              // When visiting an assignment to a local variable, if the
-              // variable type is promoted, the resolver uses the promoted type
-              // of the variable as the inference context, but it's ok to assign
-              // a different type to the variable (un-doing the promotion).  So
-              // for migration purposes, we need to consider the context type to
-              // be the unpromoted type.  See
-              // https://github.com/dart-lang/sdk/issues/41411.
-              return lhsElement.type;
-            default:
-              break;
-          }
-        }
+  DartType _modifyRValueType(Expression node, DartType type,
+      {DartType context}) {
+    var hint =
+        _fixBuilder._variables.getNullCheckHint(_fixBuilder.source, node);
+    if (hint != null) {
+      type = _addNullCheck(node, type,
+          info: AtomicEditInfo(
+              NullabilityFixDescription.checkExpressionDueToHint,
+              {
+                FixReasonTarget.root:
+                    FixReason_NullCheckHint(CodeReference.fromAstNode(node))
+              },
+              hintComment: hint),
+          hint: hint);
+    }
+    if (type.isDynamic) return type;
+    var ancestor = _findNullabilityContextAncestor(node);
+    context ??=
+        InferenceContext.getContext(ancestor) ?? DynamicTypeImpl.instance;
+    if (!_fixBuilder._typeSystem.isSubtypeOf(type, context)) {
+      // Either a cast or a null check is needed.  We prefer to do a null
+      // check if we can.
+      var nonNullType = _fixBuilder._typeSystem.promoteToNonNull(type);
+      if (_fixBuilder._typeSystem.isSubtypeOf(nonNullType, context)) {
+        return _addNullCheck(node, type);
+      } else {
+        return _addCast(node, type, context);
       }
     }
-    var context = InferenceContext.getContext(node) ?? DynamicTypeImpl.instance;
-    return context;
+    if (!_fixBuilder._typeSystem.isNullable(type)) return type;
+    if (_needsNullCheckDueToStructure(ancestor)) {
+      return _addNullCheck(node, type);
+    }
+    return type;
   }
 
   bool _needsNullCheckDueToStructure(Expression node) {
@@ -639,6 +627,110 @@
 /// Common supertype for problems reported by [FixBuilder._addProblem].
 abstract class Problem {}
 
+/// Data structure keeping track of intermediate results when the fix builder
+/// is handling an assignment expression.
+class _AssignmentExpressionHandler {
+  /// The assignment expression in question.
+  final AssignmentExpression node;
+
+  /// For compound and null-aware assignments, the type read from the LHS.
+  /*late final*/ DartType readType;
+
+  /// The type that may be written to the LHS.
+  /*late final*/ DartType writeType;
+
+  /// The type that should be used as a context type when inferring the RHS.
+  DartType rhsContextType;
+
+  _AssignmentExpressionHandler(this.node);
+
+  /// Called after visiting the RHS of the assignment, to verify that for
+  /// compound assignments, the return value of the assignment is assignable to
+  /// [writeType].
+  void handleAssignmentRhs(
+      MigrationResolutionHooksImpl hooks, DartType rhsType) {
+    MethodElement combiner = node.staticElement;
+    if (combiner != null) {
+      var fixBuilder = hooks._fixBuilder;
+      var combinerReturnType =
+          fixBuilder._typeSystem.refineBinaryExpressionType(
+        readType,
+        node.operator.type,
+        rhsType,
+        combiner.returnType,
+      );
+      if (!fixBuilder._typeSystem.isSubtypeOf(combinerReturnType, writeType)) {
+        (fixBuilder._getChange(node) as NodeChangeForAssignment)
+            .isCompoundAssignmentWithBadCombinedType = true;
+      }
+    }
+  }
+
+  /// Called after visiting the LHS of the assignment.  Records the [readType],
+  /// [writeType], and [rhsContextType].  Also verifies that for compound
+  /// assignments, the [readType] is non-nullable, and that for null-aware
+  /// assignments, the [readType] is nullable.
+  void handleLValueType(MigrationResolutionHooksImpl hooks,
+      TokenType operatorType, DartType resolvedType) {
+    assert(resolvedType.nullabilitySuffix != NullabilitySuffix.star);
+    // Provisionally store the resolved type as the type of the lhs, so that
+    // getReadType can fall back on it if necessary.
+    var lhs = node.leftHandSide;
+    lhs.staticType = resolvedType;
+    // The type passed in by the resolver for the LHS of an assignment is the
+    // "write type".
+    var writeType = resolvedType;
+    if (lhs is SimpleIdentifier) {
+      var element = lhs.staticElement;
+      if (element is PromotableElement) {
+        // However, if the LHS is a reference to a local variable that has
+        // been promoted, the resolver passes in the promoted type.  We
+        // want to use the variable element's type, so that we consider it
+        // ok to assign a value to the variable that un-does the
+        // promotion.  See https://github.com/dart-lang/sdk/issues/41411.
+        writeType = element.type;
+      }
+    }
+    assert(writeType.nullabilitySuffix != NullabilitySuffix.star);
+    this.writeType = writeType;
+    var fixBuilder = hooks._fixBuilder;
+    if (operatorType == TokenType.EQ) {
+      rhsContextType = writeType;
+    } else {
+      readType = getReadType(lhs);
+      assert(readType.nullabilitySuffix != NullabilitySuffix.star);
+      if (operatorType == TokenType.QUESTION_QUESTION_EQ) {
+        rhsContextType = writeType;
+        if (fixBuilder._typeSystem.isNonNullable(readType)) {
+          (fixBuilder._getChange(node) as NodeChangeForAssignment)
+              .isWeakNullAware = true;
+        }
+      } else {
+        if (!readType.isDynamic &&
+            fixBuilder._typeSystem.isPotentiallyNullable(readType)) {
+          (fixBuilder._getChange(node) as NodeChangeForAssignment)
+              .isCompoundAssignmentWithNullableSource = true;
+        }
+      }
+    }
+  }
+
+  /// Called after visiting the LHS or the RHS of the assignment.
+  DartType modifySubexpressionType(MigrationResolutionHooksImpl hooks,
+      Expression subexpression, DartType type) {
+    if (identical(subexpression, node.leftHandSide)) {
+      handleLValueType(hooks, node.operator.type, type);
+      return type;
+    } else {
+      assert(identical(subexpression, node.rightHandSide));
+      type =
+          hooks._modifyRValueType(subexpression, type, context: rhsContextType);
+      handleAssignmentRhs(hooks, type);
+      return type;
+    }
+  }
+}
+
 /// Visitor that computes additional migrations on behalf of [FixBuilder] that
 /// should be run after resolution
 class _FixBuilderPostVisitor extends GeneralizingAstVisitor<void>
diff --git a/pkg/nnbd_migration/lib/src/front_end/info_builder.dart b/pkg/nnbd_migration/lib/src/front_end/info_builder.dart
index 86c298cc..e063963 100644
--- a/pkg/nnbd_migration/lib/src/front_end/info_builder.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/info_builder.dart
@@ -186,13 +186,18 @@
         // We could add an edit to add a `/*?*/` hint, but the offset is a
         // little tricky.
         break;
-      case NullabilityFixKind.nullAwarenessUnnecessaryInStrongMode:
-      case NullabilityFixKind.conditionTrueInStrongMode:
       case NullabilityFixKind.conditionFalseInStrongMode:
+      case NullabilityFixKind.conditionTrueInStrongMode:
+      case NullabilityFixKind.nullAwarenessUnnecessaryInStrongMode:
+      case NullabilityFixKind.nullAwareAssignmentUnnecessaryInStrongMode:
         // We don't offer any edits around weak-only code.
         // TODO(paulberry): offer edits to delete the code that would be dead in
         // strong mode (https://github.com/dart-lang/sdk/issues/41554).
         break;
+      case NullabilityFixKind.compoundAssignmentHasBadCombinedType:
+      case NullabilityFixKind.compoundAssignmentHasNullableSource:
+        // We don't offer any edits around bad compound assignments.
+        break;
     }
     return edits;
   }
diff --git a/pkg/nnbd_migration/lib/src/front_end/path_mapper.dart b/pkg/nnbd_migration/lib/src/front_end/path_mapper.dart
index 9205c30..e8ac01c 100644
--- a/pkg/nnbd_migration/lib/src/front_end/path_mapper.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/path_mapper.dart
@@ -16,9 +16,17 @@
   /// Initialize a newly created path mapper.
   PathMapper(this.provider);
 
+  /// Gets the symbol used as a path separator on the local filesystem.
+  String get separator => provider.pathContext.separator;
+
   /// Return the path of the HTML file used to view the content of the analyzed
   /// file with the given [path].
   String map(String path) {
-    return Uri.file(path).path;
+    return provider.pathContext.toUri(path).path;
+  }
+
+  /// Returns the local filesystem path corresponding to the given [uri].
+  String reverseMap(Uri uri) {
+    return provider.pathContext.fromUri(uri);
   }
 }
diff --git a/pkg/nnbd_migration/lib/src/front_end/unit_renderer.dart b/pkg/nnbd_migration/lib/src/front_end/unit_renderer.dart
index 29aded6..d6653ab 100644
--- a/pkg/nnbd_migration/lib/src/front_end/unit_renderer.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/unit_renderer.dart
@@ -23,9 +23,12 @@
   /// "proposed edits" area, in the order in which they should be displayed.
   @visibleForTesting
   static const List<NullabilityFixKind> kindPriorityOrder = [
+    NullabilityFixKind.compoundAssignmentHasBadCombinedType,
+    NullabilityFixKind.compoundAssignmentHasNullableSource,
     NullabilityFixKind.removeDeadCode,
     NullabilityFixKind.conditionTrueInStrongMode,
     NullabilityFixKind.conditionFalseInStrongMode,
+    NullabilityFixKind.nullAwareAssignmentUnnecessaryInStrongMode,
     NullabilityFixKind.nullAwarenessUnnecessaryInStrongMode,
     NullabilityFixKind.otherCastExpression,
     NullabilityFixKind.checkExpression,
@@ -265,6 +268,12 @@
         return '$count null check$s added';
       case NullabilityFixKind.checkExpressionDueToHint:
         return '$count null check hint$s converted to null check$s';
+      case NullabilityFixKind.compoundAssignmentHasBadCombinedType:
+        return '$count compound assignment$s could not be migrated (bad '
+            'combined type)';
+      case NullabilityFixKind.compoundAssignmentHasNullableSource:
+        return '$count compound assignment$s could not be migrated (nullable '
+            'source)';
       case NullabilityFixKind.conditionTrueInStrongMode:
         return '$count condition$s will be true in strong checking mode';
         break;
@@ -278,6 +287,9 @@
       case NullabilityFixKind.nullAwarenessUnnecessaryInStrongMode:
         return '$count null-aware access$es will be unnecessary in strong '
             'checking mode';
+      case NullabilityFixKind.nullAwareAssignmentUnnecessaryInStrongMode:
+        return '$count null-aware assignment$s will be unnecessary in strong '
+            'checking mode';
       case NullabilityFixKind.removeAs:
         return '$count cast$s now unnecessary';
       case NullabilityFixKind.removeDeadCode:
diff --git a/pkg/nnbd_migration/lib/src/preview/preview_site.dart b/pkg/nnbd_migration/lib/src/preview/preview_site.dart
index 5e6190d..3f212ff 100644
--- a/pkg/nnbd_migration/lib/src/preview/preview_site.dart
+++ b/pkg/nnbd_migration/lib/src/preview/preview_site.dart
@@ -8,8 +8,8 @@
 import 'dart:math';
 import 'dart:typed_data';
 
-import 'package:analyzer_plugin/protocol/protocol_common.dart';
 import 'package:analysis_server/src/status/pages.dart';
+import 'package:analyzer_plugin/protocol/protocol_common.dart';
 import 'package:nnbd_migration/src/front_end/migration_info.dart';
 import 'package:nnbd_migration/src/front_end/migration_state.dart';
 import 'package:nnbd_migration/src/front_end/path_mapper.dart';
@@ -116,6 +116,7 @@
   Future<void> handleGetRequest(HttpRequest request) async {
     var uri = request.uri;
     var path = uri.path;
+    var decodedPath = pathMapper.reverseMap(uri);
     try {
       if (path == highlightCssPath) {
         // Note: `return await` needed due to
@@ -130,14 +131,15 @@
         // https://github.com/dart-lang/sdk/issues/39204
         return await respond(request, NavigationTreePage(this));
       } else if (path == '/' ||
-          path == migrationInfo.includedRoot ||
-          path == '${migrationInfo.includedRoot}/') {
+          decodedPath == migrationInfo.includedRoot ||
+          decodedPath ==
+              '${migrationInfo.includedRoot}${pathMapper.separator}') {
         // Note: `return await` needed due to
         // https://github.com/dart-lang/sdk/issues/39204
         return await respond(request, IndexFilePage(this));
       }
 
-      var unitInfo = unitInfoMap[path];
+      var unitInfo = unitInfoMap[decodedPath];
       if (unitInfo != null) {
         if (uri.queryParameters.containsKey('inline')) {
           // TODO(devoncarew): Ensure that we don't serve content outside of our
diff --git a/pkg/nnbd_migration/test/edit_plan_test.dart b/pkg/nnbd_migration/test/edit_plan_test.dart
index b9e52c0..910e7aa 100644
--- a/pkg/nnbd_migration/test/edit_plan_test.dart
+++ b/pkg/nnbd_migration/test/edit_plan_test.dart
@@ -535,6 +535,25 @@
         'var x = 0; var y = 0;');
   }
 
+  Future<void> test_informativeMessageForToken() async {
+    await analyze('f(x) => x + 1;');
+    var sum = findNode.binary('+');
+    var info = _MockInfo();
+    var changes = checkPlan(
+        planner.passThrough(sum, innerPlans: [
+          planner.informativeMessageForToken(sum, sum.operator, info: info)
+        ]),
+        'f(x) => x + 1;',
+        expectedIncludingInformative: 'f(x) => x  1;');
+    var expectedOffset = sum.operator.offset;
+    expect(changes.keys, unorderedEquals([expectedOffset]));
+    expect(changes[expectedOffset], hasLength(1));
+    expect(changes[expectedOffset][0].length, '+'.length);
+    expect(changes[expectedOffset][0].replacement, '');
+    expect(changes[expectedOffset][0].isInformative, isTrue);
+    expect(changes[expectedOffset][0].info, same(info));
+  }
+
   Future<void> test_insertText() async {
     await analyze('final x = 1;');
     var variableDeclarationList = findNode.variableDeclarationList('final');
@@ -1581,6 +1600,10 @@
   }
 }
 
+class _MockInfo implements AtomicEditInfo {
+  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
+
 class _PrecedenceChecker extends UnifyingAstVisitor<void> {
   final EditPlanner planner;
 
diff --git a/pkg/nnbd_migration/test/fix_aggregator_test.dart b/pkg/nnbd_migration/test/fix_aggregator_test.dart
index f3e3447..671c1f3 100644
--- a/pkg/nnbd_migration/test/fix_aggregator_test.dart
+++ b/pkg/nnbd_migration/test/fix_aggregator_test.dart
@@ -10,6 +10,7 @@
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/element/type.dart';
 import 'package:analyzer/src/dart/element/type_provider.dart';
+import 'package:nnbd_migration/nnbd_migration.dart';
 import 'package:nnbd_migration/src/decorated_type.dart';
 import 'package:nnbd_migration/src/edit_plan.dart';
 import 'package:nnbd_migration/src/fix_aggregator.dart';
@@ -54,6 +55,95 @@
     expect(previewInfo.applyTo(code), 'f(a, b) => (a! + b!)!;');
   }
 
+  Future<void> test_assignment_add_null_check() async {
+    var content = 'f(int x, int y) => x += y;';
+    await analyze(content);
+    var previewInfo = run({
+      findNode.assignment('+='): NodeChangeForAssignment()..addNullCheck(null)
+    });
+    expect(previewInfo.applyTo(code), 'f(int x, int y) => (x += y)!;');
+  }
+
+  Future<void> test_assignment_change_lhs() async {
+    var content = 'f(List<int> x, int y) => x[0] += y;';
+    await analyze(content);
+    var previewInfo = run({
+      findNode.assignment('+='): NodeChangeForAssignment(),
+      findNode.index('[0]').target: NodeChangeForExpression()
+        ..addNullCheck(null)
+    });
+    expect(previewInfo.applyTo(code), 'f(List<int> x, int y) => x![0] += y;');
+  }
+
+  Future<void> test_assignment_change_rhs() async {
+    var content = 'f(int x, int y) => x += y;';
+    await analyze(content);
+    var assignment = findNode.assignment('+=');
+    var previewInfo = run({
+      assignment: NodeChangeForAssignment(),
+      assignment.rightHandSide: NodeChangeForExpression()..addNullCheck(null)
+    });
+    expect(previewInfo.applyTo(code), 'f(int x, int y) => x += y!;');
+  }
+
+  Future<void> test_assignment_compound_with_bad_combined_type() async {
+    var content = 'f(int x, int y) => x += y;';
+    await analyze(content);
+    var previewInfo = run({
+      findNode.assignment('+='): NodeChangeForAssignment()
+        ..isCompoundAssignmentWithBadCombinedType = true
+    });
+    expect(previewInfo.applyTo(code), content);
+    expect(previewInfo, hasLength(1));
+    var edit = previewInfo[content.indexOf('+=')].single;
+    expect(edit.info.description,
+        NullabilityFixDescription.compoundAssignmentHasBadCombinedType);
+    expect(edit.isInformative, isTrue);
+    expect(edit.length, '+='.length);
+  }
+
+  Future<void> test_assignment_compound_with_nullable_source() async {
+    var content = 'f(int x, int y) => x += y;';
+    await analyze(content);
+    var previewInfo = run({
+      findNode.assignment('+='): NodeChangeForAssignment()
+        ..isCompoundAssignmentWithNullableSource = true
+    });
+    expect(previewInfo.applyTo(code), content);
+    expect(previewInfo, hasLength(1));
+    var edit = previewInfo[content.indexOf('+=')].single;
+    expect(edit.info.description,
+        NullabilityFixDescription.compoundAssignmentHasNullableSource);
+    expect(edit.isInformative, isTrue);
+    expect(edit.length, '+='.length);
+  }
+
+  Future<void> test_assignment_introduce_as() async {
+    var content = 'f(int x, int y) => x += y;';
+    await analyze(content);
+    var previewInfo = run({
+      findNode.assignment('+='): NodeChangeForAssignment()
+        ..introduceAs(nnbdTypeProvider.intType, null)
+    });
+    expect(previewInfo.applyTo(code), 'f(int x, int y) => (x += y) as int;');
+  }
+
+  Future<void> test_assignment_weak_null_aware() async {
+    var content = 'f(int x, int y) => x ??= y;';
+    await analyze(content);
+    var previewInfo = run({
+      findNode.assignment('??='): NodeChangeForAssignment()
+        ..isWeakNullAware = true
+    }, warnOnWeakCode: true);
+    expect(previewInfo.applyTo(code), content);
+    expect(previewInfo, hasLength(1));
+    var edit = previewInfo[content.indexOf('??=')].single;
+    expect(edit.info.description,
+        NullabilityFixDescription.nullAwareAssignmentUnnecessaryInStrongMode);
+    expect(edit.isInformative, isTrue);
+    expect(edit.length, '??='.length);
+  }
+
   Future<void> test_eliminateDeadIf_changesInKeptCode() async {
     await analyze('''
 f(int i, int/*?*/ j) {
diff --git a/pkg/nnbd_migration/test/fix_builder_test.dart b/pkg/nnbd_migration/test/fix_builder_test.dart
index e8b600b..5212cf2 100644
--- a/pkg/nnbd_migration/test/fix_builder_test.dart
+++ b/pkg/nnbd_migration/test/fix_builder_test.dart
@@ -47,6 +47,18 @@
       TypeMatcher<NodeChangeForDefaultFormalParameter>()
           .having((c) => c.addRequiredKeyword, 'addRequiredKeyword', true);
 
+  static final isCompoundAssignmentNullableSource =
+      TypeMatcher<NodeChangeForAssignment>().having(
+          (c) => c.isCompoundAssignmentWithNullableSource,
+          'isCompoundAssignmentWithNullableSource',
+          true);
+
+  static final isCompoundAssignmentBadCombinedType =
+      TypeMatcher<NodeChangeForAssignment>().having(
+          (c) => c.isCompoundAssignmentWithBadCombinedType,
+          'isCompoundAssignmentWithBadCombinedType',
+          true);
+
   static final isMakeNullable = TypeMatcher<NodeChangeForTypeAnnotation>()
       .having((c) => c.makeNullable, 'makeNullable', true)
       .having((c) => c.nullabilityHint, 'nullabilityHint', isNull);
@@ -84,6 +96,10 @@
       TypeMatcher<NodeChangeForAnnotation>().having(
           (c) => c.changeToRequiredKeyword, 'changeToRequiredKeyword', true);
 
+  static final isWeakNullAwareAssignment =
+      TypeMatcher<NodeChangeForAssignment>()
+          .having((c) => c.isWeakNullAware, 'isWeakNullAware', true);
+
   DartType get dynamicType => postMigrationTypeProvider.dynamicType;
 
   DartType get objectType => postMigrationTypeProvider.objectType;
@@ -349,7 +365,8 @@
     // On the RHS of the `&&`, `x` is promoted to non-nullable, but it is still
     // considered to be a nullable assignment target, so no null check is
     // generated for `y`.
-    visitSubexpression(findNode.binary('&&'), 'bool');
+    visitSubexpression(findNode.binary('&&'), 'bool',
+        changes: {findNode.assignment('??='): isWeakNullAwareAssignment});
   }
 
   Future<void>
@@ -1047,6 +1064,61 @@
     visitSubexpression(findNode.booleanLiteral('true'), 'bool');
   }
 
+  Future<void> test_compound_assignment_nullable_result_bad() async {
+    await analyze('''
+abstract class C {
+  C/*?*/ operator+(int i);
+}
+f(C c) {
+  c += 1;
+}
+''');
+    var assignment = findNode.assignment('+=');
+    visitSubexpression(assignment, 'C?',
+        changes: {assignment: isCompoundAssignmentBadCombinedType});
+  }
+
+  Future<void> test_compound_assignment_nullable_result_ok() async {
+    await analyze('''
+abstract class C {
+  C/*?*/ operator+(int i);
+}
+abstract class D {
+  void set x(C/*?*/ value);
+  C/*!*/ get x;
+  f() {
+    x += 1;
+  }
+}
+''');
+    var assignment = findNode.assignment('+=');
+    visitSubexpression(assignment, 'C?');
+  }
+
+  Future<void> test_compound_assignment_nullable_source() async {
+    await analyze('''
+_f(int/*?*/ x) {
+  x += 1;
+}
+''');
+    var assignment = findNode.assignment('+=');
+    visitSubexpression(assignment, 'int',
+        changes: {assignment: isCompoundAssignmentNullableSource});
+  }
+
+  Future<void> test_compound_assignment_potentially_nullable_source() async {
+    await analyze('''
+class C<T extends num/*?*/> {
+  _f(T/*!*/ x) {
+    x += 1;
+  }
+}
+''');
+    var assignment = findNode.assignment('+=');
+    visitSubexpression(assignment, 'T',
+        changes: {assignment: isCompoundAssignmentNullableSource});
+  }
+
   Future<void> test_conditionalExpression_dead_else_remove() async {
     await analyze('_f(int x, int/*?*/ y) => x != null ? x + 1 : y + 1.0;');
     var expression = findNode.conditionalExpression('x != null');
@@ -1814,6 +1886,49 @@
     visitSubexpression(findNode.methodInvocation('c.toString'), 'String');
   }
 
+  Future<void> test_null_aware_assignment_non_nullable_source() async {
+    await analyze('''
+abstract class C {
+  int/*!*/ f();
+  g(int/*!*/ x) {
+    x ??= f();
+  }
+}
+''');
+    var assignment = findNode.assignment('??=');
+    visitSubexpression(assignment, 'int',
+        changes: {assignment: isWeakNullAwareAssignment});
+  }
+
+  Future<void> test_null_aware_assignment_nullable_rhs_needs_check() async {
+    await analyze('''
+abstract class C {
+  void set x(int/*!*/ value);
+  int/*?*/ get x;
+  int/*?*/ f();
+  g() {
+    x ??= f();
+  }
+}
+''');
+    var assignment = findNode.assignment('??=');
+    visitSubexpression(assignment, 'int',
+        changes: {assignment.rightHandSide: isNullCheck});
+  }
+
+  Future<void> test_null_aware_assignment_nullable_rhs_ok() async {
+    await analyze('''
+abstract class C {
+  int/*?*/ f();
+  g(int/*?*/ x) {
+    x ??= f();
+  }
+}
+''');
+    var assignment = findNode.assignment('??=');
+    visitSubexpression(assignment, 'int?');
+  }
+
   Future<void> test_nullAssertion_promotes() async {
     await analyze('''
 _f(bool/*?*/ x) => x && x;
diff --git a/pkg/nnbd_migration/test/front_end/info_builder_test.dart b/pkg/nnbd_migration/test/front_end/info_builder_test.dart
index b9e06f2..ece8325 100644
--- a/pkg/nnbd_migration/test/front_end/info_builder_test.dart
+++ b/pkg/nnbd_migration/test/front_end/info_builder_test.dart
@@ -364,6 +364,56 @@
         kind: NullabilityFixKind.addLateDueToTestSetup);
   }
 
+  Future<void> test_compound_assignment_nullable_result() async {
+    var unit = await buildInfoForSingleTestFile('''
+abstract class C {
+  C/*?*/ operator+(int i);
+}
+void f(C/*!*/ a, int b) {
+  a += b;
+}
+''', migratedContent: '''
+abstract class C {
+  C/*?*/ operator+(int  i);
+}
+void f(C/*!*/ a, int  b) {
+  a += b;
+}
+''');
+    var operator = '+=';
+    var operatorOffset = unit.content.indexOf(operator);
+    var region =
+        unit.regions.where((region) => region.offset == operatorOffset).single;
+    assertRegion(
+        region: region,
+        length: operator.length,
+        explanation: 'Compound assignment has bad combined type',
+        kind: NullabilityFixKind.compoundAssignmentHasBadCombinedType,
+        edits: isEmpty);
+  }
+
+  Future<void> test_compound_assignment_nullable_source() async {
+    var unit = await buildInfoForSingleTestFile('''
+void f(int/*?*/ a, int b) {
+  a += b;
+}
+''', migratedContent: '''
+void f(int/*?*/ a, int  b) {
+  a += b;
+}
+''');
+    var operator = '+=';
+    var operatorOffset = unit.content.indexOf(operator);
+    var region =
+        unit.regions.where((region) => region.offset == operatorOffset).single;
+    assertRegion(
+        region: region,
+        length: operator.length,
+        explanation: 'Compound assignment has nullable source',
+        kind: NullabilityFixKind.compoundAssignmentHasNullableSource,
+        edits: isEmpty);
+  }
+
   Future<void> test_conditionFalseInStrongMode_expression() async {
     var unit = await buildInfoForSingleTestFile(
         'int f(String s) => s == null ? 0 : s.length;',
diff --git a/pkg/nnbd_migration/test/migration_cli_test.dart b/pkg/nnbd_migration/test/migration_cli_test.dart
index b375b60..cd3a4b4 100644
--- a/pkg/nnbd_migration/test/migration_cli_test.dart
+++ b/pkg/nnbd_migration/test/migration_cli_test.dart
@@ -324,6 +324,16 @@
     assertProjectContents(projectDir, projectContents);
   }
 
+  test_lifecycle_preview_extra_forward_slash() async {
+    var projectDir = await createProjectDir(simpleProject());
+    var cli = _createCli();
+    await runWithPreviewServer(cli, [projectDir], (url) async {
+      var uri = Uri.parse(url);
+      await assertPreviewServerResponsive(
+          uri.replace(path: uri.path + '/').toString());
+    });
+  }
+
   test_lifecycle_uri_error() async {
     var projectContents = simpleProject(sourceText: '''
 import 'package:does_not/exist.dart';
@@ -441,15 +451,6 @@
             context: path.style == path.Style.windows
                 ? null
                 : path.Context(style: path.Style.windows, current: 'C:\\'));
-
-  @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/40381')
-  @override
-  test_lifecycle_ignore_errors_enable() =>
-      super.test_lifecycle_ignore_errors_enable();
-
-  @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/40381')
-  @override
-  test_lifecycle_preview() => super.test_lifecycle_preview();
 }
 
 /// TODO(paulberry): move into cli_util
diff --git a/pkg/test_runner/lib/src/runtime_configuration.dart b/pkg/test_runner/lib/src/runtime_configuration.dart
index 7fe448c..477c73c 100644
--- a/pkg/test_runner/lib/src/runtime_configuration.dart
+++ b/pkg/test_runner/lib/src/runtime_configuration.dart
@@ -257,6 +257,9 @@
     if (isReload) {
       multiplier *= 2;
     }
+    if (_configuration.sanitizer != Sanitizer.none) {
+      multiplier *= 2;
+    }
     return multiplier;
   }
 }
diff --git a/pkg/vm/bin/kernel_service.dart b/pkg/vm/bin/kernel_service.dart
index 99638ad..a0bd437 100644
--- a/pkg/vm/bin/kernel_service.dart
+++ b/pkg/vm/bin/kernel_service.dart
@@ -28,8 +28,10 @@
 import 'dart:typed_data' show Uint8List;
 
 import 'package:build_integration/file_system/multi_root.dart';
+import 'package:front_end/src/api_prototype/experimental_flags.dart';
 import 'package:front_end/src/api_prototype/front_end.dart' as fe
     show CompilerResult;
+import 'package:front_end/src/api_prototype/language_version.dart';
 import 'package:front_end/src/api_prototype/memory_file_system.dart';
 import 'package:front_end/src/api_unstable/vm.dart';
 import 'package:kernel/binary/ast_to_binary.dart';
@@ -77,13 +79,30 @@
 
 bool allowDartInternalImport = false;
 
+// Null Safety command line options
+//
+// Note: The values of these constants must match the
+// values of flag null_safety in ../../../../runtime/vm/flag_list.h.
+// 0 - No null_safety option specified on the command line.
+// 1 - '--no-null-safety' specified on the command line.
+// 2 - '--null-safety' option specified on the command line.
+const int kNullSafetyOptionUnspecified = 0;
+const int kNullSafetyOptionWeak = 1;
+const int kNullSafetyOptionStrong = 2;
+
+Future<void> autoDetectNullSafetyMode(
+    Uri script, CompilerOptions options) async {
+  var isLegacy = await uriUsesLegacyLanguageVersion(script, options);
+  options.nnbdMode = isLegacy ? NnbdMode.Weak : NnbdMode.Strong;
+}
+
 abstract class Compiler {
   final int isolateId;
   final FileSystem fileSystem;
   final Uri platformKernelPath;
   final bool suppressWarnings;
   final bool enableAsserts;
-  final bool nullSafety;
+  final int nullSafety;
   final List<String> experimentalFlags;
   final bool bytecode;
   final String packageConfig;
@@ -100,7 +119,7 @@
   Compiler(this.isolateId, this.fileSystem, this.platformKernelPath,
       {this.suppressWarnings: false,
       this.enableAsserts: false,
-      this.nullSafety: false,
+      this.nullSafety: kNullSafetyOptionUnspecified,
       this.experimentalFlags: null,
       this.bytecode: false,
       this.supportCodeCoverage: false,
@@ -139,7 +158,9 @@
           parseExperimentalArguments(expFlags),
           onError: (msg) => errors.add(msg))
       ..environmentDefines = new EnvironmentMap()
-      ..nnbdMode = nullSafety ? NnbdMode.Strong : NnbdMode.Weak
+      ..nnbdMode = (nullSafety == kNullSafetyOptionStrong)
+          ? NnbdMode.Strong
+          : NnbdMode.Weak
       ..onDiagnostic = (DiagnosticMessage message) {
         bool printMessage;
         switch (message.severity) {
@@ -294,7 +315,7 @@
       int isolateId, FileSystem fileSystem, Uri platformKernelPath,
       {bool suppressWarnings: false,
       bool enableAsserts: false,
-      bool nullSafety: false,
+      int nullSafety: kNullSafetyOptionUnspecified,
       List<String> experimentalFlags: null,
       bool bytecode: false,
       String packageConfig: null})
@@ -334,6 +355,10 @@
   @override
   Future<CompilerResult> compileInternal(Uri script) async {
     if (generator == null) {
+      if ((nullSafety == kNullSafetyOptionUnspecified) &&
+          options.experimentalFlags[ExperimentalFlag.nonNullable]) {
+        await autoDetectNullSafetyMode(script, options);
+      }
       generator = new IncrementalCompiler(options, script);
     }
     errors.clear();
@@ -381,7 +406,7 @@
       {this.requireMain: false,
       bool suppressWarnings: false,
       bool enableAsserts: false,
-      bool nullSafety: false,
+      int nullSafety: kNullSafetyOptionUnspecified,
       List<String> experimentalFlags: null,
       bool bytecode: false,
       String packageConfig: null})
@@ -395,6 +420,10 @@
 
   @override
   Future<CompilerResult> compileInternal(Uri script) async {
+    if ((nullSafety == kNullSafetyOptionUnspecified) &&
+        options.experimentalFlags[ExperimentalFlag.nonNullable]) {
+      await autoDetectNullSafetyMode(script, options);
+    }
     fe.CompilerResult compilerResult = requireMain
         ? await kernelForProgram(script, options)
         : await kernelForModule([script], options);
@@ -423,7 +452,7 @@
     List sourceFiles, Uri platformKernelPath, List<int> platformKernel,
     {bool suppressWarnings: false,
     bool enableAsserts: false,
-    bool nullSafety: false,
+    int nullSafety: kNullSafetyOptionUnspecified,
     List<String> experimentalFlags: null,
     bool bytecode: false,
     String packageConfig: null,
@@ -725,7 +754,7 @@
   final Uri script =
       inputFileUri != null ? Uri.base.resolve(inputFileUri) : null;
   final bool incremental = request[4];
-  final bool nullSafety = request[5];
+  final int nullSafety = request[5];
   final int isolateId = request[6];
   final List sourceFiles = request[7];
   final bool suppressWarnings = request[8];
@@ -955,7 +984,7 @@
     scriptUri,
     platformKernelPath,
     false /* incremental */,
-    false /* null safety */,
+    kNullSafetyOptionUnspecified /* null safety */,
     1 /* isolateId chosen randomly */,
     [] /* source files */,
     false /* suppress warnings */,
diff --git a/runtime/bin/gen_snapshot.cc b/runtime/bin/gen_snapshot.cc
index eb40122..568fa5f 100644
--- a/runtime/bin/gen_snapshot.cc
+++ b/runtime/bin/gen_snapshot.cc
@@ -670,7 +670,7 @@
   }
 
   auto isolate_group_data = std::unique_ptr<IsolateGroupData>(
-      new IsolateGroupData(nullptr, nullptr, nullptr, false));
+      new IsolateGroupData(nullptr, nullptr, nullptr, nullptr, false));
   Dart_Isolate isolate;
   char* error = NULL;
 
diff --git a/runtime/bin/isolate_data.cc b/runtime/bin/isolate_data.cc
index 1547975..3bf497c 100644
--- a/runtime/bin/isolate_data.cc
+++ b/runtime/bin/isolate_data.cc
@@ -10,16 +10,21 @@
 namespace bin {
 
 IsolateGroupData::IsolateGroupData(const char* url,
+                                   const char* package_root,
                                    const char* packages_file,
                                    AppSnapshot* app_snapshot,
                                    bool isolate_run_app_snapshot)
     : script_url((url != NULL) ? strdup(url) : NULL),
+      package_root(NULL),
       app_snapshot_(app_snapshot),
       resolved_packages_config_(NULL),
       kernel_buffer_(NULL),
       kernel_buffer_size_(0),
       isolate_run_app_snapshot_(isolate_run_app_snapshot) {
-  if (packages_file != NULL) {
+  if (package_root != NULL) {
+    ASSERT(packages_file == NULL);
+    package_root = strdup(package_root);
+  } else if (packages_file != NULL) {
     packages_file_ = strdup(packages_file);
   }
 }
@@ -27,6 +32,8 @@
 IsolateGroupData::~IsolateGroupData() {
   free(script_url);
   script_url = NULL;
+  free(package_root);
+  package_root = NULL;
   free(packages_file_);
   packages_file_ = NULL;
   free(resolved_packages_config_);
diff --git a/runtime/bin/isolate_data.h b/runtime/bin/isolate_data.h
index 6dae87a..c4523a1 100644
--- a/runtime/bin/isolate_data.h
+++ b/runtime/bin/isolate_data.h
@@ -34,12 +34,14 @@
 class IsolateGroupData {
  public:
   IsolateGroupData(const char* url,
+                   const char* package_root,
                    const char* packages_file,
                    AppSnapshot* app_snapshot,
                    bool isolate_run_app_snapshot);
   ~IsolateGroupData();
 
   char* script_url;
+  char* package_root;
 
   const std::shared_ptr<uint8_t>& kernel_buffer() const {
     return kernel_buffer_;
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index 06b9109..ac3baa5 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -180,7 +180,7 @@
 
   // Prepare builtin and other core libraries for use to resolve URIs.
   // Set up various closures, e.g: printing, timers etc.
-  // Set up package configuration for URI resolution.
+  // Set up 'package root' for URI resolution.
   result = DartUtils::PrepareForScriptLoading(false, Options::trace_loading());
   if (Dart_IsError(result)) return result;
 
@@ -417,6 +417,7 @@
 // For now we only support the kernel isolate coming up from an
 // application snapshot or from a .dill file.
 static Dart_Isolate CreateAndSetupKernelIsolate(const char* script_uri,
+                                                const char* package_root,
                                                 const char* packages_config,
                                                 Dart_IsolateFlags* flags,
                                                 char** error,
@@ -458,8 +459,9 @@
     app_snapshot->SetBuffers(
         &ignore_vm_snapshot_data, &ignore_vm_snapshot_instructions,
         &isolate_snapshot_data, &isolate_snapshot_instructions);
-    isolate_group_data = new IsolateGroupData(
-        uri, packages_config, app_snapshot, isolate_run_app_snapshot);
+    isolate_group_data =
+        new IsolateGroupData(uri, package_root, packages_config, app_snapshot,
+                             isolate_run_app_snapshot);
     isolate_data = new IsolateData(isolate_group_data);
     isolate = Dart_CreateIsolateGroup(
         DART_KERNEL_ISOLATE_NAME, DART_KERNEL_ISOLATE_NAME,
@@ -477,8 +479,8 @@
     intptr_t kernel_service_buffer_size = 0;
     dfe.LoadKernelService(&kernel_service_buffer, &kernel_service_buffer_size);
     ASSERT(kernel_service_buffer != NULL);
-    isolate_group_data = new IsolateGroupData(uri, packages_config, nullptr,
-                                              isolate_run_app_snapshot);
+    isolate_group_data = new IsolateGroupData(
+        uri, package_root, packages_config, nullptr, isolate_run_app_snapshot);
     isolate_group_data->SetKernelBufferUnowned(
         const_cast<uint8_t*>(kernel_service_buffer),
         kernel_service_buffer_size);
@@ -506,6 +508,7 @@
 // For now we only support the service isolate coming up from sources
 // which are compiled by the VM parser.
 static Dart_Isolate CreateAndSetupServiceIsolate(const char* script_uri,
+                                                 const char* package_root,
                                                  const char* packages_config,
                                                  Dart_IsolateFlags* flags,
                                                  char** error,
@@ -513,8 +516,8 @@
 #if !defined(PRODUCT)
   ASSERT(script_uri != NULL);
   Dart_Isolate isolate = NULL;
-  auto isolate_group_data =
-      new IsolateGroupData(script_uri, packages_config, nullptr, false);
+  auto isolate_group_data = new IsolateGroupData(
+      script_uri, package_root, packages_config, nullptr, false);
 
 #if defined(DART_PRECOMPILED_RUNTIME)
   // AOT: All isolates start from the app snapshot.
@@ -577,6 +580,7 @@
     bool is_main_isolate,
     const char* script_uri,
     const char* name,
+    const char* package_root,
     const char* packages_config,
     Dart_IsolateFlags* flags,
     void* callback_data,
@@ -633,8 +637,9 @@
   }
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
 
-  auto isolate_group_data = new IsolateGroupData(
-      script_uri, packages_config, app_snapshot, isolate_run_app_snapshot);
+  auto isolate_group_data =
+      new IsolateGroupData(script_uri, package_root, packages_config,
+                           app_snapshot, isolate_run_app_snapshot);
   if (kernel_buffer != NULL) {
     if (parent_kernel_buffer) {
       isolate_group_data->SetKernelBufferAlreadyOwned(
@@ -711,22 +716,28 @@
   // The VM should never call the isolate helper with a NULL flags.
   ASSERT(flags != NULL);
   ASSERT(flags->version == DART_FLAGS_CURRENT_VERSION);
-  ASSERT(package_root == nullptr);
+  if ((package_root != NULL) && (package_config != NULL)) {
+    *error = strdup(
+        "Invalid arguments - Cannot simultaneously specify "
+        "package root and package map.");
+    return NULL;
+  }
+
   int exit_code = 0;
 #if !defined(EXCLUDE_CFE_AND_KERNEL_PLATFORM)
   if (strcmp(script_uri, DART_KERNEL_ISOLATE_NAME) == 0) {
-    return CreateAndSetupKernelIsolate(script_uri, package_config, flags, error,
-                                       &exit_code);
+    return CreateAndSetupKernelIsolate(script_uri, package_root, package_config,
+                                       flags, error, &exit_code);
   }
 #endif  // !defined(EXCLUDE_CFE_AND_KERNEL_PLATFORM)
   if (strcmp(script_uri, DART_VM_SERVICE_ISOLATE_NAME) == 0) {
-    return CreateAndSetupServiceIsolate(script_uri, package_config, flags,
-                                        error, &exit_code);
+    return CreateAndSetupServiceIsolate(
+        script_uri, package_root, package_config, flags, error, &exit_code);
   }
   bool is_main_isolate = false;
   return CreateIsolateGroupAndSetupHelper(is_main_isolate, script_uri, main,
-                                          package_config, flags, callback_data,
-                                          error, &exit_code);
+                                          package_root, package_config, flags,
+                                          callback_data, error, &exit_code);
 }
 
 static void OnIsolateShutdown(void* isolate_group_data, void* isolate_data) {
@@ -834,15 +845,10 @@
   Dart_IsolateFlags flags;
   Dart_IsolateFlagsInitialize(&flags);
 
-  if (Options::package_root() != nullptr) {
-    Syslog::PrintErr(
-        "Warning: The --package-root option is deprecated (was: %s)\n",
-        Options::package_root());
-  }
-
   Dart_Isolate isolate = CreateIsolateGroupAndSetupHelper(
-      is_main_isolate, script_name, "main", Options::packages_file(), &flags,
-      NULL /* callback_data */, &error, &exit_code);
+      is_main_isolate, script_name, "main", Options::package_root(),
+      Options::packages_file(), &flags, NULL /* callback_data */, &error,
+      &exit_code);
 
   if (isolate == NULL) {
     Syslog::PrintErr("%s\n", error);
diff --git a/runtime/bin/run_vm_tests.cc b/runtime/bin/run_vm_tests.cc
index c7b4df6..5e44275 100644
--- a/runtime/bin/run_vm_tests.cc
+++ b/runtime/bin/run_vm_tests.cc
@@ -101,6 +101,7 @@
   }
 
 static Dart_Isolate CreateAndSetupServiceIsolate(const char* script_uri,
+                                                 const char* package_root,
                                                  const char* packages_config,
                                                  Dart_IsolateFlags* flags,
                                                  char** error) {
@@ -116,7 +117,7 @@
   ASSERT(script_uri != nullptr);
   Dart_Isolate isolate = nullptr;
   auto isolate_group_data = new bin::IsolateGroupData(
-      script_uri, packages_config, /*app_snapshot=*/nullptr,
+      script_uri, package_root, packages_config, /*app_snapshot=*/nullptr,
       /*isolate_run_app_snapshot=*/false);
 
   const uint8_t* kernel_buffer = nullptr;
@@ -168,10 +169,9 @@
                                           void* data,
                                           char** error) {
   ASSERT(script_uri != nullptr);
-  ASSERT(package_root == nullptr);
   if (strcmp(script_uri, DART_VM_SERVICE_ISOLATE_NAME) == 0) {
-    return CreateAndSetupServiceIsolate(script_uri, packages_config, flags,
-                                        error);
+    return CreateAndSetupServiceIsolate(script_uri, package_root,
+                                        packages_config, flags, error);
   }
   const bool is_kernel_isolate =
       strcmp(script_uri, DART_KERNEL_ISOLATE_NAME) == 0;
@@ -200,8 +200,9 @@
     app_snapshot->SetBuffers(
         &ignore_vm_snapshot_data, &ignore_vm_snapshot_instructions,
         &isolate_snapshot_data, &isolate_snapshot_instructions);
-    isolate_group_data = new bin::IsolateGroupData(
-        script_uri, packages_config, app_snapshot, app_snapshot != nullptr);
+    isolate_group_data =
+        new bin::IsolateGroupData(script_uri, package_root, packages_config,
+                                  app_snapshot, app_snapshot != nullptr);
     isolate = Dart_CreateIsolateGroup(
         DART_KERNEL_ISOLATE_NAME, DART_KERNEL_ISOLATE_NAME,
         isolate_snapshot_data, isolate_snapshot_instructions, flags,
@@ -228,8 +229,8 @@
     bin::dfe.LoadKernelService(&kernel_service_buffer,
                                &kernel_service_buffer_size);
     ASSERT(kernel_service_buffer != nullptr);
-    isolate_group_data =
-        new bin::IsolateGroupData(script_uri, packages_config, nullptr, false);
+    isolate_group_data = new bin::IsolateGroupData(
+        script_uri, package_root, packages_config, nullptr, false);
     isolate_group_data->SetKernelBufferUnowned(
         const_cast<uint8_t*>(kernel_service_buffer),
         kernel_service_buffer_size);
diff --git a/runtime/include/dart_api.h b/runtime/include/dart_api.h
index c8fd5f8..0da49b0 100644
--- a/runtime/include/dart_api.h
+++ b/runtime/include/dart_api.h
@@ -530,7 +530,6 @@
   bool load_vmservice_library;
   bool unsafe_trust_strong_mode_types;
   bool copy_parent_code;
-  bool null_safety;
 } Dart_IsolateFlags;
 
 /**
@@ -571,7 +570,10 @@
  *   eventually run.  This is provided for advisory purposes only to
  *   improve debugging messages.  The main function is not invoked by
  *   this function.
- * \param package_root Ignored.
+ * \param package_root The package root path for this isolate to resolve
+ *   package imports against. Only one of package_root and package_map
+ *   parameters is non-NULL. If neither parameter is passed the package
+ *   resolution of the parent isolate should be used.
  * \param package_map The package map for this isolate to resolve package
  *   imports against. The array contains alternating keys and values,
  *   terminated by a NULL key. Only one of package_root and package_map
diff --git a/runtime/lib/isolate.cc b/runtime/lib/isolate.cc
index 059299d..27e688f 100644
--- a/runtime/lib/isolate.cc
+++ b/runtime/lib/isolate.cc
@@ -179,10 +179,10 @@
     switch (cid) {
       // List below matches the one in raw_object_snapshot.cc
 #define MESSAGE_SNAPSHOT_ILLEGAL(type)                                         \
-  return Exceptions::CreateUnhandledException(                                 \
-      zone, Exceptions::kArgumentValue,                                        \
-      "Illegal argument in isolate message : (object is a " #type ")");        \
-  break;
+  case k##type##Cid:                                                           \
+    return Exceptions::CreateUnhandledException(                               \
+        zone, Exceptions::kArgumentValue,                                      \
+        "Illegal argument in isolate message : (object is a " #type ")");
 
       MESSAGE_SNAPSHOT_ILLEGAL(DynamicLibrary);
       MESSAGE_SNAPSHOT_ILLEGAL(MirrorReference);
@@ -390,7 +390,7 @@
   return result;
 }
 
-DEFINE_NATIVE_ENTRY(Isolate_spawnFunction, 0, 10) {
+DEFINE_NATIVE_ENTRY(Isolate_spawnFunction, 0, 11) {
   GET_NON_NULL_NATIVE_ARGUMENT(SendPort, port, arguments->NativeArgAt(0));
   GET_NON_NULL_NATIVE_ARGUMENT(String, script_uri, arguments->NativeArgAt(1));
   GET_NON_NULL_NATIVE_ARGUMENT(Instance, closure, arguments->NativeArgAt(2));
@@ -399,8 +399,9 @@
   GET_NATIVE_ARGUMENT(Bool, fatalErrors, arguments->NativeArgAt(5));
   GET_NATIVE_ARGUMENT(SendPort, onExit, arguments->NativeArgAt(6));
   GET_NATIVE_ARGUMENT(SendPort, onError, arguments->NativeArgAt(7));
-  GET_NATIVE_ARGUMENT(String, packageConfig, arguments->NativeArgAt(8));
-  GET_NATIVE_ARGUMENT(String, debugName, arguments->NativeArgAt(9));
+  GET_NATIVE_ARGUMENT(String, packageRoot, arguments->NativeArgAt(8));
+  GET_NATIVE_ARGUMENT(String, packageConfig, arguments->NativeArgAt(9));
+  GET_NATIVE_ARGUMENT(String, debugName, arguments->NativeArgAt(10));
 
   if (closure.IsClosure()) {
     Function& func = Function::Handle();
@@ -481,19 +482,26 @@
   return result;
 }
 
-DEFINE_NATIVE_ENTRY(Isolate_spawnUri, 0, 12) {
+DEFINE_NATIVE_ENTRY(Isolate_spawnUri, 0, 13) {
   GET_NON_NULL_NATIVE_ARGUMENT(SendPort, port, arguments->NativeArgAt(0));
   GET_NON_NULL_NATIVE_ARGUMENT(String, uri, arguments->NativeArgAt(1));
+
   GET_NON_NULL_NATIVE_ARGUMENT(Instance, args, arguments->NativeArgAt(2));
   GET_NON_NULL_NATIVE_ARGUMENT(Instance, message, arguments->NativeArgAt(3));
+
   GET_NON_NULL_NATIVE_ARGUMENT(Bool, paused, arguments->NativeArgAt(4));
   GET_NATIVE_ARGUMENT(SendPort, onExit, arguments->NativeArgAt(5));
   GET_NATIVE_ARGUMENT(SendPort, onError, arguments->NativeArgAt(6));
+
   GET_NATIVE_ARGUMENT(Bool, fatalErrors, arguments->NativeArgAt(7));
   GET_NATIVE_ARGUMENT(Bool, checked, arguments->NativeArgAt(8));
+
   GET_NATIVE_ARGUMENT(Array, environment, arguments->NativeArgAt(9));
-  GET_NATIVE_ARGUMENT(String, packageConfig, arguments->NativeArgAt(10));
-  GET_NATIVE_ARGUMENT(String, debugName, arguments->NativeArgAt(11));
+
+  GET_NATIVE_ARGUMENT(String, packageRoot, arguments->NativeArgAt(10));
+  GET_NATIVE_ARGUMENT(String, packageConfig, arguments->NativeArgAt(11));
+
+  GET_NATIVE_ARGUMENT(String, debugName, arguments->NativeArgAt(12));
 
   if (Dart::vm_snapshot_kind() == Snapshot::kFullAOT) {
     const Array& args = Array::Handle(Array::New(1));
diff --git a/runtime/observatory/tests/service/client_name_rpc_test.dart b/runtime/observatory/tests/service/client_name_rpc_test.dart
index fa20430..92aa4c9 100644
--- a/runtime/observatory/tests/service/client_name_rpc_test.dart
+++ b/runtime/observatory/tests/service/client_name_rpc_test.dart
@@ -66,6 +66,4 @@
 main(args) async => runVMTests(
       args,
       tests,
-      // TODO(bkonyi): client names are not yet supported in DDS.
-      enableDds: false,
     );
diff --git a/runtime/observatory/tests/service/client_resume_approvals_approve_then_disconnect_test.dart b/runtime/observatory/tests/service/client_resume_approvals_approve_then_disconnect_test.dart
index 462e3dc4..439f170 100644
--- a/runtime/observatory/tests/service/client_resume_approvals_approve_then_disconnect_test.dart
+++ b/runtime/observatory/tests/service/client_resume_approvals_approve_then_disconnect_test.dart
@@ -66,6 +66,4 @@
       testeeConcurrent: fooBar,
       pause_on_start: true,
       pause_on_exit: true,
-      // TODO(bkonyi): client names are not yet supported in DDS.
-      enableDds: false,
     );
diff --git a/runtime/observatory/tests/service/client_resume_approvals_disconnect_test.dart b/runtime/observatory/tests/service/client_resume_approvals_disconnect_test.dart
index 50c5d34..d82317a 100644
--- a/runtime/observatory/tests/service/client_resume_approvals_disconnect_test.dart
+++ b/runtime/observatory/tests/service/client_resume_approvals_disconnect_test.dart
@@ -64,6 +64,4 @@
       testeeConcurrent: fooBar,
       pause_on_start: true,
       pause_on_exit: true,
-      // TODO(bkonyi): client names are not yet supported in DDS.
-      enableDds: false,
     );
diff --git a/runtime/observatory/tests/service/client_resume_approvals_identical_names_test.dart b/runtime/observatory/tests/service/client_resume_approvals_identical_names_test.dart
index 27e026c..dbcc14a 100644
--- a/runtime/observatory/tests/service/client_resume_approvals_identical_names_test.dart
+++ b/runtime/observatory/tests/service/client_resume_approvals_identical_names_test.dart
@@ -46,6 +46,4 @@
       testeeConcurrent: fooBar,
       pause_on_start: true,
       pause_on_exit: true,
-      // TODO(bkonyi): client names are not yet supported in DDS.
-      enableDds: false,
     );
diff --git a/runtime/observatory/tests/service/client_resume_approvals_multiple_names_test.dart b/runtime/observatory/tests/service/client_resume_approvals_multiple_names_test.dart
index e92442c..88d217d 100644
--- a/runtime/observatory/tests/service/client_resume_approvals_multiple_names_test.dart
+++ b/runtime/observatory/tests/service/client_resume_approvals_multiple_names_test.dart
@@ -64,6 +64,4 @@
       testeeConcurrent: fooBar,
       pause_on_start: true,
       pause_on_exit: true,
-      // TODO(bkonyi): client names are not yet supported in DDS.
-      enableDds: false,
     );
diff --git a/runtime/observatory/tests/service/client_resume_approvals_name_change_test.dart b/runtime/observatory/tests/service/client_resume_approvals_name_change_test.dart
index b20a593..0e1374e 100644
--- a/runtime/observatory/tests/service/client_resume_approvals_name_change_test.dart
+++ b/runtime/observatory/tests/service/client_resume_approvals_name_change_test.dart
@@ -57,6 +57,4 @@
       testeeConcurrent: fooBar,
       pause_on_start: true,
       pause_on_exit: true,
-      // TODO(bkonyi): client names are not yet supported in DDS.
-      enableDds: false,
     );
diff --git a/runtime/observatory/tests/service/client_resume_approvals_reload_test.dart b/runtime/observatory/tests/service/client_resume_approvals_reload_test.dart
index 50f7f45..08fdc10 100644
--- a/runtime/observatory/tests/service/client_resume_approvals_reload_test.dart
+++ b/runtime/observatory/tests/service/client_resume_approvals_reload_test.dart
@@ -65,6 +65,4 @@
       hotReloadTest,
       testeeConcurrent: fooBar,
       pause_on_start: true,
-      // TODO(bkonyi): client names are not yet supported in DDS.
-      enableDds: false,
     );
diff --git a/runtime/observatory/tests/service/get_client_name_rpc_test.dart b/runtime/observatory/tests/service/get_client_name_rpc_test.dart
index 33f2c21..25b7828 100644
--- a/runtime/observatory/tests/service/get_client_name_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_client_name_rpc_test.dart
@@ -41,6 +41,4 @@
       args,
       test,
       testeeBefore: fooBar,
-      // TODO(bkonyi): client names are not yet supported in DDS.
-      enableDds: false,
     );
diff --git a/runtime/observatory/tests/service/get_version_rpc_test.dart b/runtime/observatory/tests/service/get_version_rpc_test.dart
index 785d7f9..3dc33db 100644
--- a/runtime/observatory/tests/service/get_version_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_version_rpc_test.dart
@@ -12,7 +12,7 @@
     var result = await vm.invokeRpcNoUpgrade('getVersion', {});
     expect(result['type'], equals('Version'));
     expect(result['major'], equals(3));
-    expect(result['minor'], equals(32));
+    expect(result['minor'], equals(33));
     expect(result['_privateMajor'], equals(0));
     expect(result['_privateMinor'], equals(0));
   },
diff --git a/runtime/vm/bootstrap_natives.h b/runtime/vm/bootstrap_natives.h
index 8340655..65e0dae 100644
--- a/runtime/vm/bootstrap_natives.h
+++ b/runtime/vm/bootstrap_natives.h
@@ -317,8 +317,8 @@
   V(Int32x4_setFlagZ, 2)                                                       \
   V(Int32x4_setFlagW, 2)                                                       \
   V(Int32x4_select, 3)                                                         \
-  V(Isolate_spawnFunction, 10)                                                 \
-  V(Isolate_spawnUri, 12)                                                      \
+  V(Isolate_spawnFunction, 11)                                                 \
+  V(Isolate_spawnUri, 13)                                                      \
   V(Isolate_getPortAndCapabilitiesOfCurrentIsolate, 0)                         \
   V(Isolate_getCurrentRootUriStr, 0)                                           \
   V(Isolate_sendOOB, 2)                                                        \
diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.cc b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
index ad64458..80d6d2c 100644
--- a/runtime/vm/compiler/frontend/kernel_translation_helper.cc
+++ b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
@@ -3338,9 +3338,7 @@
     type = klass.DeclarationType();
   } else {
     type = Type::New(klass, TypeArguments::Handle(Z, klass.type_parameters()),
-                     klass.token_pos(),
-                     Dart::non_nullable_flag() ? Nullability::kNonNullable
-                                               : Nullability::kLegacy);
+                     klass.token_pos(), Nullability::kNonNullable);
   }
   return type;
 }
diff --git a/runtime/vm/dart.cc b/runtime/vm/dart.cc
index 4ccca2d..180a7e0 100644
--- a/runtime/vm/dart.cc
+++ b/runtime/vm/dart.cc
@@ -69,7 +69,6 @@
 Dart_FileWriteCallback Dart::file_write_callback_ = NULL;
 Dart_FileCloseCallback Dart::file_close_callback_ = NULL;
 Dart_EntropySource Dart::entropy_source_callback_ = NULL;
-bool Dart::non_nullable_flag_ = false;
 
 // Structure for managing read-only global handles allocation used for
 // creating global read-only handles that are pre created and initialized
@@ -235,9 +234,6 @@
     ASSERT(Flags::Initialized());
     const bool is_vm_isolate = true;
 
-    // Cache value of "non-nullable" experimental flag.
-    set_non_nullable_flag(KernelIsolate::GetExperimentalFlag("non-nullable"));
-
     // Setup default flags for the VM isolate.
     Dart_IsolateFlags api_flags;
     Isolate::FlagsInitialize(&api_flags);
@@ -970,12 +966,21 @@
 #error What architecture?
 #endif
 
-    ADD_ISOLATE_FLAG(null_safety, null_safety, FLAG_null_safety);
+    if (isolate != NULL) {
+      if (isolate->null_safety()) {
+        buffer.AddString(" null-safety");
+      } else {
+        buffer.AddString(" no-null-safety");
+      }
+    } else {
+      if (FLAG_null_safety == kNullSafetyOptionStrong) {
+        buffer.AddString(" null-safety");
+      } else {
+        buffer.AddString(" no-null-safety");
+      }
+    }
   }
 
-  if (Dart::non_nullable_flag()) {
-    buffer.AddString(" nnbd-experiment");
-  }
 #undef ADD_ISOLATE_FLAG
 #undef ADD_D
 #undef ADD_C
diff --git a/runtime/vm/dart.h b/runtime/vm/dart.h
index f254047..6fa528d 100644
--- a/runtime/vm/dart.h
+++ b/runtime/vm/dart.h
@@ -131,10 +131,6 @@
     return entropy_source_callback_;
   }
 
-  // TODO(dartbug.com/40342): Delete these functions.
-  static void set_non_nullable_flag(bool value) { non_nullable_flag_ = value; }
-  static bool non_nullable_flag() { return true; }
-
  private:
   static constexpr const char* kVmIsolateName = "vm-isolate";
 
@@ -153,7 +149,6 @@
   static Dart_FileWriteCallback file_write_callback_;
   static Dart_FileCloseCallback file_close_callback_;
   static Dart_EntropySource entropy_source_callback_;
-  static bool non_nullable_flag_;
 };
 
 }  // namespace dart
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index 4bb6f96..91d3d63 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -5435,6 +5435,18 @@
   if (program == nullptr) {
     return Api::NewError("Can't load Kernel binary: %s.", error);
   }
+  if (I->is_service_isolate() || I->is_kernel_isolate()) {
+    // For now the service isolate and kernel isolate will be running in
+    // weak mode and we assert for that here.
+    ASSERT(!I->null_safety());
+  } else {
+    // If null safety is not specified on the command line we use the value
+    // from the dill file that the CFE has computed based on how it was invoked.
+    if (FLAG_null_safety == kNullSafetyOptionUnspecified) {
+      I->set_null_safety(program->compilation_mode() ==
+                         NNBDCompiledMode::kStrong);
+    }
+  }
   const Object& tmp = kernel::KernelLoader::LoadEntireProgram(program.get());
   program.reset();
 
@@ -5735,6 +5747,7 @@
   DARTSCOPE(Thread::Current());
   API_TIMELINE_DURATION(T);
   StackZone zone(T);
+  Isolate* I = T->isolate();
 
   CHECK_CALLBACK_STATE(T);
 
@@ -5751,6 +5764,18 @@
   if (program == nullptr) {
     return Api::NewError("Can't load Kernel binary: %s.", error);
   }
+  if (I->is_service_isolate() || I->is_kernel_isolate()) {
+    // For now the service isolate and kernel isolate will be running in
+    // weak mode and we assert for that here.
+    ASSERT(!I->null_safety());
+  } else {
+    // If null safety is not specified on the command line we use the value
+    // from the dill file that the CFE has computed based on how it was invoked.
+    if (FLAG_null_safety == kNullSafetyOptionUnspecified) {
+      I->set_null_safety(program->compilation_mode() ==
+                         NNBDCompiledMode::kStrong);
+    }
+  }
   const Object& result =
       kernel::KernelLoader::LoadEntireProgram(program.get(), false);
   program.reset();
@@ -6522,6 +6547,12 @@
   // loader. See also Elf::WriteProgramTable().
   const intptr_t bss_base =
       elf->AddBSSData("_kDartBSSData", sizeof(compiler::target::uword));
+  // Add the BSS section to the separately saved debugging information, even
+  // though there will be no code in it to relocate, since it precedes the
+  // .text sections and thus affects their virtual addresses.
+  if (debug_dwarf != nullptr) {
+    debug_elf->AddBSSData("_kDartBSSData", sizeof(compiler::target::uword));
+  }
 
   BlobImageWriter vm_image_writer(T, &vm_snapshot_instructions_buffer,
                                   ApiReallocate, kInitialSize, debug_dwarf,
diff --git a/runtime/vm/flag_list.h b/runtime/vm/flag_list.h
index f1344a9..8fdc0de 100644
--- a/runtime/vm/flag_list.h
+++ b/runtime/vm/flag_list.h
@@ -191,8 +191,6 @@
   P(reorder_basic_blocks, bool, true, "Reorder basic blocks")                  \
   C(stress_async_stacks, false, false, bool, false,                            \
     "Stress test async stack traces")                                          \
-  P(null_safety, bool, false,                                                  \
-    "Respect the nullability of types in casts and instance checks.")          \
   P(use_table_dispatch, bool, true, "Enable dispatch table based calls.")      \
   P(retain_function_objects, bool, true,                                       \
     "Serialize function objects for all code objects even if not otherwise "   \
diff --git a/runtime/vm/heap/heap.cc b/runtime/vm/heap/heap.cc
index 0f3dcd0..79a159d 100644
--- a/runtime/vm/heap/heap.cc
+++ b/runtime/vm/heap/heap.cc
@@ -776,9 +776,6 @@
   auto thread = Thread::Current();
   StackZone stack_zone(thread);
 
-  // Change the new space's top_ with the more up-to-date thread's view of top_
-  new_space_.MakeNewSpaceIterable();
-
   ObjectSet* allocated_set =
       CreateAllocatedObjectSet(stack_zone.GetZone(), mark_expectation);
   VerifyPointersVisitor visitor(isolate_group(), allocated_set);
diff --git a/runtime/vm/heap/scavenger.cc b/runtime/vm/heap/scavenger.cc
index 8278400..26056f2 100644
--- a/runtime/vm/heap/scavenger.cc
+++ b/runtime/vm/heap/scavenger.cc
@@ -94,6 +94,142 @@
   } while (size > 0);
 }
 
+static const intptr_t kNewPageSize = 512 * KB;
+static const intptr_t kNewPageSizeInWords = kNewPageSize / kWordSize;
+static const intptr_t kNewPageMask = ~(kNewPageSize - 1);
+
+// A page containing new generation objects.
+class NewPage {
+ public:
+  static NewPage* Allocate();
+  void Deallocate();
+
+  uword start() const { return memory_->start(); }
+  uword end() const { return memory_->end(); }
+  bool Contains(uword addr) const { return memory_->Contains(addr); }
+  void WriteProtect(bool read_only) {
+    memory_->Protect(read_only ? VirtualMemory::kReadOnly
+                               : VirtualMemory::kReadWrite);
+  }
+
+  NewPage* next() const { return next_; }
+  void set_next(NewPage* next) { next_ = next; }
+
+  Thread* owner() const { return owner_; }
+
+  uword object_start() const { return start() + ObjectStartOffset(); }
+  uword object_end() const { return owner_ != nullptr ? owner_->top() : top_; }
+  void VisitObjects(ObjectVisitor* visitor) const {
+    uword addr = object_start();
+    uword end = object_end();
+    while (addr < end) {
+      ObjectPtr obj = ObjectLayout::FromAddr(addr);
+      visitor->VisitObject(obj);
+      addr += obj->ptr()->HeapSize();
+    }
+  }
+  void VisitObjectPointers(ObjectPointerVisitor* visitor) const {
+    uword addr = object_start();
+    uword end = object_end();
+    while (addr < end) {
+      ObjectPtr obj = ObjectLayout::FromAddr(addr);
+      intptr_t size = obj->ptr()->VisitPointers(visitor);
+      addr += size;
+    }
+  }
+
+  static intptr_t ObjectStartOffset() {
+    return Utils::RoundUp(sizeof(NewPage), kObjectAlignment) +
+           kNewObjectAlignmentOffset;
+  }
+
+  static NewPage* Of(ObjectPtr obj) {
+    ASSERT(obj->IsHeapObject());
+    ASSERT(obj->IsNewObject());
+    return Of(static_cast<uword>(obj));
+  }
+  static NewPage* Of(uword addr) {
+    return reinterpret_cast<NewPage*>(addr & kNewPageMask);
+  }
+
+  // Remember the limit to which objects have been copied.
+  void RecordSurvivors() { survivor_end_ = object_end(); }
+
+  // Move survivor end to the end of the to_ space, making all surviving
+  // objects candidates for promotion next time.
+  void EarlyTenure() { survivor_end_ = end_; }
+
+  uword promo_candidate_words() const {
+    return (survivor_end_ - object_start()) / kWordSize;
+  }
+
+  void Acquire(Thread* thread) {
+    ASSERT(owner_ == nullptr);
+    owner_ = thread;
+    thread->set_top(top_);
+    thread->set_end(end_);
+  }
+  void Release(Thread* thread) {
+    ASSERT(owner_ == thread);
+    owner_ = nullptr;
+    top_ = thread->top();
+    thread->set_top(0);
+    thread->set_end(0);
+  }
+  void Release() {
+    if (owner_ != nullptr) {
+      Release(owner_);
+    }
+  }
+
+  uword TryAllocateGC(intptr_t size) {
+    ASSERT(owner_ == nullptr);
+    uword result = top_;
+    uword new_top = result + size;
+    if (LIKELY(new_top < end_)) {
+      top_ = new_top;
+      return result;
+    }
+    return 0;
+  }
+
+  void Unallocate(uword addr, intptr_t size) {
+    ASSERT((addr + size) == top_);
+    top_ -= size;
+  }
+
+  bool IsSurvivor(uword raw_addr) const { return raw_addr < survivor_end_; }
+  bool IsResolved() const { return top_ == resolved_top_; }
+
+ private:
+  VirtualMemory* memory_;
+  NewPage* next_;
+
+  // The thread using this page for allocation, otherwise NULL.
+  Thread* owner_;
+
+  // The address of the next allocation. If owner is non-NULL, this value is
+  // stale and the current value is at owner->top_. Called "NEXT" in the
+  // original Cheney paper.
+  uword top_;
+
+  // The address after the last allocatable byte in this page.
+  uword end_;
+
+  // Objects below this address have survived a scavenge.
+  uword survivor_end_;
+
+  // A pointer to the first unprocessed object. Resolution completes when this
+  // value meets the allocation top. Called "SCAN" in the original Cheney paper.
+  uword resolved_top_;
+
+  template <bool>
+  friend class ScavengerVisitorBase;
+
+  DISALLOW_ALLOCATION();
+  DISALLOW_IMPLICIT_CONSTRUCTORS(NewPage);
+};
+
 template <bool parallel>
 class ScavengerVisitorBase : public ObjectPointerVisitor {
  public:
@@ -110,12 +246,7 @@
         freelist_(freelist),
         bytes_promoted_(0),
         visiting_old_object_(nullptr),
-        promoted_list_(promotion_stack),
-        labs_(8) {
-    ASSERT(labs_.length() == 0);
-    labs_.Add({0, 0, 0});
-    ASSERT(labs_.length() == 1);
-  }
+        promoted_list_(promotion_stack) {}
 
   virtual void VisitTypedDataViewPointers(TypedDataViewPtr view,
                                           ObjectPtr* first,
@@ -174,15 +305,6 @@
 
   intptr_t bytes_promoted() const { return bytes_promoted_; }
 
-  void AddNewTLAB(uword top, uword end) {
-    producer_index_++;
-    ScavengerLAB lab;
-    lab.top = top;
-    lab.end = end;
-    lab.resolved_top = top;
-    labs_.Add(lab);
-  }
-
   void ProcessRoots() {
     thread_ = Thread::Current();
     page_space_->AcquireLock(freelist_);
@@ -207,28 +329,18 @@
   inline void ProcessWeakProperties();
 
   bool HasWork() {
-    // N.B.: Normally if any TLABs have things left to resolve, then the
-    // TLAB we are allocating from (producer_index_) will too because we
-    // always immediately allocate when we switch to a new TLAB. However,
-    // this first allocation may be undone if we lose the race to install
-    // the forwarding pointer, so we must also check that there aren't
-    // any TLABs after the resolution cursor.
-    return (consumer_index_ < producer_index_) ||
-           (labs_[producer_index_].top !=
-            labs_[producer_index_].resolved_top) ||
+    return (scan_ != tail_) || (scan_ != nullptr && !scan_->IsResolved()) ||
            !promoted_list_.IsEmpty();
   }
 
   void Finalize() {
     ASSERT(!HasWork());
 
-    for (intptr_t i = 0; i <= producer_index_; i++) {
-      ASSERT(labs_[i].top <= labs_[i].end);
-      ASSERT(labs_[i].resolved_top == labs_[i].top);
+    for (NewPage* page = head_; page != nullptr; page = page->next()) {
+      ASSERT(page->IsResolved());
+      page->RecordSurvivors();
     }
 
-    MakeProducerTLABIterable();
-
     promoted_list_.Finalize();
 
     MournWeakProperties();
@@ -237,15 +349,8 @@
     thread_ = nullptr;
   }
 
-  void DonateTLABs() {
-    MutexLocker ml(&scavenger_->space_lock_);
-    // NOTE: We could make all [labs_] re-usable after a scavenge if we remember
-    // the promotion pointer of each TLAB.
-    const auto& lab = labs_[producer_index_];
-    if (lab.end == scavenger_->top_) {
-      scavenger_->top_ = lab.top;
-    }
-  }
+  NewPage* head() const { return head_; }
+  NewPage* tail() const { return tail_; }
 
  private:
   void UpdateStoreBuffer(ObjectPtr* p, ObjectPtr obj) {
@@ -281,7 +386,7 @@
     } else {
       intptr_t size = raw_obj->ptr()->HeapSize(header);
       // Check whether object should be promoted.
-      if (raw_addr >= scavenger_->survivor_end_) {
+      if (!NewPage::Of(raw_obj)->IsSurvivor(raw_addr)) {
         // Not a survivor of a previous scavenge. Just copy the object into the
         // to space.
         new_addr = TryAllocateCopy(size);
@@ -326,8 +431,6 @@
         tags = ObjectLayout::OldAndNotMarkedBit::update(!thread_->is_marking(),
                                                         tags);
         new_obj->ptr()->tags_ = tags;
-      } else {
-        ASSERT(scavenger_->to_->Contains(new_addr));
       }
 
       intptr_t cid = ObjectLayout::ClassIdTag::decode(header);
@@ -345,14 +448,10 @@
           bytes_promoted_ -= size;
         } else {
           // Undo to-space allocation.
-          ASSERT(labs_[producer_index_].top == (new_addr + size));
-          labs_[producer_index_].top = new_addr;
+          tail_->Unallocate(new_addr, size);
         }
         // Use the winner's forwarding target.
         new_addr = ForwardedAddr(header);
-        if (ObjectLayout::FromAddr(new_addr)->IsNewObject()) {
-          ASSERT(scavenger_->to_->Contains(new_addr));
-        }
       }
     }
 
@@ -366,7 +465,6 @@
       reinterpret_cast<std::atomic<ObjectPtr>*>(p)->store(
           new_obj, std::memory_order_release);
     } else {
-      ASSERT(scavenger_->to_->Contains(ObjectLayout::ToAddr(new_obj)));
       *p = new_obj;
     }
     // Update the store buffer as needed.
@@ -392,33 +490,21 @@
   DART_FORCE_INLINE
   uword TryAllocateCopy(intptr_t size) {
     ASSERT(Utils::IsAligned(size, kObjectAlignment));
-    ScavengerLAB& lab = labs_[producer_index_];
-    uword result = lab.top;
-    uword new_top = result + size;
-    if (LIKELY(new_top <= lab.end)) {
-      ASSERT(scavenger_->to_->Contains(result));
+    // TODO(rmacnak): Allocate one to start?
+    if (tail_ != nullptr) {
+      uword result = tail_->top_;
       ASSERT((result & kObjectAlignmentMask) == kNewObjectAlignmentOffset);
-      lab.top = new_top;
-      ASSERT((scavenger_->to_->Contains(new_top)) ||
-             (new_top == scavenger_->to_->end()));
-      return result;
+      uword new_top = result + size;
+      if (LIKELY(new_top <= tail_->end_)) {
+        tail_->top_ = new_top;
+        return result;
+      }
     }
     return TryAllocateCopySlow(size);
   }
 
   DART_NOINLINE inline uword TryAllocateCopySlow(intptr_t size);
 
-  void MakeProducerTLABIterable() {
-    uword top = labs_[producer_index_].top;
-    uword end = labs_[producer_index_].end;
-    intptr_t size = end - top;
-    if (size != 0) {
-      ASSERT(Utils::IsAligned(size, kObjectAlignment));
-      ForwardingCorpse::AsForwarder(top, size);
-      ASSERT(ObjectLayout::FromAddr(top)->ptr()->HeapSize() == size);
-    }
-  }
-
   inline void ProcessToSpace();
   DART_FORCE_INLINE intptr_t ProcessCopied(ObjectPtr raw_obj);
   inline void ProcessPromotedList();
@@ -436,14 +522,9 @@
   PromotionWorkList promoted_list_;
   WeakPropertyPtr delayed_weak_properties_ = nullptr;
 
-  struct ScavengerLAB {
-    uword top;
-    uword end;
-    uword resolved_top;
-  };
-  MallocGrowableArray<ScavengerLAB> labs_;
-  intptr_t consumer_index_ = 1;
-  intptr_t producer_index_ = 0;
+  NewPage* head_ = nullptr;
+  NewPage* tail_ = nullptr;  // Allocating from here.
+  NewPage* scan_ = nullptr;  // Resolving from here.
 
   DISALLOW_COPY_AND_ASSIGN(ScavengerVisitorBase);
 };
@@ -575,100 +656,153 @@
   DISALLOW_COPY_AND_ASSIGN(ParallelScavengerTask);
 };
 
-SemiSpace::SemiSpace(VirtualMemory* reserved)
-    : reserved_(reserved), region_(NULL, 0) {
-  if (reserved != NULL) {
-    region_ = MemoryRegion(reserved_->address(), reserved_->size());
-  }
-}
+SemiSpace::SemiSpace(intptr_t max_capacity_in_words)
+    : max_capacity_in_words_(max_capacity_in_words), head_(nullptr) {}
 
 SemiSpace::~SemiSpace() {
-  delete reserved_;
+  NewPage* page = head_;
+  while (page != nullptr) {
+    NewPage* next = page->next();
+    page->Deallocate();
+    page = next;
+  }
 }
 
-Mutex* SemiSpace::mutex_ = NULL;
-SemiSpace* SemiSpace::cache_ = NULL;
+// TODO(rmacnak): Unify this with old-space pages, and possibly zone segments.
+// This cache needs to be at least as big as FLAG_new_gen_semi_max_size or
+// munmap will noticably impact performance.
+static constexpr intptr_t kPageCacheCapacity = 8 * kWordSize;
+static Mutex* page_cache_mutex = nullptr;
+static VirtualMemory* page_cache[kPageCacheCapacity] = {nullptr};
+static intptr_t page_cache_size = 0;
 
 void SemiSpace::Init() {
-  if (mutex_ == NULL) {
-    mutex_ = new Mutex();
-  }
-  ASSERT(mutex_ != NULL);
+  ASSERT(page_cache_mutex == nullptr);
+  page_cache_mutex = new Mutex(NOT_IN_PRODUCT("page_cache_mutex"));
 }
 
 void SemiSpace::Cleanup() {
-  MutexLocker locker(mutex_);
-  delete cache_;
-  cache_ = NULL;
+  {
+    MutexLocker ml(page_cache_mutex);
+    ASSERT(page_cache_size >= 0);
+    ASSERT(page_cache_size <= kPageCacheCapacity);
+    while (page_cache_size > 0) {
+      delete page_cache[--page_cache_size];
+    }
+  }
+  delete page_cache_mutex;
+  page_cache_mutex = nullptr;
 }
 
-SemiSpace* SemiSpace::New(intptr_t size_in_words, const char* name) {
-  SemiSpace* result = nullptr;
+NewPage* NewPage::Allocate() {
+  const intptr_t size = kNewPageSize;
+  VirtualMemory* memory = nullptr;
   {
-    MutexLocker locker(mutex_);
-    // TODO(koda): Cache one entry per size.
-    if (cache_ != nullptr && cache_->size_in_words() == size_in_words) {
-      result = cache_;
-      cache_ = nullptr;
+    MutexLocker ml(page_cache_mutex);
+    ASSERT(page_cache_size >= 0);
+    ASSERT(page_cache_size <= kPageCacheCapacity);
+    if (page_cache_size > 0) {
+      memory = page_cache[--page_cache_size];
     }
   }
-  if (result != nullptr) {
-#ifdef DEBUG
-    result->reserved_->Protect(VirtualMemory::kReadWrite);
-#endif
-    // Initialized by generated code.
-    MSAN_UNPOISON(result->reserved_->address(), size_in_words << kWordSizeLog2);
-    return result;
+  if (memory == nullptr) {
+    const intptr_t alignment = kNewPageSize;
+    const bool is_executable = false;
+    const char* const name = Heap::RegionName(Heap::kNew);
+    memory =
+        VirtualMemory::AllocateAligned(size, alignment, is_executable, name);
+  }
+  if (memory == nullptr) {
+    // TODO(koda): We could try to recover (collect old space, wait for another
+    // isolate to finish scavenge, etc.).
+    OUT_OF_MEMORY();
   }
 
-  if (size_in_words == 0) {
-    return new SemiSpace(nullptr);
-  } else {
-    intptr_t size_in_bytes = size_in_words << kWordSizeLog2;
-    const bool kExecutable = false;
-    VirtualMemory* memory =
-        VirtualMemory::Allocate(size_in_bytes, kExecutable, name);
-    if (memory == nullptr) {
-      // TODO(koda): If cache_ is not empty, we could try to delete it.
-      return nullptr;
-    }
 #if defined(DEBUG)
-    memset(memory->address(), Heap::kZapByte, size_in_bytes);
-#endif  // defined(DEBUG)
-    // Initialized by generated code.
-    MSAN_UNPOISON(memory->address(), size_in_bytes);
-    return new SemiSpace(memory);
-  }
+  memset(memory->address(), Heap::kZapByte, size);
+#endif
+  // Initialized by generated code.
+  MSAN_UNPOISON(memory->address(), size);
+
+  NewPage* result = reinterpret_cast<NewPage*>(memory->address());
+  result->memory_ = memory;
+  result->next_ = nullptr;
+  result->owner_ = nullptr;
+  uword top = result->object_start();
+  result->top_ = top;
+  result->end_ = memory->end() - kNewObjectAlignmentOffset;
+  result->survivor_end_ = top;
+  result->resolved_top_ = top;
+
+  LSAN_REGISTER_ROOT_REGION(result, sizeof(*result));
+
+  return result;
 }
 
-void SemiSpace::Delete() {
-  if (reserved_ != nullptr) {
-    const intptr_t size_in_bytes = size_in_words() << kWordSizeLog2;
-#ifdef DEBUG
-    memset(reserved_->address(), Heap::kZapByte, size_in_bytes);
-    reserved_->Protect(VirtualMemory::kNoAccess);
-#endif
-    MSAN_POISON(reserved_->address(), size_in_bytes);
-  }
-  SemiSpace* old_cache = nullptr;
+void NewPage::Deallocate() {
+  LSAN_UNREGISTER_ROOT_REGION(this, sizeof(*this));
+
+  VirtualMemory* memory = memory_;
   {
-    MutexLocker locker(mutex_);
-    old_cache = cache_;
-    cache_ = this;
+    MutexLocker ml(page_cache_mutex);
+    ASSERT(page_cache_size >= 0);
+    ASSERT(page_cache_size <= kPageCacheCapacity);
+    if (page_cache_size < kPageCacheCapacity) {
+      intptr_t size = memory->size();
+#if defined(DEBUG)
+      memset(memory->address(), Heap::kZapByte, size);
+#endif
+      MSAN_POISON(memory->address(), size);
+      page_cache[page_cache_size++] = memory;
+      memory = nullptr;
+    }
   }
-  // TODO(rmacnak): This can take an order of magnitude longer the rest of
-  // a scavenge. Consider moving it to another thread, perhaps the idle
-  // notifier.
-  delete old_cache;
+  delete memory;
+}
+
+NewPage* SemiSpace::TryAllocatePageLocked(bool link) {
+  if (capacity_in_words_ >= max_capacity_in_words_) {
+    return nullptr;  // Full.
+  }
+  NewPage* page = NewPage::Allocate();
+  capacity_in_words_ += kNewPageSizeInWords;
+  if (link) {
+    if (head_ == nullptr) {
+      head_ = tail_ = page;
+    } else {
+      tail_->set_next(page);
+      tail_ = page;
+    }
+  }
+  return page;
+}
+
+bool SemiSpace::Contains(uword addr) const {
+  for (NewPage* page = head_; page != nullptr; page = page->next()) {
+    if (page->Contains(addr)) return true;
+  }
+  return false;
 }
 
 void SemiSpace::WriteProtect(bool read_only) {
-  if (reserved_ != NULL) {
-    reserved_->Protect(read_only ? VirtualMemory::kReadOnly
-                                 : VirtualMemory::kReadWrite);
+  for (NewPage* page = head_; page != nullptr; page = page->next()) {
+    page->WriteProtect(read_only);
   }
 }
 
+void SemiSpace::AddList(NewPage* head, NewPage* tail) {
+  if (head == nullptr) {
+    return;
+  }
+  if (head_ == nullptr) {
+    head_ = head;
+    tail_ = tail;
+    return;
+  }
+  tail_->set_next(head);
+  tail_ = tail;
+}
+
 // The initial estimate of how many words we can scavenge per microsecond (usage
 // before / scavenge time). This is a conservative value observed running
 // Flutter on a Nexus 4. After the first scavenge, we instead use a value based
@@ -693,17 +827,7 @@
   const intptr_t initial_semi_capacity_in_words = Utils::Minimum(
       max_semi_capacity_in_words, FLAG_new_gen_semi_initial_size * MBInWords);
 
-  const char* name = Heap::RegionName(Heap::kNew);
-  to_ = SemiSpace::New(initial_semi_capacity_in_words, name);
-  if (to_ == NULL) {
-    OUT_OF_MEMORY();
-  }
-  // Setup local fields.
-  top_ = FirstObjectStart();
-  resolved_top_ = top_;
-  end_ = to_->end();
-
-  survivor_end_ = FirstObjectStart();
+  to_ = new SemiSpace(initial_semi_capacity_in_words);
   idle_scavenge_threshold_in_words_ = initial_semi_capacity_in_words;
 
   UpdateMaxHeapCapacity();
@@ -712,7 +836,7 @@
 
 Scavenger::~Scavenger() {
   ASSERT(!scavenging_);
-  to_->Delete();
+  delete to_;
 }
 
 intptr_t Scavenger::NewSizeInWords(intptr_t old_size_in_words) const {
@@ -838,20 +962,8 @@
   // objects.
   SemiSpace* from = to_;
 
-  const char* name = Heap::RegionName(Heap::kNew);
-  to_ = SemiSpace::New(NewSizeInWords(from->size_in_words()), name);
-  if (to_ == NULL) {
-    // TODO(koda): We could try to recover (collect old space, wait for another
-    // isolate to finish scavenge, etc.).
-    OUT_OF_MEMORY();
-  }
+  to_ = new SemiSpace(NewSizeInWords(from->max_capacity_in_words()));
   UpdateMaxHeapCapacity();
-  {
-    MutexLocker ml(&space_lock_);
-    top_ = FirstObjectStart();
-    resolved_top_ = top_;
-    end_ = to_->end();
-  }
 
   return from;
 }
@@ -861,20 +973,26 @@
 
   // All objects in the to space have been copied from the from space at this
   // moment.
+
+  // Ensure the mutator thread will fail the next allocation. This will force
+  // mutator to allocate a new TLAB
+#if defined(DEBUG)
+  heap_->isolate_group()->ForEachIsolate(
+      [&](Isolate* isolate) {
+        Thread* mutator_thread = isolate->mutator_thread();
+        ASSERT(mutator_thread == nullptr || mutator_thread->top() == 0);
+      },
+      /*at_safepoint=*/true);
+#endif  // DEBUG
+
   double avg_frac = stats_history_.Get(0).PromoCandidatesSuccessFraction();
   if (stats_history_.Size() >= 2) {
     // Previous scavenge is only given half as much weight.
     avg_frac += 0.5 * stats_history_.Get(1).PromoCandidatesSuccessFraction();
     avg_frac /= 1.0 + 0.5;  // Normalize.
   }
-  if (avg_frac < (FLAG_early_tenuring_threshold / 100.0)) {
-    // Remember the limit to which objects have been copied.
-    survivor_end_ = top_;
-  } else {
-    // Move survivor end to the end of the to_ space, making all surviving
-    // objects candidates for promotion next time.
-    survivor_end_ = end_;
-  }
+
+  early_tenure_ = avg_frac >= (FLAG_early_tenuring_threshold / 100.0);
 
   // Update estimate of scavenger speed. This statistic assumes survivorship
   // rates don't change much.
@@ -930,7 +1048,7 @@
     OS::PrintErr(" done.\n");
   }
 
-  from->Delete();
+  delete from;
   UpdateMaxHeapUsage();
   if (heap_ != NULL) {
     heap_->UpdateGlobalMaxUsed();
@@ -1078,22 +1196,20 @@
 
 template <bool parallel>
 void ScavengerVisitorBase<parallel>::ProcessToSpace() {
-  intptr_t i = consumer_index_;
-  while (i <= producer_index_) {
-    uword resolved_top = labs_[i].resolved_top;
-    while (resolved_top < labs_[i].top) {
+  while (scan_ != nullptr) {
+    uword resolved_top = scan_->resolved_top_;
+    while (resolved_top < scan_->top_) {
       ObjectPtr raw_obj = ObjectLayout::FromAddr(resolved_top);
       resolved_top += ProcessCopied(raw_obj);
     }
-    labs_[i].resolved_top = resolved_top;
+    scan_->resolved_top_ = resolved_top;
 
-    if (i == producer_index_) {
-      return;  // More objects may yet be copied to this TLAB.
+    NewPage* next = scan_->next();
+    if (next == nullptr) {
+      // Don't update scan_. More objects may yet be copied to this TLAB.
+      return;
     }
-
-    i++;
-    consumer_index_ = i;
-    ASSERT(consumer_index_ < labs_.length());
+    scan_ = next;
   }
 }
 
@@ -1162,8 +1278,8 @@
   ASSERT(heap_ != NULL);
   auto isolate_group = heap_->isolate_group();
   ASSERT(isolate_group != NULL);
-  isolate_group->GetHeapNewCapacityMaxMetric()->SetValue(to_->size_in_words() *
-                                                         kWordSize);
+  isolate_group->GetHeapNewCapacityMaxMetric()->SetValue(
+      to_->max_capacity_in_words() * kWordSize);
 #endif  // !defined(PRODUCT)
 }
 
@@ -1299,81 +1415,35 @@
   }
 }
 
-void Scavenger::MakeNewSpaceIterable() {
+void Scavenger::VisitObjectPointers(ObjectPointerVisitor* visitor) const {
   ASSERT(Thread::Current()->IsAtSafepoint() ||
          (Thread::Current()->task_kind() == Thread::kMarkerTask) ||
          (Thread::Current()->task_kind() == Thread::kCompactorTask));
-  auto isolate_group = heap_->isolate_group();
-  MonitorLocker ml(isolate_group->threads_lock(), false);
-
-  // Make all scheduled thread's TLABs iterable.
-  Thread* current = heap_->isolate_group()->thread_registry()->active_list();
-  while (current != NULL) {
-    const TLAB tlab = current->tlab();
-    if (!tlab.IsAbandoned()) {
-      MakeTLABIterable(tlab);
-    }
-    current = current->next();
-  }
-
-  for (intptr_t i = 0; i < free_tlabs_.length(); ++i) {
-    MakeTLABIterable(free_tlabs_[i]);
+  for (NewPage* page = to_->head(); page != nullptr; page = page->next()) {
+    page->VisitObjectPointers(visitor);
   }
 }
 
-void Scavenger::AbandonTLABsLocked() {
-  ASSERT(Thread::Current()->IsAtSafepoint());
-  IsolateGroup* isolate_group = heap_->isolate_group();
-  MonitorLocker ml(isolate_group->threads_lock(), false);
-
-  // Abandon TLABs of all scheduled threads.
-  Thread* current = isolate_group->thread_registry()->active_list();
-  while (current != NULL) {
-    const TLAB tlab = current->tlab();
-    AddAbandonedInBytesLocked(tlab.RemainingSize());
-    current->set_tlab(TLAB());
-    current = current->next();
-  }
-  while (free_tlabs_.length() > 0) {
-    const TLAB tlab = free_tlabs_.RemoveLast();
-    AddAbandonedInBytesLocked(tlab.RemainingSize());
-  }
-}
-
-void Scavenger::VisitObjectPointers(ObjectPointerVisitor* visitor) {
-  ASSERT(Thread::Current()->IsAtSafepoint() ||
-         (Thread::Current()->task_kind() == Thread::kMarkerTask) ||
-         (Thread::Current()->task_kind() == Thread::kCompactorTask));
-  MakeNewSpaceIterable();
-  uword cur = FirstObjectStart();
-  while (cur < top_) {
-    ObjectPtr raw_obj = ObjectLayout::FromAddr(cur);
-    cur += raw_obj->ptr()->VisitPointers(visitor);
-  }
-}
-
-void Scavenger::VisitObjects(ObjectVisitor* visitor) {
+void Scavenger::VisitObjects(ObjectVisitor* visitor) const {
   ASSERT(Thread::Current()->IsAtSafepoint() ||
          (Thread::Current()->task_kind() == Thread::kMarkerTask));
-  MakeNewSpaceIterable();
-  uword cur = FirstObjectStart();
-  while (cur < top_) {
-    ObjectPtr raw_obj = ObjectLayout::FromAddr(cur);
-    visitor->VisitObject(raw_obj);
-    cur += raw_obj->ptr()->HeapSize();
+  for (NewPage* page = to_->head(); page != nullptr; page = page->next()) {
+    page->VisitObjects(visitor);
   }
 }
 
 void Scavenger::AddRegionsToObjectSet(ObjectSet* set) const {
-  set->AddRegion(to_->start(), to_->end());
+  for (NewPage* page = to_->head(); page != nullptr; page = page->next()) {
+    set->AddRegion(page->start(), page->end());
+  }
 }
 
 ObjectPtr Scavenger::FindObject(FindObjectVisitor* visitor) {
   ASSERT(!scavenging_);
-  MakeNewSpaceIterable();
-  uword cur = FirstObjectStart();
-  if (visitor->VisitRange(cur, top_)) {
-    while (cur < top_) {
+  for (NewPage* page = to_->head(); page != nullptr; page = page->next()) {
+    uword cur = page->object_start();
+    if (!visitor->VisitRange(cur, page->object_end())) continue;
+    while (cur < page->object_end()) {
       ObjectPtr raw_obj = ObjectLayout::FromAddr(cur);
       uword next = cur + raw_obj->ptr()->HeapSize();
       if (visitor->VisitRange(cur, next) &&
@@ -1382,131 +1452,77 @@
       }
       cur = next;
     }
-    ASSERT(cur == top_);
+    ASSERT(cur == page->object_end());
   }
   return Object::null();
 }
 
-void Scavenger::TryAllocateNewTLAB(Thread* thread) {
+void Scavenger::TryAllocateNewTLAB(Thread* thread, intptr_t min_size) {
   ASSERT(heap_ != Dart::vm_isolate()->heap());
   ASSERT(!scavenging_);
+
+  AbandonRemainingTLAB(thread);
+
   MutexLocker ml(&space_lock_);
-
-  // We might need a new TLAB not because the current TLAB is empty but because
-  // we failed to allocate alarge object in new space.  So in case the remaining
-  // TLAB is still big enough to be useful we cache it.
-  CacheTLABLocked(thread->tlab());
-  thread->set_tlab(TLAB());
-
-  uword result = top_;
-  intptr_t remaining = end_ - top_;
-  intptr_t size = kTLABSize;
-  if (remaining < size) {
-    // Grab whatever is remaining
-    size = Utils::RoundDown(remaining, kObjectAlignment);
+  for (NewPage* page = to_->head(); page != nullptr; page = page->next()) {
+    if (page->owner() != nullptr) continue;
+    intptr_t available = page->end() - page->object_end();
+    if (available >= min_size) {
+      page->Acquire(thread);
+      return;
+    }
   }
-  ASSERT(Utils::IsAligned(size, kObjectAlignment));
-  if (size == 0) {
-    thread->set_tlab(TryAcquireCachedTLABLocked());
+
+  NewPage* page = to_->TryAllocatePageLocked(true);
+  if (page == nullptr) {
     return;
   }
-  ASSERT(to_->Contains(result));
-  ASSERT((result & kObjectAlignmentMask) == kNewObjectAlignmentOffset);
-  top_ += size;
-  ASSERT(to_->Contains(top_) || (top_ == to_->end()));
-  ASSERT(result < top_);
-  thread->set_tlab(TLAB(result, top_));
-}
-
-void Scavenger::MakeTLABIterable(const TLAB& tlab) {
-  ASSERT(tlab.end >= tlab.top);
-  const intptr_t size = tlab.RemainingSize();
-  ASSERT(Utils::IsAligned(size, kObjectAlignment));
-  if (size >= kObjectAlignment) {
-    // ForwardingCorpse(forwarding to default null) will work as filler.
-    ForwardingCorpse::AsForwarder(tlab.top, size);
-    ASSERT(ObjectLayout::FromAddr(tlab.top)->ptr()->HeapSize() == size);
-  }
+  page->Acquire(thread);
 }
 
 void Scavenger::AbandonRemainingTLABForDebugging(Thread* thread) {
-  MutexLocker ml(&space_lock_);
-  const TLAB tlab = thread->tlab();
-  MakeTLABIterable(tlab);
-  AddAbandonedInBytesLocked(tlab.RemainingSize());
-  thread->set_tlab(TLAB());
+  // Allocate any remaining space so the TLAB won't be reused. Write a filler
+  // object so it remains iterable.
+  uword top = thread->top();
+  intptr_t size = thread->end() - thread->top();
+  if (size > 0) {
+    thread->set_top(top + size);
+    ForwardingCorpse::AsForwarder(top, size);
+  }
+
+  AbandonRemainingTLAB(thread);
+}
+
+void Scavenger::AbandonRemainingTLAB(Thread* thread) {
+  if (thread->top() == 0) return;
+  NewPage* page = NewPage::Of(thread->top() - 1);
+  {
+    MutexLocker ml(&space_lock_);
+    page->Release(thread);
+  }
+  ASSERT(thread->top() == 0);
 }
 
 template <bool parallel>
 uword ScavengerVisitorBase<parallel>::TryAllocateCopySlow(intptr_t size) {
-  MakeProducerTLABIterable();
-
-  if (!scavenger_->TryAllocateNewTLAB(this)) {
+  NewPage* page;
+  {
+    MutexLocker ml(&scavenger_->space_lock_);
+    page = scavenger_->to_->TryAllocatePageLocked(false);
+  }
+  if (page == nullptr) {
     return 0;
   }
 
-  const uword result = labs_[producer_index_].top;
-  const intptr_t remaining =
-      labs_[producer_index_].end - labs_[producer_index_].top;
-  ASSERT(size <= remaining);
-  ASSERT(scavenger_->to_->Contains(result));
-  ASSERT((result & kObjectAlignmentMask) == kNewObjectAlignmentOffset);
-  labs_[producer_index_].top = result + size;
-  return result;
-}
-
-template <bool parallel>
-bool Scavenger::TryAllocateNewTLAB(ScavengerVisitorBase<parallel>* visitor) {
-  intptr_t size = kTLABSize;
-  ASSERT(Utils::IsAligned(size, kObjectAlignment));
-  ASSERT(heap_ != Dart::vm_isolate()->heap());
-  ASSERT(scavenging_);
-  MutexLocker ml(&space_lock_);
-  const uword result = top_;
-  const intptr_t remaining = end_ - top_;
-  if (remaining < size) {
-    // Grab whatever is remaining
-    size = Utils::RoundDown(remaining, kObjectAlignment);
+  if (head_ == nullptr) {
+    head_ = scan_ = page;
+  } else {
+    ASSERT(scan_ != nullptr);
+    tail_->set_next(page);
   }
-  if (size == 0) {
-    return false;
-  }
-  ASSERT(to_->Contains(result));
-  ASSERT((result & kObjectAlignmentMask) == kNewObjectAlignmentOffset);
-  top_ += size;
-  ASSERT(to_->Contains(top_) || (top_ == to_->end()));
-  ASSERT(result < top_);
-  visitor->AddNewTLAB(result, top_);
-  return true;
-}
+  tail_ = page;
 
-TLAB Scavenger::TryAcquireCachedTLABLocked() {
-  if (free_tlabs_.length() == 0) {
-    return TLAB();
-  }
-  return free_tlabs_.RemoveLast();
-}
-
-void Scavenger::CacheTLABLocked(TLAB tlab) {
-  // If the memory following this TLAB is the unused new space, we'll merge the
-  // bytes into there.
-  if (tlab.end == top_) {
-    top_ = tlab.top;
-    return;
-  }
-
-  MakeTLABIterable(tlab);
-
-  // If this TLAB is lare enough to be useful in the future, we'll make it
-  // reusable, otherwise we abandon it.
-  const uword size = tlab.RemainingSize();
-  if (size > (50 * KB)) {
-    free_tlabs_.Add(tlab);
-    return;
-  }
-
-  // Else we discard the memory.
-  AddAbandonedInBytesLocked(size);
+  return tail_->TryAllocateGC(size);
 }
 
 void Scavenger::Scavenge() {
@@ -1535,13 +1551,18 @@
   }
 
   // Prepare for a scavenge.
-  AbandonTLABsLocked();
   failed_to_promote_ = false;
   root_slices_started_ = 0;
-  intptr_t abandoned_bytes = GetAndResetAbandonedInBytes();
+  intptr_t abandoned_bytes = 0;  // TODO(rmacnak): Count fragmentation?
   SpaceUsage usage_before = GetCurrentUsage();
-  intptr_t promo_candidate_words =
-      (survivor_end_ - FirstObjectStart()) / kWordSize;
+  intptr_t promo_candidate_words = 0;
+  for (NewPage* page = to_->head(); page != nullptr; page = page->next()) {
+    page->Release();
+    if (early_tenure_) {
+      page->EarlyTenure();
+    }
+    promo_candidate_words += page->promo_candidate_words();
+  }
   SemiSpace* from = Prologue();
 
   intptr_t bytes_promoted;
@@ -1585,8 +1606,8 @@
     visitor.ProcessAll();
   }
   visitor.Finalize();
-  visitor.DonateTLABs();
 
+  to_->AddList(visitor.head(), visitor.tail());
   return visitor.bytes_promoted();
 }
 
@@ -1619,8 +1640,8 @@
   }
 
   for (intptr_t i = 0; i < num_tasks; i++) {
+    to_->AddList(visitors[i]->head(), visitors[i]->tail());
     bytes_promoted += visitors[i]->bytes_promoted();
-    visitors[i]->DonateTLABs();
     delete visitors[i];
   }
 
@@ -1681,7 +1702,7 @@
   SafepointOperationScope scope(Thread::Current());
 
   // Forces the next scavenge to promote all the objects in the new space.
-  survivor_end_ = top_;
+  early_tenure_ = true;
 
   Scavenge();
 
diff --git a/runtime/vm/heap/scavenger.h b/runtime/vm/heap/scavenger.h
index 6358289..56baac3 100644
--- a/runtime/vm/heap/scavenger.h
+++ b/runtime/vm/heap/scavenger.h
@@ -12,7 +12,6 @@
 #include "vm/flags.h"
 #include "vm/globals.h"
 #include "vm/heap/spaces.h"
-#include "vm/heap/tlab.h"
 #include "vm/lockers.h"
 #include "vm/raw_object.h"
 #include "vm/ring_buffer.h"
@@ -25,47 +24,40 @@
 class Heap;
 class Isolate;
 class JSONObject;
+class NewPage;
 class ObjectSet;
 template <bool parallel>
 class ScavengerVisitorBase;
 
-// Wrapper around VirtualMemory that adds caching and handles the empty case.
 class SemiSpace {
  public:
   static void Init();
   static void Cleanup();
 
-  // Get a space of the given size. Returns NULL on out of memory. If size is 0,
-  // returns an empty space: pointer(), start() and end() all return NULL.
-  // The name parameter may be NULL. If non-NULL it is ued to give the OS a name
-  // for the underlying virtual memory region.
-  static SemiSpace* New(intptr_t size_in_words, const char* name);
-
-  // Hand back an unused space.
-  void Delete();
-
-  void* pointer() const { return region_.pointer(); }
-  uword start() const { return region_.start(); }
-  uword end() const { return region_.end(); }
-  intptr_t size_in_words() const {
-    return static_cast<intptr_t>(region_.size()) >> kWordSizeLog2;
-  }
-  bool Contains(uword address) const { return region_.Contains(address); }
-
-  // Set write protection mode for this space. The space must not be protected
-  // when Delete is called.
-  // TODO(koda): Remember protection mode in VirtualMemory and assert this.
-  void WriteProtect(bool read_only);
-
- private:
-  explicit SemiSpace(VirtualMemory* reserved);
+  explicit SemiSpace(intptr_t max_capacity_in_words);
   ~SemiSpace();
 
-  VirtualMemory* reserved_;  // NULL for an empty space.
-  MemoryRegion region_;
+  NewPage* TryAllocatePageLocked(bool link);
 
-  static SemiSpace* cache_;
-  static Mutex* mutex_;
+  bool Contains(uword addr) const;
+  void WriteProtect(bool read_only);
+
+  intptr_t capacity_in_words() const { return capacity_in_words_; }
+  intptr_t max_capacity_in_words() const { return max_capacity_in_words_; }
+
+  NewPage* head() const { return head_; }
+
+  void AddList(NewPage* head, NewPage* tail);
+
+ private:
+  // Size of NewPages in this semi-space.
+  intptr_t capacity_in_words_ = 0;
+
+  // Size of NewPages before we trigger a scavenge.
+  intptr_t max_capacity_in_words_;
+
+  NewPage* head_ = nullptr;
+  NewPage* tail_ = nullptr;
 };
 
 // Statistics for a particular scavenge.
@@ -137,28 +129,11 @@
     if (LIKELY(addr != 0)) {
       return addr;
     }
-    TryAllocateNewTLAB(thread);
+    TryAllocateNewTLAB(thread, size);
     return TryAllocateFromTLAB(thread, size);
   }
-  void MakeTLABIterable(const TLAB& tlab);
+  void AbandonRemainingTLAB(Thread* thread);
   void AbandonRemainingTLABForDebugging(Thread* thread);
-  template <bool parallel>
-  bool TryAllocateNewTLAB(ScavengerVisitorBase<parallel>* visitor);
-
-  // When a thread gets scheduled it will try to acquire a TLAB.
-  void TryAcquireCachedTLAB(Thread* thread) {
-    MutexLocker ml(&space_lock_);
-    thread->set_tlab(TryAcquireCachedTLABLocked());
-  }
-  TLAB TryAcquireCachedTLABLocked();
-
-  // When a thread gets unscheduled it will release it's TLAB.
-  void ReleaseAndCacheTLAB(Thread* thread) {
-    MutexLocker ml(&space_lock_);
-    CacheTLABLocked(thread->tlab());
-    thread->set_tlab(TLAB());
-  }
-  void CacheTLABLocked(TLAB tlab);
 
   // Collect the garbage in this scavenger.
   void Scavenge();
@@ -166,23 +141,11 @@
   // Promote all live objects.
   void Evacuate();
 
-  // Report (TLAB) abandoned bytes that should be taken account when
-  // deciding whether to grow new space or not.
-  void AddAbandonedInBytes(intptr_t value) {
-    MutexLocker ml(&space_lock_);
-    AddAbandonedInBytesLocked(value);
-  }
-  int64_t GetAndResetAbandonedInBytes() {
-    int64_t result = abandoned_;
-    abandoned_ = 0;
-    return result;
-  }
-
   int64_t UsedInWords() const {
     MutexLocker ml(&space_lock_);
-    return (top_ - FirstObjectStart()) >> kWordSizeLog2;
+    return to_->capacity_in_words();
   }
-  int64_t CapacityInWords() const { return to_->size_in_words(); }
+  int64_t CapacityInWords() const { return to_->max_capacity_in_words(); }
   int64_t ExternalInWords() const { return external_size_ >> kWordSizeLog2; }
   SpaceUsage GetCurrentUsage() const {
     SpaceUsage usage;
@@ -192,8 +155,8 @@
     return usage;
   }
 
-  void VisitObjects(ObjectVisitor* visitor);
-  void VisitObjectPointers(ObjectPointerVisitor* visitor);
+  void VisitObjects(ObjectVisitor* visitor) const;
+  void VisitObjectPointers(ObjectPointerVisitor* visitor) const;
 
   void AddRegionsToObjectSet(ObjectSet* set) const;
 
@@ -232,8 +195,6 @@
   bool scavenging() const { return scavenging_; }
 
  private:
-  static const intptr_t kTLABSize = 512 * KB;
-
   // Ids for time and data records in Heap::GCStats.
   enum {
     // Time
@@ -253,27 +214,20 @@
   uword TryAllocateFromTLAB(Thread* thread, intptr_t size) {
     ASSERT(Utils::IsAligned(size, kObjectAlignment));
     ASSERT(heap_ != Dart::vm_isolate()->heap());
-    TLAB tlab = thread->tlab();
-    const intptr_t remaining = tlab.RemainingSize();
+
+    const uword result = thread->top();
+    const intptr_t remaining = thread->end() - result;
     if (UNLIKELY(remaining < size)) {
       return 0;
     }
 
-    const uword result = tlab.top;
     ASSERT(to_->Contains(result));
     ASSERT((result & kObjectAlignmentMask) == kNewObjectAlignmentOffset);
-    const uword new_top = tlab.top + size;
-    ASSERT(to_->Contains(new_top) || new_top == to_->end());
-    thread->set_tlab(tlab.BumpAllocate(size));
+    thread->set_top(result + size);
     return result;
   }
-  void TryAllocateNewTLAB(Thread* thread);
-  void AddAbandonedInBytesLocked(intptr_t value) { abandoned_ += value; }
-  void AbandonTLABsLocked();
+  void TryAllocateNewTLAB(Thread* thread, intptr_t size);
 
-  uword FirstObjectStart() const {
-    return to_->start() + kNewObjectAlignmentOffset;
-  }
   SemiSpace* Prologue();
   intptr_t ParallelScavenge(SemiSpace* from);
   intptr_t SerialScavenge(SemiSpace* from);
@@ -299,26 +253,9 @@
 
   intptr_t NewSizeInWords(intptr_t old_size_in_words) const;
 
-  uword top_;
-  uword end_;
-
-  MallocGrowableArray<TLAB> abandoned_tlabs_;
-  MallocGrowableArray<TLAB> free_tlabs_;
-
-  SemiSpace* to_;
-
   Heap* heap_;
 
-  // A pointer to the first unscanned object.  Scanning completes when
-  // this value meets the allocation top.
-  uword resolved_top_;
-
-  // Objects below this address have survived a scavenge.
-  uword survivor_end_;
-
-  // Abandoned (TLAB) bytes that need to be accounted for when deciding
-  // whether to grow newspace or not.
-  intptr_t abandoned_ = 0;
+  SemiSpace* to_;
 
   PromotionStack promotion_stack_;
 
@@ -326,6 +263,7 @@
 
   // Keep track whether a scavenge is currently running.
   bool scavenging_;
+  bool early_tenure_ = false;
   RelaxedAtomic<intptr_t> root_slices_started_;
   StoreBufferBlock* blocks_;
 
diff --git a/runtime/vm/heap/tlab.h b/runtime/vm/heap/tlab.h
deleted file mode 100644
index d186831..0000000
--- a/runtime/vm/heap/tlab.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2020, 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.
-
-#ifndef RUNTIME_VM_HEAP_TLAB_H_
-#define RUNTIME_VM_HEAP_TLAB_H_
-
-#include "platform/assert.h"
-#include "platform/globals.h"
-
-namespace dart {
-
-struct TLAB {
-  TLAB() : top(0), end(0) {}
-  TLAB(uword top, uword end) : top(top), end(end) {}
-  TLAB(const TLAB& other) : top(other.top), end(other.end) {}
-  TLAB& operator=(const TLAB& other) {
-    top = other.top;
-    end = other.end;
-    return *this;
-  }
-
-  intptr_t RemainingSize() const { return end - top; }
-  bool IsAbandoned() const { return top == 0 && end == 0; }
-
-  TLAB BumpAllocate(intptr_t size) const {
-    ASSERT(RemainingSize() >= size);
-    return TLAB(top + size, end);
-  }
-
-  uword top;
-  uword end;
-};
-
-}  // namespace dart
-
-#endif  // RUNTIME_VM_HEAP_TLAB_H_
diff --git a/runtime/vm/image_snapshot.cc b/runtime/vm/image_snapshot.cc
index ebdd6dd..566f596 100644
--- a/runtime/vm/image_snapshot.cc
+++ b/runtime/vm/image_snapshot.cc
@@ -1081,6 +1081,9 @@
   intptr_t debug_segment_base = 0;
   if (debug_dwarf_ != nullptr) {
     debug_segment_base = debug_dwarf_->elf()->NextMemoryOffset();
+    // If we're also generating an ELF snapshot, we want the virtual addresses
+    // in it and the separately saved DWARF information to match.
+    ASSERT(elf_ == nullptr || segment_base == debug_segment_base);
   }
 #endif
 
@@ -1309,9 +1312,9 @@
     ASSERT(segment_base == segment_base2);
   }
   if (debug_dwarf_ != nullptr) {
-    auto const debug_segment_base2 = debug_dwarf_->elf()->AddText(
-        instructions_symbol, instructions_blob_stream_.buffer(),
-        instructions_blob_stream_.bytes_written());
+    auto const debug_segment_base2 =
+        debug_dwarf_->elf()->AddText(instructions_symbol, nullptr,
+                                     instructions_blob_stream_.bytes_written());
     ASSERT(debug_segment_base == debug_segment_base2);
   }
 #endif
diff --git a/runtime/vm/interpreter.cc b/runtime/vm/interpreter.cc
index c31b7da..a48d019 100644
--- a/runtime/vm/interpreter.cc
+++ b/runtime/vm/interpreter.cc
@@ -272,18 +272,17 @@
   ASSERT(instance_size > 0);
   ASSERT(Utils::IsAligned(instance_size, kObjectAlignment));
 
-  const TLAB tlab = thread->tlab();
 #ifndef PRODUCT
   auto table = thread->isolate_group()->shared_class_table();
   if (UNLIKELY(table->TraceAllocationFor(class_id))) {
     return false;
   }
 #endif
-  const intptr_t remaining = tlab.RemainingSize();
+  const uword top = thread->top();
+  const intptr_t remaining = thread->end() - top;
   if (LIKELY(remaining >= instance_size)) {
-    const uword old_top = tlab.top;
-    thread->set_tlab(tlab.BumpAllocate(instance_size));
-    *result = InitializeHeader(old_top, class_id, instance_size);
+    thread->set_top(top + instance_size);
+    *result = InitializeHeader(top, class_id, instance_size);
     return true;
   }
   return false;
diff --git a/runtime/vm/intrusive_dlist.h b/runtime/vm/intrusive_dlist.h
index 421726d64..43acaee 100644
--- a/runtime/vm/intrusive_dlist.h
+++ b/runtime/vm/intrusive_dlist.h
@@ -227,6 +227,30 @@
     return next;
   }
 
+  bool ContainsForDebugging(const T* a) {
+    for (auto entry : *this) {
+      if (entry == a) return true;
+    }
+    return false;
+  }
+
+  void AppendList(IntrusiveDList<T, N>* other) {
+    if (other->IsEmpty()) return;
+
+    auto other_first = other->head_.Next();
+    auto other_last = other->head_.Prev();
+    other->head_.next_ = &other->head_;
+    other->head_.prev_ = &other->head_;
+
+    auto prev = head_.prev_;
+
+    prev->next_ = other_first;
+    other_first->prev_ = prev;
+
+    other_last->next_ = &head_;
+    head_.prev_ = other_last;
+  }
+
  private:
   Entry head_;
 
diff --git a/runtime/vm/intrusive_dlist_test.cc b/runtime/vm/intrusive_dlist_test.cc
index fdf72c0..041791b 100644
--- a/runtime/vm/intrusive_dlist_test.cc
+++ b/runtime/vm/intrusive_dlist_test.cc
@@ -152,4 +152,58 @@
   EXPECT(all.IsEmpty());
 }
 
+UNIT_TEST_CASE(IntrusiveDListAppendListTest) {
+  // Append to empty list.
+  {
+    IntrusiveDList<Item> all;
+    IntrusiveDList<Item> other;
+
+    Item a1(1, 11), a2(2, 12);
+    all.Append(&a1);
+    all.Append(&a2);
+
+    other.AppendList(&all);
+
+    EXPECT(all.IsEmpty());
+    EXPECT(!other.IsEmpty());
+    EXPECT_EQ(&a1, other.First());
+    EXPECT_EQ(&a2, other.Last());
+
+    auto it = other.Begin();
+    EXPECT_EQ(&a1, *it);
+    it = other.Erase(it);
+    EXPECT_EQ(&a2, *it);
+    it = other.Erase(it);
+    EXPECT(it == other.end());
+  }
+  // Append to non-empty list.
+  {
+    IntrusiveDList<Item> all;
+    IntrusiveDList<Item> other;
+
+    Item a1(1, 11), a2(2, 12);
+    all.Append(&a1);
+    all.Append(&a2);
+
+    Item o1(1, 11);
+    other.Append(&o1);
+
+    other.AppendList(&all);
+
+    EXPECT(all.IsEmpty());
+    EXPECT(!other.IsEmpty());
+    EXPECT_EQ(&o1, other.First());
+    EXPECT_EQ(&a2, other.Last());
+
+    auto it = other.Begin();
+    EXPECT_EQ(&o1, *it);
+    it = other.Erase(it);
+    EXPECT_EQ(&a1, *it);
+    it = other.Erase(it);
+    EXPECT_EQ(&a2, *it);
+    it = other.Erase(it);
+    EXPECT(it == other.end());
+  }
+}
+
 }  // namespace dart.
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index b8f886b..ccca676 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -88,6 +88,16 @@
                     deterministic,
                     "Enable deterministic mode.");
 
+int FLAG_null_safety = kNullSafetyOptionUnspecified;
+static void NullSafetyHandler(bool value) {
+  FLAG_null_safety = value ? kNullSafetyOptionStrong : kNullSafetyOptionWeak;
+}
+
+DEFINE_FLAG_HANDLER(
+    NullSafetyHandler,
+    null_safety,
+    "Respect the nullability of types in casts and instance checks.");
+
 // Quick access to the locally defined thread() and isolate() methods.
 #define T (thread())
 #define I (isolate())
@@ -422,8 +432,6 @@
     os_thread->set_thread(thread);
     Thread::SetCurrent(thread);
     os_thread->EnableThreadInterrupts();
-
-    thread->heap()->new_space()->TryAcquireCachedTLAB(thread);
   }
   return thread;
 }
@@ -432,7 +440,7 @@
                                           Thread* thread,
                                           bool is_mutator,
                                           bool bypass_safepoint) {
-  thread->heap()->new_space()->ReleaseAndCacheTLAB(thread);
+  thread->heap()->new_space()->AbandonRemainingTLAB(thread);
 
   // Clear since GC will not visit the thread once it is unscheduled. Do this
   // under the thread lock to prevent races with the GC visiting thread roots.
@@ -1600,13 +1608,27 @@
   isolate_group->RegisterIsolate(result);
 
   if (ServiceIsolate::NameEquals(name_prefix)) {
+    // For now the service isolate always runs in weak mode.
+    result->set_null_safety(false);
     ASSERT(!ServiceIsolate::Exists());
     ServiceIsolate::SetServiceIsolate(result);
 #if !defined(DART_PRECOMPILED_RUNTIME)
   } else if (KernelIsolate::NameEquals(name_prefix)) {
+    // For now the kernel isolate always runs in weak mode.
+    result->set_null_safety(false);
     ASSERT(!KernelIsolate::Exists());
     KernelIsolate::SetKernelIsolate(result);
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
+  } else if (FLAG_null_safety != kNullSafetyOptionUnspecified) {
+    // If the null-safety option is specified on the command line then
+    // use the value specified on the command line, if the dill file being
+    // loaded is in a different mode than that specified on the command line
+    // we will get an error during kernel file loading.
+    result->set_null_safety(FLAG_null_safety == kNullSafetyOptionStrong);
+#if !defined(DART_PRECOMPILED_RUNTIME)
+  } else if (!KernelIsolate::GetExperimentalFlag("non-nullable")) {
+    result->set_null_safety(false);
+#endif  // !defined(DART_PRECOMPILED_RUNTIME)
   }
 
 #if !defined(PRODUCT)
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index 3516672..0487039 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -89,6 +89,17 @@
 class UserTag;
 class WeakTable;
 
+/*
+ * Possible values of null safety flag
+  0 - not specified
+  1 - weak mode
+  2 - strong mode)
+*/
+constexpr int kNullSafetyOptionUnspecified = 0;
+constexpr int kNullSafetyOptionWeak = 1;
+constexpr int kNullSafetyOptionStrong = 2;
+extern int FLAG_null_safety;
+
 class PendingLazyDeopt {
  public:
   PendingLazyDeopt(uword fp, uword pc) : fp_(fp), pc_(pc) {}
@@ -152,7 +163,6 @@
   V(NONPRODUCT, use_field_guards, UseFieldGuards, use_field_guards,            \
     FLAG_use_field_guards)                                                     \
   V(NONPRODUCT, use_osr, UseOsr, use_osr, FLAG_use_osr)                        \
-  V(PRODUCT, null_safety, NullSafety, null_safety, FLAG_null_safety)           \
   V(PRECOMPILER, obfuscate, Obfuscate, obfuscate, false_by_default)            \
   V(PRODUCT, unsafe_trust_strong_mode_types, UnsafeTrustStrongModeTypes,       \
     unsafe_trust_strong_mode_types,                                            \
@@ -1180,6 +1190,24 @@
   }
 #endif  // defined(PRODUCT)
 
+  bool null_safety_not_set() const {
+    return !NullSafetySetBit::decode(isolate_flags_);
+  }
+
+  bool null_safety() const {
+    // TODO(asiva) : We return false when the null safety mode is not yet set
+    // instead of just asserting as some code runs during bootstrapping that
+    // requires the mode to be set. Once all of that is resolved this could
+    // turn into just an assert.
+    if (null_safety_not_set()) return false;
+    ASSERT(!null_safety_not_set());
+    return NullSafetyBit::decode(isolate_flags_);
+  }
+  void set_null_safety(bool null_safety) {
+    isolate_flags_ = NullSafetySetBit::update(true, isolate_flags_);
+    isolate_flags_ = NullSafetyBit::update(null_safety, isolate_flags_);
+  }
+
   // Convenience flag tester indicating whether incoming function arguments
   // should be type checked.
   bool argument_type_checks() const { return should_emit_strong_mode_checks(); }
@@ -1351,6 +1379,7 @@
   V(Obfuscate)                                                                 \
   V(ShouldLoadVmService)                                                       \
   V(NullSafety)                                                                \
+  V(NullSafetySet)                                                             \
   V(UnsafeTrustStrongModeTypes)
 
   // Isolate specific flags.
diff --git a/runtime/vm/kernel.h b/runtime/vm/kernel.h
index a0edfe7..f612540 100644
--- a/runtime/vm/kernel.h
+++ b/runtime/vm/kernel.h
@@ -60,13 +60,6 @@
 
 enum LogicalOperator { kAnd, kOr };
 
-enum NonNullableByDefaultCompiledMode {
-  kNNBDDisabled,
-  kNNBDWeak,
-  kNNBDStrong,
-  kNNBDAgnostic
-};
-
 class Program {
  public:
   // Read a kernel Program from the given Reader. Note the returned Program
@@ -100,6 +93,7 @@
   const uint8_t* kernel_data() { return kernel_data_; }
   intptr_t kernel_data_size() { return kernel_data_size_; }
   intptr_t library_count() { return library_count_; }
+  NNBDCompiledMode compilation_mode() const { return compilation_mode_; }
 
  private:
   Program() : typed_data_(NULL), kernel_data_(NULL), kernel_data_size_(-1) {}
@@ -107,7 +101,7 @@
   bool single_program_;
   uint32_t binary_version_;
   NameIndex main_method_reference_;  // Procedure.
-  NonNullableByDefaultCompiledMode compilation_mode_;
+  NNBDCompiledMode compilation_mode_;
   intptr_t library_count_;
 
   // The offset from the start of the binary to the start of the source table.
diff --git a/runtime/vm/kernel_binary.cc b/runtime/vm/kernel_binary.cc
index de75ae3..d0431aa 100644
--- a/runtime/vm/kernel_binary.cc
+++ b/runtime/vm/kernel_binary.cc
@@ -3,15 +3,17 @@
 // BSD-style license that can be found in the LICENSE file.
 #if !defined(DART_PRECOMPILED_RUNTIME)
 
+#include "vm/kernel_binary.h"
+
 #include <memory>
 
-#include "vm/kernel_binary.h"
 #include "platform/globals.h"
 #include "vm/compiler/frontend/kernel_to_il.h"
 #include "vm/dart_api_impl.h"
 #include "vm/flags.h"
 #include "vm/growable_array.h"
 #include "vm/kernel.h"
+#include "vm/object.h"
 #include "vm/os.h"
 
 namespace dart {
@@ -170,11 +172,11 @@
 
   program->main_method_reference_ = NameIndex(reader->ReadUInt32() - 1);
   if (formatVersion >= 41) {
-    NonNullableByDefaultCompiledMode compilation_mode =
-        static_cast<NonNullableByDefaultCompiledMode>(reader->ReadUInt32());
+    NNBDCompiledMode compilation_mode =
+        static_cast<NNBDCompiledMode>(reader->ReadUInt32());
     program->compilation_mode_ = compilation_mode;
   } else {
-    program->compilation_mode_ = kNNBDDisabled;
+    program->compilation_mode_ = NNBDCompiledMode::kDisabled;
   }
 
   return program;
diff --git a/runtime/vm/kernel_isolate.cc b/runtime/vm/kernel_isolate.cc
index a326820..a67d70a 100644
--- a/runtime/vm/kernel_isolate.cc
+++ b/runtime/vm/kernel_isolate.cc
@@ -93,7 +93,6 @@
 #if !defined(DART_PRECOMPILER)
     api_flags.use_osr = true;
 #endif
-    api_flags.null_safety = false;
 
     isolate = reinterpret_cast<Isolate*>(
         create_group_callback(KernelIsolate::kName, KernelIsolate::kName, NULL,
@@ -759,9 +758,8 @@
         isolate != NULL ? isolate->asserts() : FLAG_enable_asserts;
 
     Dart_CObject null_safety;
-    null_safety.type = Dart_CObject_kBool;
-    null_safety.value.as_bool =
-        isolate != NULL ? isolate->null_safety() : FLAG_null_safety;
+    null_safety.type = Dart_CObject_kInt32;
+    null_safety.value.as_int32 = FLAG_null_safety;
 
     intptr_t num_experimental_flags = experimental_flags->length();
     Dart_CObject** experimental_flags_array =
diff --git a/runtime/vm/lockers.h b/runtime/vm/lockers.h
index 16c6d93..df163dc 100644
--- a/runtime/vm/lockers.h
+++ b/runtime/vm/lockers.h
@@ -191,6 +191,22 @@
   DISALLOW_COPY_AND_ASSIGN(MonitorLocker);
 };
 
+// Leaves the given monitor during the scope of the object.
+class MonitorLeaveScope : public ValueObject {
+ public:
+  explicit MonitorLeaveScope(MonitorLocker* monitor)
+      : monitor_locker_(monitor) {
+    monitor_locker_->Exit();
+  }
+
+  virtual ~MonitorLeaveScope() { monitor_locker_->Enter(); }
+
+ private:
+  MonitorLocker* const monitor_locker_;
+
+  DISALLOW_COPY_AND_ASSIGN(MonitorLeaveScope);
+};
+
 /*
  * Safepoint mutex locker :
  * This locker abstraction should be used when the enclosing code could
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 73a21be..7bac01c 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -1713,10 +1713,9 @@
     // declared number of type parameters is still 0. It will become 1 after
     // patching. The array type allocated below represents the raw type _List
     // and not _List<E> as we could expect. Use with caution.
-    type = Type::New(Class::Handle(zone, cls.raw()),
-                     TypeArguments::Handle(zone), TokenPosition::kNoSource,
-                     Dart::non_nullable_flag() ? Nullability::kNonNullable
-                                               : Nullability::kLegacy);
+    type =
+        Type::New(Class::Handle(zone, cls.raw()), TypeArguments::Handle(zone),
+                  TokenPosition::kNoSource, Nullability::kNonNullable);
     type.SetIsFinalized();
     type ^= type.Canonicalize();
     object_store->set_array_type(type);
@@ -2782,8 +2781,7 @@
   ASSERT(is_declaration_loaded());
   const Type& type = Type::Handle(
       Type::New(*this, Object::null_type_arguments(), TokenPosition::kNoSource,
-                Dart::non_nullable_flag() ? Nullability::kNonNullable
-                                          : Nullability::kLegacy));
+                Nullability::kNonNullable));
   return ClassFinalizer::FinalizeType(*this, type);
 }
 
@@ -4850,9 +4848,7 @@
   // non-generic class, the nullability is set to kNonNullable instead of
   // kLegacy when the non-nullable experiment is enabled.
   ASSERT(value.type_class_id() != kNullCid || value.IsNullable());
-  ASSERT(
-      value.type_class_id() == kNullCid ||
-      (Dart::non_nullable_flag() ? value.IsNonNullable() : value.IsLegacy()));
+  ASSERT(value.type_class_id() == kNullCid || value.IsNonNullable());
   StorePointer(&raw_ptr()->declaration_type_, value.raw());
 }
 
@@ -4875,10 +4871,9 @@
   // consistently cache the kLegacy version of a type, unless the non-nullable
   // experiment is enabled, in which case we store the kNonNullable version.
   // In either cases, the exception is type Null which is stored as kNullable.
-  Type& type = Type::Handle(
-      Type::New(*this, TypeArguments::Handle(type_parameters()), token_pos(),
-                Dart::non_nullable_flag() ? Nullability::kNonNullable
-                                          : Nullability::kLegacy));
+  Type& type =
+      Type::Handle(Type::New(*this, TypeArguments::Handle(type_parameters()),
+                             token_pos(), Nullability::kNonNullable));
   type ^= ClassFinalizer::FinalizeType(*this, type);
   set_declaration_type(type);
   return type.raw();
@@ -7994,7 +7989,7 @@
       ASSERT(bound.IsFinalized());
       other_bound = other_type_param.bound();
       ASSERT(other_bound.IsFinalized());
-      if (Dart::non_nullable_flag() && kind == TypeEquality::kInSubtypeTest) {
+      if (kind == TypeEquality::kInSubtypeTest) {
         // Bounds that are mutual subtypes are considered equal.
         if (!bound.IsSubtypeOf(other_bound, Heap::kOld) ||
             !other_bound.IsSubtypeOf(bound, Heap::kOld)) {
@@ -8385,12 +8380,10 @@
                                     &is_generic_covariant_impl);
 
     Type& object_type = Type::Handle(zone, Type::ObjectType());
-    if (Dart::non_nullable_flag()) {
-      ObjectStore* object_store = Isolate::Current()->object_store();
-      object_type = nnbd_mode() == NNBDMode::kOptedInLib
-                        ? object_store->nullable_object_type()
-                        : object_store->legacy_object_type();
-    }
+    ObjectStore* object_store = Isolate::Current()->object_store();
+    object_type = nnbd_mode() == NNBDMode::kOptedInLib
+                      ? object_store->nullable_object_type()
+                      : object_store->legacy_object_type();
     for (intptr_t i = kClosure; i < num_params; ++i) {
       const intptr_t original_param_index = has_receiver - kClosure + i;
       if (is_covariant.Contains(original_param_index) ||
@@ -9020,12 +9013,12 @@
     return true;
   }
 
-  if (Dart::non_nullable_flag()) {
-    // The non-nullable experiment changes the fingerprints, and we only track
-    // one fingerprint set.
-    return true;
-  }
-
+#if 1
+  // The non-nullable experiment changes the fingerprints, we only track
+  // one fingerprint set, until we unfork and settle on a single snapshot
+  // version this check has to be bypassed.
+  // TODO(36376) - Restore checking fingerprints of recognized methods.
+#else
   if (SourceFingerprint() != fp) {
     const bool recalculatingFingerprints = false;
     if (recalculatingFingerprints) {
@@ -9044,6 +9037,7 @@
       return false;
     }
   }
+#endif
   return true;
 }
 
@@ -17738,9 +17732,7 @@
       type_arguments = GetTypeArguments();
     }
     type = Type::New(cls, type_arguments, TokenPosition::kNoSource,
-                     Dart::non_nullable_flag() ? Nullability::kNonNullable
-                                               : Nullability::kLegacy,
-                     space);
+                     Nullability::kNonNullable, space);
     type.SetIsFinalized();
     type ^= type.Canonicalize();
   }
@@ -18278,65 +18270,61 @@
 }
 
 AbstractTypePtr AbstractType::NormalizeFutureOrType(Heap::Space space) const {
-  if (Dart::non_nullable_flag()) {
-    if (IsFutureOrType()) {
-      const AbstractType& unwrapped_type =
-          AbstractType::Handle(UnwrapFutureOr());
-      const classid_t cid = unwrapped_type.type_class_id();
-      if (cid == kDynamicCid || cid == kVoidCid) {
+  if (IsFutureOrType()) {
+    const AbstractType& unwrapped_type = AbstractType::Handle(UnwrapFutureOr());
+    const classid_t cid = unwrapped_type.type_class_id();
+    if (cid == kDynamicCid || cid == kVoidCid) {
+      return unwrapped_type.raw();
+    }
+    if (cid == kInstanceCid) {
+      if (IsNonNullable()) {
         return unwrapped_type.raw();
       }
-      if (cid == kInstanceCid) {
-        if (IsNonNullable()) {
-          return unwrapped_type.raw();
-        }
-        if (IsNullable() || unwrapped_type.IsNullable()) {
-          return Type::Cast(unwrapped_type)
-              .ToNullability(Nullability::kNullable, space);
-        }
+      if (IsNullable() || unwrapped_type.IsNullable()) {
         return Type::Cast(unwrapped_type)
-            .ToNullability(Nullability::kLegacy, space);
+            .ToNullability(Nullability::kNullable, space);
       }
-      if (cid == kNeverCid && unwrapped_type.IsNonNullable()) {
-        ObjectStore* object_store = Isolate::Current()->object_store();
-        if (object_store->non_nullable_future_never_type() == Type::null()) {
-          const Class& cls = Class::Handle(object_store->future_class());
-          ASSERT(!cls.IsNull());
-          const TypeArguments& type_args =
-              TypeArguments::Handle(TypeArguments::New(1));
-          type_args.SetTypeAt(0, Type::Handle(object_store->never_type()));
-          Type& type =
-              Type::Handle(Type::New(cls, type_args, TokenPosition::kNoSource,
-                                     Nullability::kNonNullable));
-          type.SetIsFinalized();
-          type ^= type.Canonicalize();
-          object_store->set_non_nullable_future_never_type(type);
-        }
-        const Type& future_never_type =
-            Type::Handle(object_store->non_nullable_future_never_type());
-        return future_never_type.ToNullability(nullability(), space);
+      return Type::Cast(unwrapped_type)
+          .ToNullability(Nullability::kLegacy, space);
+    }
+    if (cid == kNeverCid && unwrapped_type.IsNonNullable()) {
+      ObjectStore* object_store = Isolate::Current()->object_store();
+      if (object_store->non_nullable_future_never_type() == Type::null()) {
+        const Class& cls = Class::Handle(object_store->future_class());
+        ASSERT(!cls.IsNull());
+        const TypeArguments& type_args =
+            TypeArguments::Handle(TypeArguments::New(1));
+        type_args.SetTypeAt(0, Type::Handle(object_store->never_type()));
+        Type& type =
+            Type::Handle(Type::New(cls, type_args, TokenPosition::kNoSource,
+                                   Nullability::kNonNullable));
+        type.SetIsFinalized();
+        type ^= type.Canonicalize();
+        object_store->set_non_nullable_future_never_type(type);
       }
-      if (cid == kNullCid) {
-        ObjectStore* object_store = Isolate::Current()->object_store();
-        if (object_store->nullable_future_null_type() == Type::null()) {
-          const Class& cls = Class::Handle(object_store->future_class());
-          ASSERT(!cls.IsNull());
-          const TypeArguments& type_args =
-              TypeArguments::Handle(TypeArguments::New(1));
-          Type& type = Type::Handle(object_store->null_type());
-          type_args.SetTypeAt(0, type);
-          type = Type::New(cls, type_args, TokenPosition::kNoSource,
-                           Nullability::kNullable);
-          type.SetIsFinalized();
-          type ^= type.Canonicalize();
-          object_store->set_nullable_future_null_type(type);
-        }
-        return object_store->nullable_future_null_type();
+      const Type& future_never_type =
+          Type::Handle(object_store->non_nullable_future_never_type());
+      return future_never_type.ToNullability(nullability(), space);
+    }
+    if (cid == kNullCid) {
+      ObjectStore* object_store = Isolate::Current()->object_store();
+      if (object_store->nullable_future_null_type() == Type::null()) {
+        const Class& cls = Class::Handle(object_store->future_class());
+        ASSERT(!cls.IsNull());
+        const TypeArguments& type_args =
+            TypeArguments::Handle(TypeArguments::New(1));
+        Type& type = Type::Handle(object_store->null_type());
+        type_args.SetTypeAt(0, type);
+        type = Type::New(cls, type_args, TokenPosition::kNoSource,
+                         Nullability::kNullable);
+        type.SetIsFinalized();
+        type ^= type.Canonicalize();
+        object_store->set_nullable_future_null_type(type);
       }
-      if (IsNullable() && unwrapped_type.IsNullable()) {
-        return Type::Cast(*this).ToNullability(Nullability::kNonNullable,
-                                               space);
-      }
+      return object_store->nullable_future_null_type();
+    }
+    if (IsNullable() && unwrapped_type.IsNullable()) {
+      return Type::Cast(*this).ToNullability(Nullability::kNonNullable, space);
     }
   }
   return raw();
@@ -19017,8 +19005,7 @@
   if (type.IsNull()) {
     type = Type::New(Class::Handle(type_class.raw()),
                      Object::null_type_arguments(), TokenPosition::kNoSource,
-                     Dart::non_nullable_flag() ? Nullability::kNonNullable
-                                               : Nullability::kLegacy);
+                     Nullability::kNonNullable);
     type.SetIsFinalized();
     type ^= type.Canonicalize();
     type_class.set_declaration_type(type);
@@ -19403,10 +19390,7 @@
   if (cls.IsGeneric() || cls.IsClosureClass() || cls.IsTypedefClass()) {
     return false;
   }
-  const Nullability declaration_nullability = Dart::non_nullable_flag()
-                                                  ? Nullability::kNonNullable
-                                                  : Nullability::kLegacy;
-  return nullability() == declaration_nullability;
+  return nullability() == Nullability::kNonNullable;
 }
 
 AbstractTypePtr Type::Canonicalize(TrailPtr trail) const {
diff --git a/runtime/vm/service.h b/runtime/vm/service.h
index 4eedb96..ffdc290 100644
--- a/runtime/vm/service.h
+++ b/runtime/vm/service.h
@@ -15,7 +15,7 @@
 namespace dart {
 
 #define SERVICE_PROTOCOL_MAJOR_VERSION 3
-#define SERVICE_PROTOCOL_MINOR_VERSION 32
+#define SERVICE_PROTOCOL_MINOR_VERSION 33
 
 class Array;
 class EmbedderServiceHandler;
diff --git a/runtime/vm/service/service.md b/runtime/vm/service/service.md
index 4f6fcb0..457832a 100644
--- a/runtime/vm/service/service.md
+++ b/runtime/vm/service/service.md
@@ -1,8 +1,8 @@
-# Dart VM Service Protocol 3.32
+# Dart VM Service Protocol 3.33
 
 > Please post feedback to the [observatory-discuss group][discuss-list]
 
-This document describes of _version 3.32_ of the Dart VM Service Protocol. This
+This document describes of _version 3.33_ of the Dart VM Service Protocol. This
 protocol is used to communicate with a running Dart Virtual Machine.
 
 To use the Service Protocol, start the VM with the *--observe* flag.
@@ -726,6 +726,9 @@
 
 ### getClientName
 
+_**Note**: This method is deprecated and will be removed in v4.0 of the protocol.
+An equivalent can be found in the Dart Development Service (DDS) protocol._
+
 ```
 ClientName getClientName()
 ```
@@ -1201,6 +1204,9 @@
 
 ### requirePermissionToResume
 
+_**Note**: This method is deprecated and will be removed in v4.0 of the protocol.
+An equivalent can be found in the Dart Development Service (DDS) protocol._
+
 ```
 Success requirePermissionToResume(bool onPauseStart [optional],
                                   bool onPauseReload[optional],
@@ -1234,7 +1240,6 @@
   approval for the current pause event, the isolate will be resumed if at
   least one other client has attempted to [resume](#resume) the isolate.
 
-
 ### resume
 
 ```
@@ -1271,6 +1276,9 @@
 
 ### setClientName
 
+_**Note**: This method is deprecated and will be removed in v4.0 of the protocol.
+An equivalent can be found in the Dart Development Service (DDS) protocol._
+
 ```
 Success setClientName(string name)
 ```
@@ -1416,7 +1424,7 @@
 streamId | event types provided
 -------- | -----------
 VM | VMUpdate, VMFlagUpdate
-Isolate | IsolateStart, IsolateRunnable, IsolateExit, IsolateUpdate, IsolateReload, ServiceExtensionAdded
+Isolate | IsolateStart, IsolateRunnable, IsolateExit, IsolateUpdate, IsolateReload, IsolateSpawn, ServiceExtensionAdded
 Debug | PauseStart, PauseExit, PauseBreakpoint, PauseInterrupted, PauseException, PausePostRequest, Resume, BreakpointAdded, BreakpointResolved, BreakpointRemoved, Inspect, None
 GC | GC
 Extension | Extension
@@ -1716,6 +1724,9 @@
 
 ### ClientName
 
+_**Note**: This class is deprecated and will be removed in v4.0 of the protocol.
+An equivalent can be found in the Dart Development Service (DDS) protocol._
+
 ```
 class ClientName extends Response {
   // The name of the currently connected VM service client.
@@ -3756,5 +3767,6 @@
 3.31 | Added single client mode, which allows for the Dart Development Service (DDS) to become the sole client of
 the VM service.
 3.32 | Added `getClassList` RPC and `ClassList` object.
+3.33 | Added deprecation notice for `getClientName`, `setClientName`, `requireResumeApproval`, and `ClientName`. These RPCs are moving to the DDS protocol and will be removed in v4.0 of the VM service protocol.
 
 [discuss-list]: https://groups.google.com/a/dartlang.org/forum/#!forum/observatory-discuss
diff --git a/runtime/vm/service_isolate.cc b/runtime/vm/service_isolate.cc
index 8b6e61a..5b2aadfe 100644
--- a/runtime/vm/service_isolate.cc
+++ b/runtime/vm/service_isolate.cc
@@ -346,7 +346,6 @@
 
     Dart_IsolateFlags api_flags;
     Isolate::FlagsInitialize(&api_flags);
-    api_flags.null_safety = false;
 
     isolate = reinterpret_cast<Isolate*>(
         create_group_callback(ServiceIsolate::kName, ServiceIsolate::kName,
diff --git a/runtime/vm/thread.h b/runtime/vm/thread.h
index 708916f..d7cde8f 100644
--- a/runtime/vm/thread.h
+++ b/runtime/vm/thread.h
@@ -19,7 +19,6 @@
 #include "vm/globals.h"
 #include "vm/handles.h"
 #include "vm/heap/pointer_block.h"
-#include "vm/heap/tlab.h"
 #include "vm/os_thread.h"
 #include "vm/random.h"
 #include "vm/runtime_entry_list.h"
@@ -495,13 +494,10 @@
   Heap* heap() const { return heap_; }
   static intptr_t heap_offset() { return OFFSET_OF(Thread, heap_); }
 
-  void set_tlab(TLAB tlab) {
-    top_ = tlab.top;
-    end_ = tlab.end;
-  }
-
-  TLAB tlab() { return TLAB(top_, end_); }
-
+  uword top() const { return top_; }
+  uword end() const { return end_; }
+  void set_top(uword top) { top_ = top; }
+  void set_end(uword end) { end_ = end; }
   static intptr_t top_offset() { return OFFSET_OF(Thread, top_); }
   static intptr_t end_offset() { return OFFSET_OF(Thread, end_); }
 
diff --git a/runtime/vm/thread_pool.cc b/runtime/vm/thread_pool.cc
index 22f62ca..d307f5f 100644
--- a/runtime/vm/thread_pool.cc
+++ b/runtime/vm/thread_pool.cc
@@ -15,341 +15,6 @@
             5000,
             "Free workers when they have been idle for this amount of time.");
 
-ThreadPool::ThreadPool()
-    : shutting_down_(false),
-      all_workers_(NULL),
-      idle_workers_(NULL),
-      count_started_(0),
-      count_stopped_(0),
-      count_running_(0),
-      count_idle_(0),
-      shutting_down_workers_(NULL),
-      join_list_(NULL) {}
-
-ThreadPool::~ThreadPool() {
-  Shutdown();
-}
-
-bool ThreadPool::RunImpl(std::unique_ptr<Task> task) {
-  Worker* worker = NULL;
-  bool new_worker = false;
-  {
-    // We need ThreadPool::mutex_ to access worker lists and other
-    // ThreadPool state.
-    MutexLocker ml(&mutex_);
-    if (shutting_down_) {
-      return false;
-    }
-    if (idle_workers_ == NULL) {
-      worker = new Worker(this);
-      ASSERT(worker != NULL);
-      new_worker = true;
-      count_started_++;
-
-      // Add worker to the all_workers_ list.
-      worker->all_next_ = all_workers_;
-      all_workers_ = worker;
-      worker->owned_ = true;
-      count_running_++;
-    } else {
-      // Get the first worker from the idle worker list.
-      worker = idle_workers_;
-      idle_workers_ = worker->idle_next_;
-      worker->idle_next_ = NULL;
-      count_idle_--;
-      count_running_++;
-    }
-  }
-
-  // Release ThreadPool::mutex_ before calling Worker functions.
-  ASSERT(worker != NULL);
-  worker->SetTask(std::move(task));
-  if (new_worker) {
-    // Call StartThread after we've assigned the first task.
-    worker->StartThread();
-  }
-  return true;
-}
-
-void ThreadPool::Shutdown() {
-  Worker* saved = NULL;
-  {
-    MutexLocker ml(&mutex_);
-    shutting_down_ = true;
-    saved = all_workers_;
-    all_workers_ = NULL;
-    idle_workers_ = NULL;
-
-    Worker* current = saved;
-    while (current != NULL) {
-      Worker* next = current->all_next_;
-      current->idle_next_ = NULL;
-      current->owned_ = false;
-      current = next;
-      count_stopped_++;
-    }
-
-    count_idle_ = 0;
-    count_running_ = 0;
-    ASSERT(count_started_ == count_stopped_);
-  }
-  // Release ThreadPool::mutex_ before calling Worker functions.
-
-  {
-    MonitorLocker eml(&exit_monitor_);
-
-    // First tell all the workers to shut down.
-    Worker* current = saved;
-    OSThread* os_thread = OSThread::Current();
-    ASSERT(os_thread != NULL);
-    ThreadId id = os_thread->id();
-    while (current != NULL) {
-      Worker* next = current->all_next_;
-      ThreadId currentId = current->id();
-      if (currentId != id) {
-        AddWorkerToShutdownList(current);
-      }
-      current->Shutdown();
-      current = next;
-    }
-    saved = NULL;
-
-    // Wait until all workers will exit.
-    while (shutting_down_workers_ != NULL) {
-      // Here, we are waiting for workers to exit. When a worker exits we will
-      // be notified.
-      eml.Wait();
-    }
-  }
-
-  // Extract the join list, and join on the threads.
-  JoinList* list = NULL;
-  {
-    MutexLocker ml(&mutex_);
-    list = join_list_;
-    join_list_ = NULL;
-  }
-
-  // Join non-idle threads.
-  JoinList::Join(&list);
-
-#if defined(DEBUG)
-  {
-    MutexLocker ml(&mutex_);
-    ASSERT(join_list_ == NULL);
-  }
-#endif
-}
-
-bool ThreadPool::IsIdle(Worker* worker) {
-  ASSERT(worker != NULL && worker->owned_);
-  for (Worker* current = idle_workers_; current != NULL;
-       current = current->idle_next_) {
-    if (current == worker) {
-      return true;
-    }
-  }
-  return false;
-}
-
-bool ThreadPool::RemoveWorkerFromIdleList(Worker* worker) {
-  ASSERT(worker != NULL && worker->owned_);
-  if (idle_workers_ == NULL) {
-    return false;
-  }
-
-  // Special case head of list.
-  if (idle_workers_ == worker) {
-    idle_workers_ = worker->idle_next_;
-    worker->idle_next_ = NULL;
-    return true;
-  }
-
-  for (Worker* current = idle_workers_; current->idle_next_ != NULL;
-       current = current->idle_next_) {
-    if (current->idle_next_ == worker) {
-      current->idle_next_ = worker->idle_next_;
-      worker->idle_next_ = NULL;
-      return true;
-    }
-  }
-  return false;
-}
-
-bool ThreadPool::RemoveWorkerFromAllList(Worker* worker) {
-  ASSERT(worker != NULL && worker->owned_);
-  if (all_workers_ == NULL) {
-    return false;
-  }
-
-  // Special case head of list.
-  if (all_workers_ == worker) {
-    all_workers_ = worker->all_next_;
-    worker->all_next_ = NULL;
-    worker->owned_ = false;
-    worker->done_ = true;
-    return true;
-  }
-
-  for (Worker* current = all_workers_; current->all_next_ != NULL;
-       current = current->all_next_) {
-    if (current->all_next_ == worker) {
-      current->all_next_ = worker->all_next_;
-      worker->all_next_ = NULL;
-      worker->owned_ = false;
-      return true;
-    }
-  }
-  return false;
-}
-
-void ThreadPool::SetIdleLocked(Worker* worker) {
-  ASSERT(mutex_.IsOwnedByCurrentThread());
-  ASSERT(worker->owned_ && !IsIdle(worker));
-  worker->idle_next_ = idle_workers_;
-  idle_workers_ = worker;
-  count_idle_++;
-  count_running_--;
-}
-
-void ThreadPool::SetIdleAndReapExited(Worker* worker) {
-  JoinList* list = NULL;
-  {
-    MutexLocker ml(&mutex_);
-    if (shutting_down_) {
-      return;
-    }
-    if (join_list_ == NULL) {
-      // Nothing to join, add to the idle list and return.
-      SetIdleLocked(worker);
-      return;
-    }
-    // There is something to join. Grab the join list, drop the lock, do the
-    // join, then grab the lock again and add to the idle list.
-    list = join_list_;
-    join_list_ = NULL;
-  }
-  JoinList::Join(&list);
-
-  {
-    MutexLocker ml(&mutex_);
-    if (shutting_down_) {
-      return;
-    }
-    SetIdleLocked(worker);
-  }
-}
-
-bool ThreadPool::ReleaseIdleWorker(Worker* worker) {
-  MutexLocker ml(&mutex_);
-  if (shutting_down_) {
-    return false;
-  }
-  // Remove from idle list.
-  if (!RemoveWorkerFromIdleList(worker)) {
-    return false;
-  }
-  // Remove from all list.
-  bool found = RemoveWorkerFromAllList(worker);
-  ASSERT(found);
-
-  // The thread for worker will exit. Add its ThreadId to the join_list_
-  // so that we can join on it at the next opportunity.
-  OSThread* os_thread = OSThread::Current();
-  ASSERT(os_thread != NULL);
-  ThreadJoinId join_id = OSThread::GetCurrentThreadJoinId(os_thread);
-  JoinList::AddLocked(join_id, &join_list_);
-  count_stopped_++;
-  count_idle_--;
-  return true;
-}
-
-// Only call while holding the exit_monitor_
-void ThreadPool::AddWorkerToShutdownList(Worker* worker) {
-  ASSERT(exit_monitor_.IsOwnedByCurrentThread());
-  worker->shutdown_next_ = shutting_down_workers_;
-  shutting_down_workers_ = worker;
-}
-
-// Only call while holding the exit_monitor_
-bool ThreadPool::RemoveWorkerFromShutdownList(Worker* worker) {
-  ASSERT(worker != NULL);
-  ASSERT(shutting_down_workers_ != NULL);
-  ASSERT(exit_monitor_.IsOwnedByCurrentThread());
-
-  // Special case head of list.
-  if (shutting_down_workers_ == worker) {
-    shutting_down_workers_ = worker->shutdown_next_;
-    worker->shutdown_next_ = NULL;
-    return true;
-  }
-
-  for (Worker* current = shutting_down_workers_;
-       current->shutdown_next_ != NULL; current = current->shutdown_next_) {
-    if (current->shutdown_next_ == worker) {
-      current->shutdown_next_ = worker->shutdown_next_;
-      worker->shutdown_next_ = NULL;
-      return true;
-    }
-  }
-  return false;
-}
-
-void ThreadPool::JoinList::AddLocked(ThreadJoinId id, JoinList** list) {
-  *list = new JoinList(id, *list);
-}
-
-void ThreadPool::JoinList::Join(JoinList** list) {
-  while (*list != NULL) {
-    JoinList* current = *list;
-    *list = current->next();
-    OSThread::Join(current->id());
-    delete current;
-  }
-}
-
-ThreadPool::Task::Task() {}
-
-ThreadPool::Task::~Task() {}
-
-ThreadPool::Worker::Worker(ThreadPool* pool)
-    : pool_(pool),
-      task_(nullptr),
-      id_(OSThread::kInvalidThreadId),
-      done_(false),
-      owned_(false),
-      all_next_(NULL),
-      idle_next_(NULL),
-      shutdown_next_(NULL) {}
-
-ThreadId ThreadPool::Worker::id() {
-  MonitorLocker ml(&monitor_);
-  return id_;
-}
-
-void ThreadPool::Worker::StartThread() {
-#if defined(DEBUG)
-  // Must call SetTask before StartThread.
-  {  // NOLINT
-    MonitorLocker ml(&monitor_);
-    ASSERT(task_ != nullptr);
-  }
-#endif
-  int result = OSThread::Start("DartWorker", &Worker::Main,
-                               reinterpret_cast<uword>(this));
-  if (result != 0) {
-    FATAL1("Could not start worker thread: result = %d.", result);
-  }
-}
-
-void ThreadPool::Worker::SetTask(std::unique_ptr<Task> task) {
-  std::atomic_thread_fence(std::memory_order_release);
-  MonitorLocker ml(&monitor_);
-  ASSERT(task_ == nullptr);
-  task_ = std::move(task);
-  ml.Notify();
-}
-
 static int64_t ComputeTimeout(int64_t idle_start) {
   int64_t worker_timeout_micros =
       FLAG_worker_timeout_millis * kMicrosecondsPerMillisecond;
@@ -369,110 +34,217 @@
   }
 }
 
-bool ThreadPool::Worker::Loop() {
-  MonitorLocker ml(&monitor_);
-  int64_t idle_start;
-  while (true) {
-    ASSERT(task_ != nullptr);
-    std::unique_ptr<Task> task = std::move(task_);
+ThreadPool::ThreadPool() : all_workers_dead_(false) {}
 
-    // Release monitor while handling the task.
-    ml.Exit();
-    std::atomic_thread_fence(std::memory_order_acquire);
-    task->Run();
-    ASSERT(Isolate::Current() == NULL);
-    task.reset();
-    ml.Enter();
+ThreadPool::~ThreadPool() {
+  TriggerShutdown();
 
-    ASSERT(task_ == nullptr);
-    if (IsDone()) {
+  // Wait until all workers are dead. Any new death will notify the exit
+  // monitor.
+  {
+    MonitorLocker eml(&exit_monitor_);
+    while (!all_workers_dead_) {
+      eml.Wait();
+    }
+  }
+
+  // Join all dead workers.
+  WorkerList dead_workers_to_join;
+  {
+    MonitorLocker ml(&pool_monitor_);
+    ObtainDeadWorkersLocked(&dead_workers_to_join);
+  }
+  JoinDeadWorkersLocked(&dead_workers_to_join);
+}
+
+bool ThreadPool::RunImpl(std::unique_ptr<Task> task) {
+  Worker* new_worker = nullptr;
+  {
+    MonitorLocker ml(&pool_monitor_);
+    if (shutting_down_) {
       return false;
     }
-    ASSERT(!done_);
-    pool_->SetIdleAndReapExited(this);
-    idle_start = OS::GetCurrentMonotonicMicros();
-    while (true) {
-      Monitor::WaitResult result = ml.WaitMicros(ComputeTimeout(idle_start));
-      if (task_ != nullptr) {
-        // We've found a task.  Process it, regardless of whether the
-        // worker is done_.
+    new_worker = ScheduleTaskLocked(&ml, std::move(task));
+  }
+  if (new_worker != nullptr) {
+    new_worker->StartThread();
+  }
+  return true;
+}
+
+void ThreadPool::WorkerLoop(Worker* worker) {
+  WorkerList dead_workers_to_join;
+
+  while (true) {
+    MonitorLocker ml(&pool_monitor_);
+
+    if (!tasks_.IsEmpty()) {
+      IdleToRunningLocked(worker);
+      while (!tasks_.IsEmpty()) {
+        std::unique_ptr<Task> task(tasks_.RemoveFirst());
+        pending_tasks_--;
+        MonitorLeaveScope mls(&ml);
+        task->Run();
+        ASSERT(Isolate::Current() == nullptr);
+        task.reset();
+      }
+      RunningToIdleLocked(worker);
+    }
+
+    if (shutting_down_) {
+      ObtainDeadWorkersLocked(&dead_workers_to_join);
+      IdleToDeadLocked(worker);
+      break;
+    }
+
+    // Sleep until we get a new task, we time out or we're shutdown.
+    const int64_t idle_start = OS::GetCurrentMonotonicMicros();
+    bool done = false;
+    while (!done) {
+      const auto result = ml.WaitMicros(ComputeTimeout(idle_start));
+
+      // We have to drain all pending tasks.
+      if (!tasks_.IsEmpty()) break;
+
+      if (shutting_down_ || result == Monitor::kTimedOut) {
+        done = true;
         break;
       }
-      if (IsDone()) {
-        return false;
-      }
-      if ((result == Monitor::kTimedOut) && pool_->ReleaseIdleWorker(this)) {
-        return true;
-      }
+    }
+    if (done) {
+      ObtainDeadWorkersLocked(&dead_workers_to_join);
+      IdleToDeadLocked(worker);
+      break;
     }
   }
-  UNREACHABLE();
-  return false;
+
+  // Before we transitioned to dead we obtained the list of previously died dead
+  // workers, which we join here. Since every death of a worker will join
+  // previously died workers, we keep the pending non-joined [dead_workers_] to
+  // effectively 1.
+  JoinDeadWorkersLocked(&dead_workers_to_join);
 }
 
-void ThreadPool::Worker::Shutdown() {
-  MonitorLocker ml(&monitor_);
-  done_ = true;
-  ml.Notify();
-}
+void ThreadPool::TriggerShutdown() {
+  MonitorLocker ml(&pool_monitor_);
 
-// static
-void ThreadPool::Worker::Main(uword args) {
-  Worker* worker = reinterpret_cast<Worker*>(args);
-  OSThread* os_thread = OSThread::Current();
-  ASSERT(os_thread != NULL);
-  ThreadId id = os_thread->id();
-  ThreadPool* pool;
+  // Prevent scheduling of new tasks.
+  shutting_down_ = true;
 
-  {
-    MonitorLocker ml(&worker->monitor_);
-    ASSERT(worker->task_);
-    worker->id_ = id;
-    pool = worker->pool_;
+  if (running_workers_.IsEmpty() && idle_workers_.IsEmpty()) {
+    // All workers have already died.
+    all_workers_dead_ = true;
+  } else {
+    // Tell workers to drain remaining work and then shut down.
+    ml.NotifyAll();
   }
+}
 
-  bool released = worker->Loop();
+void ThreadPool::IdleToRunningLocked(Worker* worker) {
+  ASSERT(idle_workers_.ContainsForDebugging(worker));
+  idle_workers_.Remove(worker);
+  running_workers_.Append(worker);
+  count_idle_--;
+  count_running_++;
+}
 
-  // It should be okay to access these unlocked here in this assert.
-  // worker->all_next_ is retained by the pool for shutdown monitoring.
-  ASSERT(!worker->owned_ && (worker->idle_next_ == NULL));
+void ThreadPool::RunningToIdleLocked(Worker* worker) {
+  ASSERT(tasks_.IsEmpty());
 
-  if (!released) {
-    // This worker is exiting because the thread pool is being shut down.
-    // Inform the thread pool that we are exiting. We remove this worker from
-    // shutting_down_workers_ list because there will be no need for the
-    // ThreadPool to take action for this worker.
-    ThreadJoinId join_id = OSThread::GetCurrentThreadJoinId(os_thread);
-    {
-      MutexLocker ml(&pool->mutex_);
-      JoinList::AddLocked(join_id, &pool->join_list_);
-    }
+  ASSERT(running_workers_.ContainsForDebugging(worker));
+  running_workers_.Remove(worker);
+  idle_workers_.Append(worker);
+  count_running_--;
+  count_idle_++;
+}
 
-// worker->id_ should never be read again, so set to invalid in debug mode
-// for asserts.
-#if defined(DEBUG)
-    {
-      MonitorLocker ml(&worker->monitor_);
-      worker->id_ = OSThread::kInvalidThreadId;
-    }
-#endif
+void ThreadPool::IdleToDeadLocked(Worker* worker) {
+  ASSERT(tasks_.IsEmpty());
 
-    // Remove from the shutdown list, delete, and notify the thread pool.
-    {
-      MonitorLocker eml(&pool->exit_monitor_);
-      pool->RemoveWorkerFromShutdownList(worker);
-      delete worker;
+  ASSERT(idle_workers_.ContainsForDebugging(worker));
+  idle_workers_.Remove(worker);
+  dead_workers_.Append(worker);
+  count_idle_--;
+  count_dead_++;
+
+  // Notify shutdown thread that the worker thread is about to finish.
+  if (shutting_down_) {
+    if (running_workers_.IsEmpty() && idle_workers_.IsEmpty()) {
+      all_workers_dead_ = true;
+      MonitorLocker eml(&exit_monitor_);
       eml.Notify();
     }
-  } else {
-    // This worker is going down because it was idle for too long. This case
-    // is not due to a ThreadPool Shutdown. Thus, we simply delete the worker.
-    // The worker's id is added to the thread pool's join list by
-    // ReleaseIdleWorker, so in the case that the thread pool begins shutting
-    // down immediately after returning from worker->Loop() above, we still
-    // wait for the thread to exit by joining on it in Shutdown().
+  }
+}
+
+void ThreadPool::ObtainDeadWorkersLocked(WorkerList* dead_workers_to_join) {
+  dead_workers_to_join->AppendList(&dead_workers_);
+  ASSERT(dead_workers_.IsEmpty());
+  count_dead_ = 0;
+}
+
+void ThreadPool::JoinDeadWorkersLocked(WorkerList* dead_workers_to_join) {
+  auto it = dead_workers_to_join->begin();
+  while (it != dead_workers_to_join->end()) {
+    Worker* worker = *it;
+    it = dead_workers_to_join->Erase(it);
+
+    OSThread::Join(worker->join_id_);
     delete worker;
   }
+  ASSERT(dead_workers_to_join->IsEmpty());
+}
+
+ThreadPool::Worker* ThreadPool::ScheduleTaskLocked(MonitorLocker* ml,
+                                                   std::unique_ptr<Task> task) {
+  // Enqueue the new task.
+  tasks_.Append(task.release());
+  pending_tasks_++;
+  ASSERT(pending_tasks_ >= 1);
+
+  // Notify existing idle worker (if available).
+  if (count_idle_ >= pending_tasks_) {
+    ASSERT(!idle_workers_.IsEmpty());
+    ml->Notify();
+    return nullptr;
+  }
+
+  // Otherwise start a new worker.
+  auto new_worker = new Worker(this);
+  idle_workers_.Append(new_worker);
+  count_idle_++;
+  return new_worker;
+}
+
+ThreadPool::Worker::Worker(ThreadPool* pool)
+    : pool_(pool), join_id_(OSThread::kInvalidThreadJoinId) {}
+
+void ThreadPool::Worker::StartThread() {
+  int result = OSThread::Start("DartWorker", &Worker::Main,
+                               reinterpret_cast<uword>(this));
+  if (result != 0) {
+    FATAL1("Could not start worker thread: result = %d.", result);
+  }
+}
+
+void ThreadPool::Worker::Main(uword args) {
+  OSThread* os_thread = OSThread::Current();
+  ASSERT(os_thread != nullptr);
+
+  Worker* worker = reinterpret_cast<Worker*>(args);
+  ThreadPool* pool = worker->pool_;
+
+  // Once the worker quits it needs to be joined.
+  worker->join_id_ = OSThread::GetCurrentThreadJoinId(os_thread);
+
+#if defined(DEBUG)
+  {
+    MonitorLocker ml(&pool->pool_monitor_);
+    ASSERT(pool->idle_workers_.ContainsForDebugging(worker));
+  }
+#endif
+
+  pool->WorkerLoop(worker);
 
   // Call the thread exit hook here to notify the embedder that the
   // thread pool thread is exiting.
diff --git a/runtime/vm/thread_pool.h b/runtime/vm/thread_pool.h
index 5a1ff54..08fc19d 100644
--- a/runtime/vm/thread_pool.h
+++ b/runtime/vm/thread_pool.h
@@ -10,19 +10,22 @@
 
 #include "vm/allocation.h"
 #include "vm/globals.h"
+#include "vm/intrusive_dlist.h"
 #include "vm/os_thread.h"
 
 namespace dart {
 
+class MonitorLocker;
+
 class ThreadPool {
  public:
   // Subclasses of Task are able to run on a ThreadPool.
-  class Task {
+  class Task : public IntrusiveDListEntry<Task> {
    protected:
-    Task();
+    Task() {}
 
    public:
-    virtual ~Task();
+    virtual ~Task() {}
 
     // Override this to provide task-specific behavior.
     virtual void Run() = 0;
@@ -32,10 +35,7 @@
   };
 
   ThreadPool();
-
-  // Shuts down this thread pool. Causes workers to terminate
-  // themselves when they are active again.
-  ~ThreadPool();
+  virtual ~ThreadPool();
 
   // Runs a task on the thread pool.
   template <typename T, typename... Args>
@@ -43,110 +43,65 @@
     return RunImpl(std::unique_ptr<Task>(new T(std::forward<Args>(args)...)));
   }
 
-  // Some simple stats.
-  uint64_t workers_running() const { return count_running_; }
-  uint64_t workers_idle() const { return count_idle_; }
-  uint64_t workers_started() const { return count_started_; }
-  uint64_t workers_stopped() const { return count_stopped_; }
+  // Trigger shutdown, prevents scheduling of new tasks.
+  void TriggerShutdown();
+
+  // Exposed for unit test in thread_pool_test.cc
+  uint64_t workers_started() const { return count_idle_ + count_running_; }
+  // Exposed for unit test in thread_pool_test.cc
+  uint64_t workers_stopped() const { return count_dead_; }
 
  private:
-  class Worker {
+  class Worker : public IntrusiveDListEntry<Worker> {
    public:
     explicit Worker(ThreadPool* pool);
 
-    // Sets a task on the worker.
-    void SetTask(std::unique_ptr<Task> task);
-
     // Starts the thread for the worker.  This should only be called
     // after a task has been set by the initial call to SetTask().
     void StartThread();
 
-    // Main loop for a worker. Returns true if worker is removed from thread
-    // lists, false otherwise.
-    bool Loop();
-
-    // Causes worker to terminate eventually.
-    void Shutdown();
-
-    // Get the Worker's thread id.
-    ThreadId id();
-
    private:
     friend class ThreadPool;
 
     // The main entry point for new worker threads.
     static void Main(uword args);
 
-    bool IsDone() const { return done_; }
-
-    // Fields owned by Worker.
-    Monitor monitor_;
+    // Fields initialized during construction or in start of main function of
+    // thread.
     ThreadPool* pool_;
-    std::unique_ptr<Task> task_;
-    ThreadId id_;
-    bool done_;
-
-    // Fields owned by ThreadPool.  Workers should not look at these
-    // directly.  It's like looking at the sun.
-    bool owned_;         // Protected by ThreadPool::mutex_
-    Worker* all_next_;   // Protected by ThreadPool::mutex_
-    Worker* idle_next_;  // Protected by ThreadPool::mutex_
-
-    Worker* shutdown_next_;  // Protected by ThreadPool::exit_monitor
+    ThreadJoinId join_id_;
 
     DISALLOW_COPY_AND_ASSIGN(Worker);
   };
 
-  class JoinList {
-   public:
-    explicit JoinList(ThreadJoinId id, JoinList* next) : id_(id), next_(next) {}
-
-    // The thread pool's mutex_ must be held when calling this.
-    static void AddLocked(ThreadJoinId id, JoinList** list);
-
-    static void Join(JoinList** list);
-
-    ThreadJoinId id() const { return id_; }
-    JoinList* next() const { return next_; }
-
-   private:
-    ThreadJoinId id_;
-    JoinList* next_;
-
-    DISALLOW_COPY_AND_ASSIGN(JoinList);
-  };
+ private:
+  using TaskList = IntrusiveDList<Task>;
+  using WorkerList = IntrusiveDList<Worker>;
 
   bool RunImpl(std::unique_ptr<Task> task);
-  void Shutdown();
+  void WorkerLoop(Worker* worker);
 
-  // Expensive.  Use only in assertions.
-  bool IsIdle(Worker* worker);
+  Worker* ScheduleTaskLocked(MonitorLocker* ml, std::unique_ptr<Task> task);
 
-  bool RemoveWorkerFromIdleList(Worker* worker);
-  bool RemoveWorkerFromAllList(Worker* worker);
+  void IdleToRunningLocked(Worker* worker);
+  void RunningToIdleLocked(Worker* worker);
+  void IdleToDeadLocked(Worker* worker);
+  void ObtainDeadWorkersLocked(WorkerList* dead_workers_to_join);
+  void JoinDeadWorkersLocked(WorkerList* dead_workers_to_join);
 
-  void AddWorkerToShutdownList(Worker* worker);
-  bool RemoveWorkerFromShutdownList(Worker* worker);
-
-  void ReapExitedIdleThreads();
-
-  // Worker operations.
-  void SetIdleLocked(Worker* worker);  // Assumes mutex_ is held.
-  void SetIdleAndReapExited(Worker* worker);
-  bool ReleaseIdleWorker(Worker* worker);
-
-  Mutex mutex_;
-  bool shutting_down_;
-  Worker* all_workers_;
-  Worker* idle_workers_;
-  uint64_t count_started_;
-  uint64_t count_stopped_;
-  uint64_t count_running_;
-  uint64_t count_idle_;
+  Monitor pool_monitor_;
+  bool shutting_down_ = false;
+  uint64_t count_running_ = 0;
+  uint64_t count_idle_ = 0;
+  uint64_t count_dead_ = 0;
+  WorkerList running_workers_;
+  WorkerList idle_workers_;
+  WorkerList dead_workers_;
+  uint64_t pending_tasks_ = 0;
+  TaskList tasks_;
 
   Monitor exit_monitor_;
-  Worker* shutting_down_workers_;
-  JoinList* join_list_;
+  std::atomic<bool> all_workers_dead_;
 
   DISALLOW_COPY_AND_ASSIGN(ThreadPool);
 };
diff --git a/sdk/lib/_internal/vm/bin/builtin.dart b/sdk/lib/_internal/vm/bin/builtin.dart
index 3c7f591..b79755e 100644
--- a/sdk/lib/_internal/vm/bin/builtin.dart
+++ b/sdk/lib/_internal/vm/bin/builtin.dart
@@ -11,7 +11,6 @@
 import 'dart:collection' hide LinkedList, LinkedListEntry;
 import 'dart:_internal' hide Symbol;
 import 'dart:io';
-import 'dart:convert';
 import 'dart:isolate';
 import 'dart:typed_data';
 
@@ -131,12 +130,11 @@
     _log('Resolving package with uri path: ${uri.path}');
   }
   var resolvedUri;
-  final error = _packageError;
-  if (error != null) {
+  if (_packageError != null) {
     if (_traceLoading) {
-      _log("Resolving package with pending resolution error: $error");
+      _log("Resolving package with pending resolution error: $_packageError");
     }
-    throw error;
+    throw _packageError;
   } else {
     if (packageNameEnd < 0) {
       // Package URIs must have a path after the package name, even if it's
@@ -432,67 +430,9 @@
   return result;
 }
 
-_loadPackageConfigFile(bool traceLoading, Uri packageConfig) {
-  try {
-    final Uint8List data = File.fromUri(packageConfig).readAsBytesSync();
-    if (traceLoading) {
-      _log("Loaded package config file from $packageConfig.");
-    }
-    return _parsePackageConfig(traceLoading, packageConfig, data);
-  } catch (e, s) {
-    if (traceLoading) {
-      _log("Error loading packages: $e\n$s");
-    }
-    return "Uncaught error ($e) loading packages file.";
-  }
-}
-
-// The .dart_tool/package_config.json format is described in
-//
-// https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/package-config-file-v2.md
-//
-// The returned list has the format:
-//
-//    [0] Location of package_config.json file.
-//    [1] null
-//    [n*2] Name of n-th package
-//    [n*2 + 1] Location of n-th package's sources (as a String)
-//
-List _parsePackageConfig(
-    bool traceLoading, Uri packageConfig, Uint8List bytes) {
-  final Map packageJson = json.decode(utf8.decode(bytes));
-  final version = packageJson['configVersion'];
-  if (version != 2) {
-    throw 'The package configuration file has an unsupported version.';
-  }
-  // The first entry contains the location of the identified
-  // .dart_tool/package_config.json file instead of a mapping.
-  final result = <dynamic>[packageConfig.toString(), null];
-  final List packages = packageJson['packages'] ?? [];
-  for (final Map package in packages) {
-    final String name = package['name'];
-    final String rootUri = package['rootUri'];
-    final String packageUri = package['packageUri'];
-    final Uri resolvedRootUri = packageConfig.resolve(rootUri);
-    final Uri resolvedPackageUri = packageUri != null
-        ? resolvedRootUri.resolve(packageUri)
-        : resolvedRootUri;
-    if (packageUri != null &&
-        !'$resolvedPackageUri'.contains('$resolvedRootUri')) {
-      throw 'The resolved "packageUri" is not a subdirectory of the "rootUri".';
-    }
-    result.add(name);
-    result.add(resolvedPackageUri.toString());
-    if (traceLoading) {
-      _log('Resolved package $name to be at $resolvedPackageUri');
-    }
-  }
-  return result;
-}
-
 _loadPackagesFile(bool traceLoading, Uri packagesFile) {
   try {
-    final Uint8List data = File.fromUri(packagesFile).readAsBytesSync();
+    var data = new File.fromUri(packagesFile).readAsBytesSync();
     if (traceLoading) {
       _log("Loaded packages file from $packagesFile:\n"
           "${new String.fromCharCodes(data)}");
@@ -506,49 +446,39 @@
   }
 }
 
-_findPackagesConfiguration(bool traceLoading, Uri base) {
+_findPackagesFile(bool traceLoading, Uri base) {
   try {
-    // Walk up the directory hierarchy to check for the existence of either one
-    // of
-    //   - .dart_tool/package_config.json
-    //   - .packages
-    var currentDir = new File.fromUri(base).parent;
-    while (true) {
-      final dirUri = currentDir.uri;
-
-      // We prefer using `.dart_tool/package_config.json` over `.packages`.
-      final packageConfig = dirUri.resolve(".dart_tool/package_config.json");
-      if (traceLoading) {
-        _log("Checking for $packageConfig file.");
-      }
-      bool exists = File.fromUri(packageConfig).existsSync();
-      if (traceLoading) {
-        _log("$packageConfig exists: $exists");
-      }
-      if (exists) {
-        return _loadPackageConfigFile(traceLoading, packageConfig);
-      }
-
-      final packagesFile = dirUri.resolve(".packages");
+    // Walk up the directory hierarchy to check for the existence of
+    // .packages files in parent directories and for the existence of a
+    // packages/ directory on the first iteration.
+    var dir = new File.fromUri(base).parent;
+    var prev = null;
+    // Keep searching until we reach the root.
+    while ((prev == null) || (prev.path != dir.path)) {
+      // Check for the existence of a .packages file and if it exists try to
+      // load and parse it.
+      var dirUri = dir.uri;
+      var packagesFile = dirUri.resolve(".packages");
       if (traceLoading) {
         _log("Checking for $packagesFile file.");
       }
-      exists = File.fromUri(packagesFile).existsSync();
+      var exists = new File.fromUri(packagesFile).existsSync();
       if (traceLoading) {
         _log("$packagesFile exists: $exists");
       }
       if (exists) {
         return _loadPackagesFile(traceLoading, packagesFile);
       }
-      final parentDir = currentDir.parent;
-      if (dirUri == parentDir.uri) break;
-      currentDir = parentDir;
+      // Move up one level.
+      prev = dir;
+      dir = dir.parent;
     }
 
+    // No .packages file was found.
     if (traceLoading) {
-      _log("Could not resolve a package configuration from $base");
+      _log("Could not resolve a package location from $base");
     }
-    return "Could not resolve a package configuration for base at $base";
+    return "Could not resolve a package location for base at $base";
   } catch (e, s) {
     if (traceLoading) {
       _log("Error loading packages: $e\n$s");
@@ -579,7 +509,7 @@
   try {
     if (tag == -1) {
       if (resource.scheme == '' || resource.scheme == 'file') {
-        return _findPackagesConfiguration(traceLoading, resource);
+        return _findPackagesFile(traceLoading, resource);
       } else {
         return "Unsupported scheme used to locate .packages file:'$resource'.";
       }
@@ -650,9 +580,6 @@
 }
 
 // Embedder Entrypoint:
-// The embedder calls this method with the value of the --packages command line
-// option. It can point to a ".packages" or a ".dart_tool/package_config.json"
-// file.
 @pragma("vm:entry-point")
 String _setPackagesMap(String packagesParam) {
   if (!_setupCompleted) {
diff --git a/sdk/lib/_internal/vm/lib/internal_patch.dart b/sdk/lib/_internal/vm/lib/internal_patch.dart
index 76a8a88..6accfc3 100644
--- a/sdk/lib/_internal/vm/lib/internal_patch.dart
+++ b/sdk/lib/_internal/vm/lib/internal_patch.dart
@@ -48,6 +48,7 @@
   // Implementation of package root/map provision.
   static var packageRootString;
   static var packageConfigString;
+  static var packageRootUriFuture;
   static var packageConfigUriFuture;
   static var resolvePackageUriFuture;
 
diff --git a/sdk/lib/_internal/vm/lib/isolate_patch.dart b/sdk/lib/_internal/vm/lib/isolate_patch.dart
index e357b8a..e17c1de 100644
--- a/sdk/lib/_internal/vm/lib/isolate_patch.dart
+++ b/sdk/lib/_internal/vm/lib/isolate_patch.dart
@@ -267,21 +267,21 @@
   // The control port (aka the main isolate port) does not handle any messages.
   if (controlPort != null) {
     controlPort.handler = (_) {}; // Nobody home on the control port.
+  }
 
-    if (parentPort != null) {
-      // Build a message to our parent isolate providing access to the
-      // current isolate's control port and capabilities.
-      //
-      // TODO(floitsch): Send an error message if we can't find the entry point.
-      final readyMessage = List(2);
-      readyMessage[0] = controlPort.sendPort;
-      readyMessage[1] = capabilities;
+  if (parentPort != null) {
+    // Build a message to our parent isolate providing access to the
+    // current isolate's control port and capabilities.
+    //
+    // TODO(floitsch): Send an error message if we can't find the entry point.
+    var readyMessage = new List(2);
+    readyMessage[0] = controlPort.sendPort;
+    readyMessage[1] = capabilities;
 
-      // Out of an excess of paranoia we clear the capabilities from the
-      // stack.  Not really necessary.
-      capabilities = null;
-      parentPort.send(readyMessage);
-    }
+    // Out of an excess of paranoia we clear the capabilities from the
+    // stack.  Not really necessary.
+    capabilities = null;
+    parentPort.send(readyMessage);
   }
   assert(capabilities == null);
 
@@ -343,6 +343,7 @@
   }
 
   static bool _packageSupported() =>
+      (VMLibraryHooks.packageRootUriFuture != null) &&
       (VMLibraryHooks.packageConfigUriFuture != null) &&
       (VMLibraryHooks.resolvePackageUriFuture != null);
 
@@ -354,33 +355,46 @@
       SendPort onError,
       String debugName}) async {
     // `paused` isn't handled yet.
-    // Check for the type of `entryPoint` on the spawning isolate to make
-    // error-handling easier.
-    if (entryPoint is! _UnaryFunction) {
-      throw new ArgumentError(entryPoint);
-    }
-    // The VM will invoke [_startIsolate] with entryPoint as argument.
-
-    // We do not inherit the package config settings from the parent isolate,
-    // instead we use the values that were set on the command line.
-    var packageConfig = VMLibraryHooks.packageConfigString;
-    var script = VMLibraryHooks.platformScript;
-    if (script == null) {
-      // We do not have enough information to support spawning the new
-      // isolate.
-      throw new UnsupportedError("Isolate.spawn");
-    }
-    if (script.isScheme("package")) {
-      script = await Isolate.resolvePackageUri(script);
-    }
-
-    final RawReceivePort readyPort = new RawReceivePort();
+    RawReceivePort readyPort;
     try {
-      _spawnFunction(readyPort.sendPort, script.toString(), entryPoint, message,
-          paused, errorsAreFatal, onExit, onError, packageConfig, debugName);
+      // Check for the type of `entryPoint` on the spawning isolate to make
+      // error-handling easier.
+      if (entryPoint is! _UnaryFunction) {
+        throw new ArgumentError(entryPoint);
+      }
+      // The VM will invoke [_startIsolate] with entryPoint as argument.
+      readyPort = new RawReceivePort();
+
+      // We do not inherit the package config settings from the parent isolate,
+      // instead we use the values that were set on the command line.
+      var packageConfig = VMLibraryHooks.packageConfigString;
+      var script = VMLibraryHooks.platformScript;
+      if (script == null) {
+        // We do not have enough information to support spawning the new
+        // isolate.
+        throw new UnsupportedError("Isolate.spawn");
+      }
+      if (script.scheme == "package") {
+        script = await Isolate.resolvePackageUri(script);
+      }
+
+      _spawnFunction(
+          readyPort.sendPort,
+          script.toString(),
+          entryPoint,
+          message,
+          paused,
+          errorsAreFatal,
+          onExit,
+          onError,
+          null,
+          packageConfig,
+          debugName);
       return await _spawnCommon(readyPort);
     } catch (e, st) {
-      readyPort.close();
+      if (readyPort != null) {
+        readyPort.close();
+      }
       return await new Future<Isolate>.error(e, st);
     }
   }
@@ -397,6 +411,7 @@
       Uri packageConfig,
       bool automaticPackageResolution: false,
       String debugName}) async {
+    RawReceivePort readyPort;
     if (environment != null) {
       throw new UnimplementedError("environment");
     }
@@ -419,30 +434,38 @@
             "packageRoot and a packageConfig.");
       }
     }
-    // Resolve the uri against the current isolate's root Uri first.
-    final Uri spawnedUri = _rootUri.resolveUri(uri);
-
-    // Inherit this isolate's package resolution setup if not overridden.
-    if (!automaticPackageResolution && packageConfig == null) {
-      if (Isolate._packageSupported()) {
-        packageConfig = await Isolate.packageConfig;
-      }
-    }
-
-    // Ensure to resolve package: URIs being handed in as parameters.
-    if (packageConfig != null) {
-      // Avoid calling resolvePackageUri if not strictly necessary in case
-      // the API is not supported.
-      if (packageConfig.isScheme("package")) {
-        packageConfig = await Isolate.resolvePackageUri(packageConfig);
-      }
-    }
-
-    // The VM will invoke [_startIsolate] and not `main`.
-    final packageConfigString = packageConfig?.toString();
-
-    final RawReceivePort readyPort = new RawReceivePort();
     try {
+      // Resolve the uri against the current isolate's root Uri first.
+      var spawnedUri = _rootUri.resolveUri(uri);
+
+      // Inherit this isolate's package resolution setup if not overridden.
+      if (!automaticPackageResolution &&
+          (packageRoot == null) &&
+          (packageConfig == null)) {
+        if (Isolate._packageSupported()) {
+          packageRoot = await Isolate.packageRoot;
+          packageConfig = await Isolate.packageConfig;
+        }
+      }
+
+      // Ensure to resolve package: URIs being handed in as parameters.
+      if (packageRoot != null) {
+        // `packages/` directory is no longer supported. Force it null.
+        // TODO(mfairhurst) Should this throw an exception?
+        packageRoot = null;
+      } else if (packageConfig != null) {
+        // Avoid calling resolvePackageUri if not strictly necessary in case
+        // the API is not supported.
+        if (packageConfig.scheme == "package") {
+          packageConfig = await Isolate.resolvePackageUri(packageConfig);
+        }
+      }
+
+      // The VM will invoke [_startIsolate] and not `main`.
+      readyPort = new RawReceivePort();
+      var packageRootString = packageRoot?.toString();
+      var packageConfigString = packageConfig?.toString();
+
       _spawnUri(
           readyPort.sendPort,
           spawnedUri.toString(),
@@ -455,17 +478,20 @@
           checked,
           null,
           /* environment */
+          packageRootString,
           packageConfigString,
           debugName);
       return await _spawnCommon(readyPort);
     } catch (e) {
-      readyPort.close();
+      if (readyPort != null) {
+        readyPort.close();
+      }
       rethrow;
     }
   }
 
   static Future<Isolate> _spawnCommon(RawReceivePort readyPort) {
-    final completer = new Completer<Isolate>.sync();
+    Completer completer = new Completer<Isolate>.sync();
     readyPort.handler = (readyMessage) {
       readyPort.close();
       if (readyMessage is List && readyMessage.length == 2) {
@@ -510,6 +536,7 @@
       bool errorsAreFatal,
       SendPort onExit,
       SendPort onError,
+      String packageRoot,
       String packageConfig,
       String debugName) native "Isolate_spawnFunction";
 
@@ -524,6 +551,7 @@
       bool errorsAreFatal,
       bool checked,
       List environment,
+      String packageRoot,
       String packageConfig,
       String debugName) native "Isolate_spawnUri";
 
diff --git a/sdk_nnbd/lib/_internal/vm/bin/builtin.dart b/sdk_nnbd/lib/_internal/vm/bin/builtin.dart
index 711abb0..e186a81 100644
--- a/sdk_nnbd/lib/_internal/vm/bin/builtin.dart
+++ b/sdk_nnbd/lib/_internal/vm/bin/builtin.dart
@@ -9,7 +9,6 @@
 import 'dart:collection' hide LinkedList, LinkedListEntry;
 import 'dart:_internal' hide Symbol;
 import 'dart:io';
-import 'dart:convert';
 import 'dart:isolate';
 import 'dart:typed_data';
 
@@ -431,67 +430,9 @@
   return result;
 }
 
-_loadPackageConfigFile(bool traceLoading, Uri packageConfig) {
-  try {
-    final Uint8List data = File.fromUri(packageConfig).readAsBytesSync();
-    if (traceLoading) {
-      _log("Loaded package config file from $packageConfig.");
-    }
-    return _parsePackageConfig(traceLoading, packageConfig, data);
-  } catch (e, s) {
-    if (traceLoading) {
-      _log("Error loading packages: $e\n$s");
-    }
-    return "Uncaught error ($e) loading packages file.";
-  }
-}
-
-// The .dart_tool/package_config.json format is described in
-//
-// https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/package-config-file-v2.md
-//
-// The returned list has the format:
-//
-//    [0] Location of package_config.json file.
-//    [1] null
-//    [n*2] Name of n-th package
-//    [n*2 + 1] Location of n-th package's sources (as a String)
-//
-List _parsePackageConfig(
-    bool traceLoading, Uri packageConfig, Uint8List bytes) {
-  final Map packageJson = json.decode(utf8.decode(bytes));
-  final version = packageJson['configVersion'];
-  if (version != 2) {
-    throw 'The package configuration file has an unsupported version.';
-  }
-  // The first entry contains the location of the identified
-  // .dart_tool/package_config.json file instead of a mapping.
-  final result = <dynamic>[packageConfig.toString(), null];
-  final List packages = packageJson['packages'] ?? [];
-  for (final Map package in packages) {
-    final String name = package['name'];
-    final String rootUri = package['rootUri'];
-    final String? packageUri = package['packageUri'];
-    final Uri resolvedRootUri = packageConfig.resolve(rootUri);
-    final Uri resolvedPackageUri = packageUri != null
-        ? resolvedRootUri.resolve(packageUri)
-        : resolvedRootUri;
-    if (packageUri != null &&
-        !'$resolvedPackageUri'.contains('$resolvedRootUri')) {
-      throw 'The resolved "packageUri" is not a subdirectory of the "rootUri".';
-    }
-    result.add(name);
-    result.add(resolvedPackageUri.toString());
-    if (traceLoading) {
-      _log('Resolved package $name to be at $resolvedPackageUri');
-    }
-  }
-  return result;
-}
-
 _loadPackagesFile(bool traceLoading, Uri packagesFile) {
   try {
-    final Uint8List data = File.fromUri(packagesFile).readAsBytesSync();
+    var data = new File.fromUri(packagesFile).readAsBytesSync();
     if (traceLoading) {
       _log("Loaded packages file from $packagesFile:\n"
           "${new String.fromCharCodes(data)}");
@@ -505,49 +446,39 @@
   }
 }
 
-_findPackagesConfiguration(bool traceLoading, Uri base) {
+_findPackagesFile(bool traceLoading, Uri base) {
   try {
-    // Walk up the directory hierarchy to check for the existence of either one
-    // of
-    //   - .dart_tool/package_config.json
-    //   - .packages
-    var currentDir = new File.fromUri(base).parent;
-    while (true) {
-      final dirUri = currentDir.uri;
-
-      // We prefer using `.dart_tool/package_config.json` over `.packages`.
-      final packageConfig = dirUri.resolve(".dart_tool/package_config.json");
-      if (traceLoading) {
-        _log("Checking for $packageConfig file.");
-      }
-      bool exists = File.fromUri(packageConfig).existsSync();
-      if (traceLoading) {
-        _log("$packageConfig exists: $exists");
-      }
-      if (exists) {
-        return _loadPackageConfigFile(traceLoading, packageConfig);
-      }
-
-      final packagesFile = dirUri.resolve(".packages");
+    // Walk up the directory hierarchy to check for the existence of
+    // .packages files in parent directories and for the existence of a
+    // packages/ directory on the first iteration.
+    var dir = new File.fromUri(base).parent;
+    var prev = null;
+    // Keep searching until we reach the root.
+    while ((prev == null) || (prev.path != dir.path)) {
+      // Check for the existence of a .packages file and if it exists try to
+      // load and parse it.
+      var dirUri = dir.uri;
+      var packagesFile = dirUri.resolve(".packages");
       if (traceLoading) {
         _log("Checking for $packagesFile file.");
       }
-      exists = File.fromUri(packagesFile).existsSync();
+      var exists = new File.fromUri(packagesFile).existsSync();
       if (traceLoading) {
         _log("$packagesFile exists: $exists");
       }
       if (exists) {
         return _loadPackagesFile(traceLoading, packagesFile);
       }
-      final parentDir = currentDir.parent;
-      if (dirUri == parentDir.uri) break;
-      currentDir = parentDir;
+      // Move up one level.
+      prev = dir;
+      dir = dir.parent;
     }
 
+    // No .packages file was found.
     if (traceLoading) {
-      _log("Could not resolve a package configuration from $base");
+      _log("Could not resolve a package location from $base");
     }
-    return "Could not resolve a package configuration for base at $base";
+    return "Could not resolve a package location for base at $base";
   } catch (e, s) {
     if (traceLoading) {
       _log("Error loading packages: $e\n$s");
@@ -578,7 +509,7 @@
   try {
     if (tag == -1) {
       if (resource.scheme == '' || resource.scheme == 'file') {
-        return _findPackagesConfiguration(traceLoading, resource);
+        return _findPackagesFile(traceLoading, resource);
       } else {
         return "Unsupported scheme used to locate .packages file:'$resource'.";
       }
@@ -649,9 +580,6 @@
 }
 
 // Embedder Entrypoint:
-// The embedder calls this method with the value of the --packages command line
-// option. It can point to a ".packages" or a ".dart_tool/package_config.json"
-// file.
 @pragma("vm:entry-point")
 String _setPackagesMap(String packagesParam) {
   if (!_setupCompleted) {
@@ -713,7 +641,7 @@
   VMLibraryHooks.resolvePackageUriFuture = _resolvePackageUriFuture;
 }
 
-Future<Uri> _getPackageConfigFuture() {
+Future<Uri?> _getPackageConfigFuture() {
   if (_traceLoading) {
     _log("Request for package config from user code.");
   }
diff --git a/sdk_nnbd/lib/_internal/vm/lib/internal_patch.dart b/sdk_nnbd/lib/_internal/vm/lib/internal_patch.dart
index 2faf799..b484a2c 100644
--- a/sdk_nnbd/lib/_internal/vm/lib/internal_patch.dart
+++ b/sdk_nnbd/lib/_internal/vm/lib/internal_patch.dart
@@ -52,6 +52,7 @@
   // Implementation of package root/map provision.
   static var packageRootString;
   static var packageConfigString;
+  static var packageRootUriFuture;
   static var packageConfigUriFuture;
   static var resolvePackageUriFuture;
 
diff --git a/sdk_nnbd/lib/_internal/vm/lib/isolate_patch.dart b/sdk_nnbd/lib/_internal/vm/lib/isolate_patch.dart
index 7658010..dca8156 100644
--- a/sdk_nnbd/lib/_internal/vm/lib/isolate_patch.dart
+++ b/sdk_nnbd/lib/_internal/vm/lib/isolate_patch.dart
@@ -272,7 +272,7 @@
       // current isolate's control port and capabilities.
       //
       // TODO(floitsch): Send an error message if we can't find the entry point.
-      final readyMessage = List<Object?>.filled(2, null);
+      var readyMessage = new List<Object?>.filled(2, null);
       readyMessage[0] = controlPort.sendPort;
       readyMessage[1] = capabilities;
 
@@ -319,12 +319,12 @@
   String get debugName => _getDebugName(controlPort);
 
   @patch
-  static Future<Uri> get packageRoot {
+  static Future<Uri?> get packageRoot {
     return Future.value(null);
   }
 
   @patch
-  static Future<Uri> get packageConfig {
+  static Future<Uri?> get packageConfig {
     var hook = VMLibraryHooks.packageConfigUriFuture;
     if (hook == null) {
       throw new UnsupportedError("Isolate.packageConfig");
@@ -342,6 +342,7 @@
   }
 
   static bool _packageSupported() =>
+      (VMLibraryHooks.packageRootUriFuture != null) &&
       (VMLibraryHooks.packageConfigUriFuture != null) &&
       (VMLibraryHooks.resolvePackageUriFuture != null);
 
@@ -375,8 +376,18 @@
 
     final RawReceivePort readyPort = new RawReceivePort();
     try {
-      _spawnFunction(readyPort.sendPort, script.toString(), entryPoint, message,
-          paused, errorsAreFatal, onExit, onError, packageConfig, debugName);
+      _spawnFunction(
+          readyPort.sendPort,
+          script.toString(),
+          entryPoint,
+          message,
+          paused,
+          errorsAreFatal,
+          onExit,
+          onError,
+          null,
+          packageConfig,
+          debugName);
       return await _spawnCommon(readyPort);
     } catch (e, st) {
       readyPort.close();
@@ -419,17 +430,24 @@
       }
     }
     // Resolve the uri against the current isolate's root Uri first.
-    final Uri spawnedUri = _rootUri!.resolveUri(uri);
+    var spawnedUri = _rootUri!.resolveUri(uri);
 
     // Inherit this isolate's package resolution setup if not overridden.
-    if (!automaticPackageResolution && packageConfig == null) {
+    if (!automaticPackageResolution &&
+        (packageRoot == null) &&
+        (packageConfig == null)) {
       if (Isolate._packageSupported()) {
+        packageRoot = await Isolate.packageRoot;
         packageConfig = await Isolate.packageConfig;
       }
     }
 
     // Ensure to resolve package: URIs being handed in as parameters.
-    if (packageConfig != null) {
+    if (packageRoot != null) {
+      // `packages/` directory is no longer supported. Force it null.
+      // TODO(mfairhurst) Should this throw an exception?
+      packageRoot = null;
+    } else if (packageConfig != null) {
       // Avoid calling resolvePackageUri if not strictly necessary in case
       // the API is not supported.
       if (packageConfig.isScheme("package")) {
@@ -438,7 +456,8 @@
     }
 
     // The VM will invoke [_startIsolate] and not `main`.
-    final packageConfigString = packageConfig?.toString();
+    var packageRootString = packageRoot?.toString();
+    var packageConfigString = packageConfig?.toString();
 
     final RawReceivePort readyPort = new RawReceivePort();
     try {
@@ -454,6 +473,7 @@
           checked,
           null,
           /* environment */
+          packageRootString,
           packageConfigString,
           debugName);
       return await _spawnCommon(readyPort);
@@ -509,6 +529,7 @@
       bool errorsAreFatal,
       SendPort? onExit,
       SendPort? onError,
+      String? packageRoot,
       String? packageConfig,
       String? debugName) native "Isolate_spawnFunction";
 
@@ -523,6 +544,7 @@
       bool errorsAreFatal,
       bool? checked,
       List? environment,
+      String? packageRoot,
       String? packageConfig,
       String? debugName) native "Isolate_spawnUri";
 
diff --git a/tests/compiler/dart2js/model/cfe_annotations_test.dart b/tests/compiler/dart2js/model/cfe_annotations_test.dart
index 2dde603..3c5dbd4 100644
--- a/tests/compiler/dart2js/model/cfe_annotations_test.dart
+++ b/tests/compiler/dart2js/model/cfe_annotations_test.dart
@@ -11,6 +11,7 @@
 import 'package:compiler/src/ir/annotations.dart';
 import 'package:compiler/src/js_backend/native_data.dart';
 import 'package:compiler/src/kernel/kernel_strategy.dart';
+import 'package:compiler/src/kernel/element_map.dart';
 import 'package:compiler/src/kernel/element_map_impl.dart';
 import 'package:expect/expect.dart';
 import 'package:kernel/ast.dart' as ir;
@@ -204,6 +205,7 @@
       void testAll(NativeData nativeData) {
         void testMember(String idPrefix, ir.Member member,
             {bool implicitJsInteropMember, bool implicitNativeMember}) {
+          if (memberIsIgnorable(member)) return;
           String memberId = '$idPrefix::${member.name.name}';
           MemberEntity memberEntity = elementMap.getMember(member);
 
diff --git a/tests/corelib/cast_strong_test.dart b/tests/corelib/cast_strong_test.dart
index b935ac3..22d5248 100644
--- a/tests/corelib/cast_strong_test.dart
+++ b/tests/corelib/cast_strong_test.dart
@@ -17,18 +17,17 @@
 
 testIterable() {
   var iterable = new Iterable<C?>.generate(elements.length, (n) => elements[n]);
-  var iterableNonNull = Iterable.castFrom<C?, C>(iterable);
   // Downcast non-nullable.
 
   // An iterable that (likely) can do direct access.
-  var dIterableDirect = Iterable.castFrom<C, D>(iterableNonNull);
+  var dIterableDirect = Iterable.castFrom<C?, D>(iterable);
   Expect.equals(d, dIterableDirect.elementAt(1));
   // null is not D.
   Expect.throws(() => dIterableDirect.skip(3).elementAt(1));
 
   // An iterable that cannot do direct access.
   var dIterableNonDirect =
-      Iterable.castFrom<C, D>(iterableNonNull.where((_) => true));
+      Iterable.castFrom<C?, D>(iterable.where((_) => true));
   Expect.equals(d, dIterableNonDirect.elementAt(1));
   // null is not D.
   Expect.throws(() => dIterableNonDirect.skip(3).elementAt(1));
@@ -36,38 +35,35 @@
   // Iterable that definitely won't survive accessing element 3.
   var iterableLimited = new Iterable<C?>.generate(
       elements.length, (n) => n == 3 ? throw "untouchable" : elements[n]);
-  var iterableLimitedNonNull = Iterable.castFrom<C?, C>(iterableLimited);
-  var dIterableLimited = Iterable.castFrom<C, D>(iterableLimitedNonNull);
+  var dIterableLimited = Iterable.castFrom<C?, D>(iterableLimited);
   Expect.equals(d, dIterableLimited.elementAt(1));
   // null is not D.
   Expect.throws(() => dIterableLimited.skip(3).elementAt(1));
 
   // Upcast non-nullable.
-  var objectIterable = Iterable.castFrom<C, Object>(iterableNonNull);
+  var objectIterable = Iterable.castFrom<C?, Object>(iterable);
   // null is not Object.
   Expect.throws(() => objectIterable.skip(3).elementAt(1));
 }
 
 testList() {
   var list = new List<C?>.from(elements);
-  var listNonNull = List.castFrom<C?, C>(list);
 
   // Downcast non-nullable.
-  var dList = List.castFrom<C, D>(listNonNull);
+  var dList = List.castFrom<C?, D>(list);
   Expect.equals(d, dList[1]);
   Expect.throws(() => dList.last); // null is not D.
 
   // Upcast non-nullable.
-  var objectList = List.castFrom<C, Object>(listNonNull);
+  var objectList = List.castFrom<C?, Object>(list);
   Expect.throws(() => objectList.last); // null is not Object.
 }
 
 testMap() {
   var map = new Map.fromIterables(elements, elements);
-  var mapNonNull = Map.castFrom<C?, C?, C, C>(map);
 
   // Downcast non-nullable.
-  var dMap = Map.castFrom<C, C, D, D>(mapNonNull);
+  var dMap = Map.castFrom<C?, C?, D, D>(map);
   Expect.equals(d, dMap[d]);
   Expect.isTrue(dMap.containsKey(null));
   Expect.equals(null, dMap[null]);
@@ -79,7 +75,7 @@
   Expect.throws(() => dMap.values.toList());
 
   // Upcast non-nullable.
-  var objectMap = Map.castFrom<C, C, Object, Object>(mapNonNull);
+  var objectMap = Map.castFrom<C?, C?, Object, Object>(map);
   Expect.isTrue(objectMap.containsKey(null));
   Expect.equals(null, objectMap[null]);
 
@@ -93,14 +89,13 @@
 
 testSet() {
   var setEls = new Set<C?>.from(elements);
-  var setNonNull = Set.castFrom<C?, C>(setEls);
 
   // Downcast non-nullable.
-  var dSet = Set.castFrom<C, D>(setNonNull);
+  var dSet = Set.castFrom<C?, D>(setEls);
   Expect.equals(d, dSet.elementAt(1));
   Expect.throws(() => dSet.last); // null is not D.
 
   // Upcast non-nullable.
-  var objectSet = Set.castFrom<C, Object>(setNonNull);
+  var objectSet = Set.castFrom<C?, Object>(setEls);
   Expect.throws(() => objectSet.last); // null is not Object.
 }
diff --git a/tests/corelib/cast_weak_test.dart b/tests/corelib/cast_weak_test.dart
index 72b1231..571b8c7 100644
--- a/tests/corelib/cast_weak_test.dart
+++ b/tests/corelib/cast_weak_test.dart
@@ -17,53 +17,49 @@
 
 testIterable() {
   var iterable = new Iterable<C?>.generate(elements.length, (n) => elements[n]);
-  var iterableNonNull = Iterable.castFrom<C?, C>(iterable);
   // Downcast non-nullable.
 
   // An iterable that (likely) can do direct access.
-  var dIterableDirect = Iterable.castFrom<C, D>(iterableNonNull);
+  var dIterableDirect = Iterable.castFrom<C?, D>(iterable);
   Expect.equals(d, dIterableDirect.elementAt(1));
   Expect.equals(null, dIterableDirect.skip(3).elementAt(1));
 
   // An iterable that cannot do direct access.
   var dIterableNonDirect =
-      Iterable.castFrom<C, D>(iterableNonNull.where((_) => true));
+      Iterable.castFrom<C?, D>(iterable.where((_) => true));
   Expect.equals(d, dIterableNonDirect.elementAt(1));
   Expect.equals(null, dIterableNonDirect.skip(3).elementAt(1));
 
   // Iterable that definitely won't survive accessing element 3.
   var iterableLimited = new Iterable<C?>.generate(
       elements.length, (n) => n == 3 ? throw "untouchable" : elements[n]);
-  var iterableLimitedNonNull = Iterable.castFrom<C?, C>(iterableLimited);
-  var dIterableLimited = Iterable.castFrom<C, D>(iterableLimitedNonNull);
+  var dIterableLimited = Iterable.castFrom<C?, D>(iterableLimited);
   Expect.equals(d, dIterableLimited.elementAt(1));
   Expect.equals(null, dIterableLimited.skip(3).elementAt(1));
 
   // Upcast non-nullable.
-  var objectIterable = Iterable.castFrom<C, Object>(iterableNonNull);
+  var objectIterable = Iterable.castFrom<C?, Object>(iterable);
   Expect.equals(null, objectIterable.skip(3).elementAt(1));
 }
 
 testList() {
   var list = new List<C?>.from(elements);
-  var listNonNull = List.castFrom<C?, C>(list);
 
   // Downcast non-nullable.
-  var dList = List.castFrom<C, D>(listNonNull);
+  var dList = List.castFrom<C?, D>(list);
   Expect.equals(d, dList[1]);
   Expect.equals(null, dList.last);
 
   // Upcast non-nullable.
-  var objectList = List.castFrom<C, Object>(listNonNull);
+  var objectList = List.castFrom<C?, Object>(list);
   Expect.equals(null, objectList.last);
 }
 
 testMap() {
   var map = new Map.fromIterables(elements, elements);
-  var mapNonNull = Map.castFrom<C?, C?, C, C>(map);
 
   // Downcast non-nullable.
-  var dMap = Map.castFrom<C, C, D, D>(mapNonNull);
+  var dMap = Map.castFrom<C?, C?, D, D>(map);
   Expect.equals(d, dMap[d]);
   Expect.isTrue(dMap.containsKey(null));
   Expect.equals(null, dMap[null]);
@@ -75,7 +71,7 @@
   Expect.throws(() => dMap.values.toList());
 
   // Upcast non-nullable.
-  var objectMap = Map.castFrom<C, C, Object, Object>(mapNonNull);
+  var objectMap = Map.castFrom<C?, C?, Object, Object>(map);
   Expect.isTrue(objectMap.containsKey(null));
   Expect.equals(null, objectMap[null]);
 
@@ -88,14 +84,13 @@
 
 testSet() {
   var setEls = new Set<C?>.from(elements);
-  var setNonNull = Set.castFrom<C?, C>(setEls);
 
   // Downcast non-nullable.
-  var dSet = Set.castFrom<C, D>(setNonNull);
+  var dSet = Set.castFrom<C?, D>(setEls);
   Expect.equals(d, dSet.elementAt(1));
   Expect.equals(null, dSet.last);
 
   // Upcast non-nullable.
-  var objectSet = Set.castFrom<C, Object>(setNonNull);
+  var objectSet = Set.castFrom<C?, Object>(setEls);
   Expect.equals(null, objectSet.last);
 }
diff --git a/tests/language_2/interface/interface_test.dart b/tests/language_2/interface/interface_test.dart
index 5ffd3d4..b05e0a6 100644
--- a/tests/language_2/interface/interface_test.dart
+++ b/tests/language_2/interface/interface_test.dart
@@ -11,6 +11,8 @@
   factory Bi() = InterfaceTest;
   //      ^
   // [cfe] Factory redirects to class 'InterfaceTest', which is abstract and can't be instantiated.
+  //             ^^^^^^^^^^^^^
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_ABSTRACT_CLASS_CONSTRUCTOR
 }
 
 abstract class Simple implements Ai {}
diff --git a/tests/lib/isolate/no_package_test.dart b/tests/lib/isolate/nnbd_spawn_autodetect_test.dart
similarity index 66%
rename from tests/lib/isolate/no_package_test.dart
rename to tests/lib/isolate/nnbd_spawn_autodetect_test.dart
index 833e56b..3e9c617 100644
--- a/tests/lib/isolate/no_package_test.dart
+++ b/tests/lib/isolate/nnbd_spawn_autodetect_test.dart
@@ -5,13 +5,23 @@
 import "dart:io";
 import "package:async_helper/async_minitest.dart";
 
-void testNoPackages(String filePath, String uri, String expected) {
+void testNullSafetyMode(String filePath, String version, String expected) {
   File mainIsolate = new File(filePath);
   mainIsolate.writeAsStringSync('''
-    library spawn_tests;
-
+    // $version
     import \'dart:isolate\';
 
+    spawnFunc(List args) {
+      var data = args[0];
+      var replyTo = args[1];
+      try {
+        int x = null as int;
+        replyTo.send(\'re: weak\');
+      } catch (ex) {
+        replyTo.send(\'re: strong\');
+      }
+    }
+
     void main() async {
       const String debugName = \'spawnedIsolate\';
       final exitPort = ReceivePort();
@@ -21,10 +31,9 @@
           port.close();
       });
 
-      final isolate = await Isolate.spawnUri(
-        Uri.parse(\'$uri\'),
-          [\'$expected\'],
-          port.sendPort,
+      final isolate = await Isolate.spawn(
+          spawnFunc,
+          [\'re: hi\', port.sendPort],
           paused: false,
           debugName: debugName,
           onExit: exitPort.sendPort);
@@ -37,6 +46,7 @@
     ''');
   var exec = Platform.resolvedExecutable;
   var args = <String>[];
+  args.add("--enable-experiment=non-nullable");
   args.add(mainIsolate.path);
   var result = Process.runSync(exec, args);
   expect(result.stdout.contains('$expected'), true);
@@ -47,20 +57,12 @@
   var tmpDir = Directory.systemTemp.createTempSync();
   var tmpDirPath = tmpDir.path;
 
-  // Generate code for an isolate to run without any package specification.
-  File noPackageIsolate = new File("$tmpDirPath/no_package.dart");
-  noPackageIsolate.writeAsStringSync('''
-    library SpawnUriIsolate;
-    main(List<String> args, replyTo) {
-      var data = args[0];
-      replyTo.send(data);
-    }
-    ''');
-
   try {
-    // Isolate Spawning another Isolate without any package specification.
-    testNoPackages("$tmpDirPath/no_package_isolate.dart", noPackageIsolate.path,
-        're: no package');
+    // Strong Isolate Spawning another Strong Isolate using spawn.
+    testNullSafetyMode("$tmpDirPath/strong.dart", '', 're: strong');
+
+    // Weak Isolate Spawning a Weak Isolate using spawn.
+    testNullSafetyMode("$tmpDirPath/weak.dart", '@dart=2.6', 're: weak');
   } finally {
     tmpDir.deleteSync(recursive: true);
   }
diff --git a/tests/lib/isolate/nnbd_spawnuri_autodetect_test.dart b/tests/lib/isolate/nnbd_spawnuri_autodetect_test.dart
new file mode 100644
index 0000000..49afc571
--- /dev/null
+++ b/tests/lib/isolate/nnbd_spawnuri_autodetect_test.dart
@@ -0,0 +1,101 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import "dart:io";
+import "package:async_helper/async_minitest.dart";
+
+void testNullSafetyMode(String filePath, String uri, String expected) {
+  File mainIsolate = new File(filePath);
+  mainIsolate.writeAsStringSync('''
+    library spawn_tests;
+
+    import \'dart:isolate\';
+
+    void main() async {
+      const String debugName = \'spawnedIsolate\';
+      final exitPort = ReceivePort();
+      final port = new ReceivePort();
+      port.listen((msg) {
+          print(msg);
+          port.close();
+      });
+
+      final isolate = await Isolate.spawnUri(
+        Uri.parse(\'$uri\'),
+          [\'re: hi\'],
+          port.sendPort,
+          paused: false,
+          debugName: debugName,
+          onExit: exitPort.sendPort);
+
+      // Explicitly await spawned isolate exit to enforce main isolate not
+      // completing (and the stand-alone runtime exiting) before the spawned
+      // isolate is done.
+      await exitPort.first;
+    }
+    ''');
+  var exec = Platform.resolvedExecutable;
+  var args = <String>[];
+  args.add("--enable-experiment=non-nullable");
+  args.add(mainIsolate.path);
+  var result = Process.runSync(exec, args);
+  expect(result.stdout.contains('$expected'), true);
+}
+
+void main() {
+  // Create temporary directory.
+  var tmpDir = Directory.systemTemp.createTempSync();
+  var tmpDirPath = tmpDir.path;
+
+  // Generate code for an isolate to run in strong mode.
+  File strongIsolate = new File("$tmpDirPath/strong_isolate.dart");
+  strongIsolate.writeAsStringSync('''
+    library SpawnUriStrongIsolate;
+    main(List<String> args, replyTo) {
+      var data = args[0];
+      try {
+        int x = null as int;
+        replyTo.send(\'re: weak\');
+      } catch (ex) {
+        replyTo.send(\'re: strong\');
+      }
+    }
+    ''');
+
+  // Generate code for an isolate to run in weak mode.
+  File weakIsolate = new File("$tmpDirPath/weak_isolate.dart");
+  weakIsolate.writeAsStringSync('''
+    // @dart=2.7
+    library SpawnUriStrongIsolate;
+    main(List<String> args, replyTo) {
+      var data = args[0];
+      try {
+        int x = null as int;
+        replyTo.send(\'re: weak\');
+      } catch (ex) {
+        replyTo.send(\'re: strong\');
+      }
+    }
+    ''');
+
+  try {
+    // Strong Isolate Spawning another Strong Isolate using spawnUri.
+    testNullSafetyMode(
+        "$tmpDirPath/strong_strong.dart", strongIsolate.path, 're: strong');
+
+    // Strong Isolate Spawning a Weak Isolate using spawnUri.
+    testNullSafetyMode(
+        "$tmpDirPath/strong_weak.dart", weakIsolate.path, 're: weak');
+
+    // Weak Isolate Spawning a Strong Isolate using spawnUri.
+    testNullSafetyMode(
+        "$tmpDirPath/weak_strong.dart", strongIsolate.path, 're: strong');
+
+    // Weak Isolate Spawning a Weak Isolate using spawnUri.
+    testNullSafetyMode(
+        "$tmpDirPath/weak_weak.dart", weakIsolate.path, 're: weak');
+  } finally {
+    tmpDir.deleteSync(recursive: true);
+  }
+}
diff --git a/tests/lib/isolate/spawn_uri__package_uri__test.dart b/tests/lib/isolate/spawn_uri__package_uri__test.dart
deleted file mode 100644
index 313a55b..0000000
--- a/tests/lib/isolate/spawn_uri__package_uri__test.dart
+++ /dev/null
@@ -1,164 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:io';
-
-import 'package:expect/expect.dart';
-import 'package:path/path.dart' as path;
-
-final executable = Platform.executable;
-
-main() async {
-  // Run the Dart VM with or without:
-  //     --packages=<packages|package_config>
-  for (final runWithPackagesArg in const [true, false]) {
-    // Run the isolate with or without
-    //    Isolate.spawnUri(..., packageConfig: <packages|package_config>)
-    print('TEST runWithPackagesArg = $runWithPackagesArg ');
-    for (final spawnWithPackageConfig in const [true, false]) {
-      print('TEST spawnWithPackageConfig = $spawnWithPackageConfig ');
-      await runDotPackagesTest(runWithPackagesArg, spawnWithPackageConfig);
-      for (final optionalPackageUri in const [true, false]) {
-        print('TEST optionalPackageUri = $optionalPackageUri');
-        await runPackageConfigTest(
-            runWithPackagesArg, spawnWithPackageConfig, optionalPackageUri);
-      }
-    }
-  }
-}
-
-Future runPackageConfigTest(
-    bool withPackagesArg, bool spawnWithArg, bool optionalPackageUri) async {
-  await withApplicationDirAndDotDartToolPackageConfig(
-      (String tempDir, String packageJson, String mainFile) async {
-    final args = [if (withPackagesArg) '--packages=$packageJson', mainFile];
-    await run(executable, args);
-  }, spawnWithArg, optionalPackageUri);
-}
-
-Future runDotPackagesTest(bool withPackagesArg, bool spawnWithArg) async {
-  await withApplicationDirAndDotPackages(
-      (String tempDir, String dotPackagesFile, String mainFile) async {
-    final args = [
-      if (withPackagesArg) '--packages=$dotPackagesFile',
-      mainFile,
-    ];
-    await run(executable, args);
-  }, spawnWithArg);
-}
-
-Future withApplicationDirAndDotPackages(
-    Future fn(String tempDir, String packagesDir, String mainFile),
-    bool spawnWithArg) async {
-  await withTempDir((String tempDir) async {
-    // Setup ".packages"
-    final dotPackagesFile =
-        path.join(tempDir, spawnWithArg ? 'baz.packages' : '.packages');
-    await File(dotPackagesFile).writeAsString(buildDotPackages('foo'));
-
-    final mainFile = path.join(tempDir, 'main.dart');
-    final childIsolateFile = path.join(tempDir, 'child_isolate.dart');
-    final importUri = 'package:foo/child_isolate.dart';
-    await File(childIsolateFile).writeAsString(buildChildIsolate());
-    await File(mainFile).writeAsString(
-        buildMainIsolate(importUri, spawnWithArg ? dotPackagesFile : null));
-
-    await fn(tempDir, dotPackagesFile, mainFile);
-  });
-}
-
-Future withApplicationDirAndDotDartToolPackageConfig(
-    Future fn(String tempDir, String packageJson, String mainFile),
-    bool spawnWithArg,
-    bool optionalPackageUri) async {
-  await withTempDir((String tempDir) async {
-    // Setup ".dart_tool/package_config.json"
-    final dotDartToolDir = path.join(tempDir, '.dart_tool');
-    await Directory(dotDartToolDir).create();
-    final packageConfigJsonFile = path.join(
-        dotDartToolDir, spawnWithArg ? 'baz.packages' : 'package_config.json');
-    await File(packageConfigJsonFile)
-        .writeAsString(buildPackageConfig('foo', optionalPackageUri));
-
-    // Setup actual application
-    final mainFile = path.join(tempDir, 'main.dart');
-    final childIsolateFile = path.join(tempDir, 'child_isolate.dart');
-    final importUri = 'package:foo/child_isolate.dart';
-    await File(childIsolateFile).writeAsString(buildChildIsolate());
-    await File(mainFile).writeAsString(buildMainIsolate(
-        importUri, spawnWithArg ? packageConfigJsonFile : null));
-
-    await fn(tempDir, packageConfigJsonFile, mainFile);
-  });
-}
-
-Future withTempDir(Future fn(String dir)) async {
-  final dir = await Directory.systemTemp.createTemp('spawn_uri');
-  try {
-    await fn(dir.absolute.path);
-  } finally {
-    await dir.delete(recursive: true);
-  }
-}
-
-Future<ProcessResult> run(String executable, List<String> args,
-    {String? cwd}) async {
-  print('Running $executable ${args.join(' ')}');
-  final String workingDirectory = cwd ?? Directory.current.absolute.path;
-  final result = await Process.run(executable, ['--trace-loading', ...args],
-      workingDirectory: workingDirectory);
-  print('exitCode:\n${result.exitCode}');
-  print('stdout:\n${result.stdout}');
-  print('stdout:\n${result.stderr}');
-  Expect.equals(0, result.exitCode);
-  return result;
-}
-
-String buildDotPackages(String packageName) => '$packageName:.';
-
-String buildPackageConfig(String packageName, bool optionalPackageUri) => '''
-{
-  "configVersion": 2,
-  "packages": [
-    {
-      "name": "$packageName",
-      "rootUri": "../"
-      ${optionalPackageUri ? ', "packageUri": "./"' : ''}
-    }
-  ]
-}
-''';
-
-String buildChildIsolate() => '''
-  import 'dart:isolate';
-
-  main(List<String> args, SendPort message) {
-    message.send('child isolate is done');
-  }
-''';
-
-String buildMainIsolate(String spawnUri, String? packageConfigUri) => '''
-  import 'dart:isolate';
-  import 'dart:io' as io;
-
-  main(List<String> args) async {
-    io.exitCode = 1;
-
-    final rp = ReceivePort();
-    final uri = Uri.parse('$spawnUri');
-    final isolateArgs = <String>['a'];
-    await Isolate.spawnUri(
-        uri,
-        isolateArgs,
-        rp.sendPort,
-        packageConfig: ${packageConfigUri != null ? 'Uri.file(r"$packageConfigUri")' : 'null'});
-    final childIsolateMessage = await rp.first;
-    if (childIsolateMessage != 'child isolate is done') {
-      throw 'Did not receive correct message from child isolate.';
-    }
-
-    // Test was successful.
-    io.exitCode = 0;
-  }
-''';
diff --git a/tests/lib/lib.status b/tests/lib/lib.status
index 4523ec5..f3cd0bd 100644
--- a/tests/lib/lib.status
+++ b/tests/lib/lib.status
@@ -24,9 +24,6 @@
 html/indexeddb_3_test: Skip # Times out 1 out of 10.
 html/worker_api_test: Skip # Issue 13221
 
-[ $runtime != vm ]
-isolate/spawn_uri__package_uri__test: SkipByDesign # This test uses Isolate.spawnUri and only works in JIT mode.
-
 [ $system == windows ]
 html/xhr_test/xhr: Skip # Times out.  Issue 21527
 
@@ -94,7 +91,8 @@
 isolate/mint_maker_test: Skip # Isolate.spawnUri
 isolate/nested_spawn2_test: Skip # Isolate.spawnUri
 isolate/nested_spawn_test: Skip # Isolate.spawnUri
-isolate/no_package_test: Skip # Isolate.spawnUri
+isolate/nnbd_spawn_autodetect_test: Skip # Auto detect not for precompiled.
+isolate/nnbd_spawnuri_autodetect_test: Skip # Auto detect not for precompiled.
 isolate/raw_port_test: Skip # Isolate.spawnUri
 isolate/request_reply_test: Skip # Isolate.spawnUri
 isolate/spawn_function_custom_class_test: Skip # Isolate.spawnUri
diff --git a/tests/lib/lib_vm.status b/tests/lib/lib_vm.status
index 9465a91..92cc427 100644
--- a/tests/lib/lib_vm.status
+++ b/tests/lib/lib_vm.status
@@ -152,7 +152,6 @@
 isolate/spawn_function_custom_class_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
 isolate/spawn_function_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
 isolate/spawn_generic_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
-isolate/spawn_uri__package_uri__test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
 isolate/spawn_uri_exported_main_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
 isolate/spawn_uri_missing_from_isolate_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
 isolate/spawn_uri_missing_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
diff --git a/tests/lib_2/isolate/spawn_uri__package_uri__test.dart b/tests/lib_2/isolate/spawn_uri__package_uri__test.dart
deleted file mode 100644
index f34eb46..0000000
--- a/tests/lib_2/isolate/spawn_uri__package_uri__test.dart
+++ /dev/null
@@ -1,164 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:io';
-
-import 'package:expect/expect.dart';
-import 'package:path/path.dart' as path;
-
-final executable = Platform.executable;
-
-main() async {
-  // Run the Dart VM with or without:
-  //     --packages=<packages|package_config>
-  for (final runWithPackagesArg in const [true, false]) {
-    // Run the isolate with or without
-    //    Isolate.spawnUri(..., packageConfig: <packages|package_config>)
-    print('TEST runWithPackagesArg = $runWithPackagesArg ');
-    for (final spawnWithPackageConfig in const [true, false]) {
-      print('TEST spawnWithPackageConfig = $spawnWithPackageConfig ');
-      await runDotPackagesTest(runWithPackagesArg, spawnWithPackageConfig);
-      for (final optionalPackageUri in const [true, false]) {
-        print('TEST optionalPackageUri = $optionalPackageUri');
-        await runPackageConfigTest(
-            runWithPackagesArg, spawnWithPackageConfig, optionalPackageUri);
-      }
-    }
-  }
-}
-
-Future runPackageConfigTest(
-    bool withPackagesArg, bool spawnWithArg, bool optionalPackageUri) async {
-  await withApplicationDirAndDotDartToolPackageConfig(
-      (String tempDir, String packageJson, String mainFile) async {
-    final args = [if (withPackagesArg) '--packages=$packageJson', mainFile];
-    await run(executable, args);
-  }, spawnWithArg, optionalPackageUri);
-}
-
-Future runDotPackagesTest(bool withPackagesArg, bool spawnWithArg) async {
-  await withApplicationDirAndDotPackages(
-      (String tempDir, String dotPackagesFile, String mainFile) async {
-    final args = [
-      if (withPackagesArg) '--packages=$dotPackagesFile',
-      mainFile,
-    ];
-    await run(executable, args);
-  }, spawnWithArg);
-}
-
-Future withApplicationDirAndDotPackages(
-    Future fn(String tempDir, String packagesDir, String mainFile),
-    bool spawnWithArg) async {
-  await withTempDir((String tempDir) async {
-    // Setup ".packages"
-    final dotPackagesFile =
-        path.join(tempDir, spawnWithArg ? 'baz.packages' : '.packages');
-    await File(dotPackagesFile).writeAsString(buildDotPackages('foo'));
-
-    final mainFile = path.join(tempDir, 'main.dart');
-    final childIsolateFile = path.join(tempDir, 'child_isolate.dart');
-    final importUri = 'package:foo/child_isolate.dart';
-    await File(childIsolateFile).writeAsString(buildChildIsolate());
-    await File(mainFile).writeAsString(
-        buildMainIsolate(importUri, spawnWithArg ? dotPackagesFile : null));
-
-    await fn(tempDir, dotPackagesFile, mainFile);
-  });
-}
-
-Future withApplicationDirAndDotDartToolPackageConfig(
-    Future fn(String tempDir, String packageJson, String mainFile),
-    bool spawnWithArg,
-    bool optionalPackageUri) async {
-  await withTempDir((String tempDir) async {
-    // Setup ".dart_tool/package_config.json"
-    final dotDartToolDir = path.join(tempDir, '.dart_tool');
-    await Directory(dotDartToolDir).create();
-    final packageConfigJsonFile = path.join(
-        dotDartToolDir, spawnWithArg ? 'baz.packages' : 'package_config.json');
-    await File(packageConfigJsonFile)
-        .writeAsString(buildPackageConfig('foo', optionalPackageUri));
-
-    // Setup actual application
-    final mainFile = path.join(tempDir, 'main.dart');
-    final childIsolateFile = path.join(tempDir, 'child_isolate.dart');
-    final importUri = 'package:foo/child_isolate.dart';
-    await File(childIsolateFile).writeAsString(buildChildIsolate());
-    await File(mainFile).writeAsString(buildMainIsolate(
-        importUri, spawnWithArg ? packageConfigJsonFile : null));
-
-    await fn(tempDir, packageConfigJsonFile, mainFile);
-  });
-}
-
-Future withTempDir(Future fn(String dir)) async {
-  final dir = await Directory.systemTemp.createTemp('spawn_uri');
-  try {
-    await fn(dir.absolute.path);
-  } finally {
-    await dir.delete(recursive: true);
-  }
-}
-
-Future<ProcessResult> run(String executable, List<String> args,
-    {String cwd}) async {
-  print('Running $executable ${args.join(' ')}');
-  final String workingDirectory = cwd ?? Directory.current.absolute.path;
-  final result = await Process.run(executable, ['--trace-loading', ...args],
-      workingDirectory: workingDirectory);
-  print('exitCode:\n${result.exitCode}');
-  print('stdout:\n${result.stdout}');
-  print('stdout:\n${result.stderr}');
-  Expect.equals(0, result.exitCode);
-  return result;
-}
-
-String buildDotPackages(String packageName) => '$packageName:.';
-
-String buildPackageConfig(String packageName, bool optionalPackageUri) => '''
-{
-  "configVersion": 2,
-  "packages": [
-    {
-      "name": "$packageName",
-      "rootUri": "../"
-      ${optionalPackageUri ? ', "packageUri": "./"' : ''}
-    }
-  ]
-}
-''';
-
-String buildChildIsolate() => '''
-  import 'dart:isolate';
-
-  main(List<String> args, SendPort message) {
-    message.send('child isolate is done');
-  }
-''';
-
-String buildMainIsolate(String spawnUri, String packageConfigUri) => '''
-  import 'dart:isolate';
-  import 'dart:io' as io;
-
-  main(List<String> args) async {
-    io.exitCode = 1;
-
-    final rp = ReceivePort();
-    final uri = Uri.parse('$spawnUri');
-    final isolateArgs = <String>['a'];
-    await Isolate.spawnUri(
-        uri,
-        isolateArgs,
-        rp.sendPort,
-        packageConfig: ${packageConfigUri != null ? 'Uri.file(r"$packageConfigUri")' : 'null'});
-    final childIsolateMessage = await rp.first;
-    if (childIsolateMessage != 'child isolate is done') {
-      throw 'Did not receive correct message from child isolate.';
-    }
-
-    // Test was successful.
-    io.exitCode = 0;
-  }
-''';
diff --git a/tests/lib_2/lib_2.status b/tests/lib_2/lib_2.status
index 855ab43..432516a 100644
--- a/tests/lib_2/lib_2.status
+++ b/tests/lib_2/lib_2.status
@@ -24,9 +24,6 @@
 html/indexeddb_3_test: Skip # Times out 1 out of 10.
 html/worker_api_test: Skip # Issue 13221
 
-[ $runtime != vm ]
-isolate/spawn_uri__package_uri__test: SkipByDesign # This test uses Isolate.spawnUri and only works in JIT mode.
-
 [ $system == windows ]
 html/xhr_test/xhr: Skip # Times out.  Issue 21527
 
diff --git a/tests/lib_2/lib_2_vm.status b/tests/lib_2/lib_2_vm.status
index 77c441a..78b9986 100644
--- a/tests/lib_2/lib_2_vm.status
+++ b/tests/lib_2/lib_2_vm.status
@@ -137,7 +137,6 @@
 isolate/spawn_function_custom_class_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
 isolate/spawn_function_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
 isolate/spawn_generic_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
-isolate/spawn_uri__package_uri__test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
 isolate/spawn_uri_exported_main_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
 isolate/spawn_uri_missing_from_isolate_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
 isolate/spawn_uri_missing_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
diff --git a/tools/VERSION b/tools/VERSION
index 1de73ea..14923ef 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -33,7 +33,7 @@
 MAJOR 2
 MINOR 9
 PATCH 0
-PRERELEASE 6
+PRERELEASE 7
 PRERELEASE_PATCH 0
 ABI_VERSION 32
 OLDEST_SUPPORTED_ABI_VERSION 32
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index 92dd685..7536b70 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -837,7 +837,13 @@
         "enable-experiment": [
           "non-nullable"
         ],
-        "enable-asserts": true
+	"gen-kernel-options": [
+          "--no-null-safety"
+        ],
+        "enable-asserts": true,
+	"vm-options": [
+          "--no-null-safety"
+        ]
       }
     },
     "dartkp-weak-asserts-win-(debug|product|release)-x64": {
@@ -845,8 +851,14 @@
         "enable-experiment": [
           "non-nullable"
         ],
+	"gen-kernel-options": [
+          "--no-null-safety"
+        ],
         "enable-asserts": true,
-        "use-elf": true
+        "use-elf": true,
+	"vm-options": [
+          "--no-null-safety"
+        ]
       }
     },
     "dartk-weak-asserts-(linux|mac|win)-(debug|product|release)-x64": {
@@ -854,7 +866,10 @@
         "enable-experiment": [
           "non-nullable"
         ],
-        "enable-asserts": true
+        "enable-asserts": true,
+	"vm-options": [
+          "--no-null-safety"
+        ]
       }
     },
     "dartk-strong-(linux|mac|win)-(debug|product|release)-x64": {
@@ -862,9 +877,6 @@
         "enable-experiment": [
           "non-nullable"
         ],
-        "gen-kernel-options": [
-          "--null-safety"
-        ],
         "vm-options": [
           "--null-safety"
         ]
@@ -3044,6 +3056,15 @@
           ]
         },
         {
+          "name": "nnbd_migration unit tests",
+          "arguments": [
+            "-nanalyzer-unittest-asserts-${mode}-${system}",
+            "pkg/nnbd_migration"
+          ],
+          "shards": 2,
+          "fileset": "analyzer_unit_tests"
+        },
+        {
           "name": "analyze tests co19_2",
           "arguments": [
             "-nanalyzer-asserts-${system}",
@@ -3125,6 +3146,13 @@
             "-nanalyzer-asserts-strong-${system}",
             "co19/LanguageFeatures/nnbd"
           ]
+        },
+        {
+          "name": "analyze nnbd weak co19 tests",
+          "arguments": [
+            "-nanalyzer-asserts-weak-${system}",
+            "co19/LanguageFeatures/nnbd"
+          ]
         }
       ]
     },
@@ -3429,7 +3457,7 @@
           "name": "package unit tests",
           "arguments": [
             "-nunittest-asserts-${mode}-${system}",
-            "pkg/pkg/(?!(analyzer*|analysis_server|front_end|kernel)/)"
+            "pkg/pkg/(?!(analyzer*|analysis_server|front_end|kernel|nnbd_migration)/)"
           ]
         },
         {
@@ -3467,7 +3495,7 @@
           "name": "package unit tests",
           "arguments": [
             "-nunittest-asserts-${mode}-${system}",
-            "pkg/pkg/(?!(analyzer*|analysis_server|front_end|kernel)/)"
+            "pkg/pkg/(?!(analyzer*|analysis_server|front_end|kernel|nnbd_migration)/)"
           ]
         },
         {