Version 2.0.0-dev.13.0

Merge commit 'f52cc1b382fb198e2f4b5f951b3243c6b0340ca8' into dev
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2db006c..e0d48cb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -83,7 +83,9 @@
     decompression routines.
   * Added `IOOverrides` and `HttpOverrides` to aid in writing tests that wish to
     mock varios `dart:io` objects.
-  * Added `Stdin.hasTerminal`.
+  * Added `Stdin.hasTerminal`, which is true if stdin is attached to a terminal.
+  * Added `waitForEventSync`, which suspends execution until an asynchronous
+    event oocurs.
 
 * `dart:isolate`
   * Rename `IMMEDIATE` and `BEFORE_NEXT_EVENT` on `Isolate` to `immediate` and
@@ -109,6 +111,16 @@
 
 ### Tool Changes
 
+* Analyzer
+
+The analyzer will no longer issue a warning when a generic type parameter is
+used as the type in an instance check. For example:
+    ```dart
+    test<T>() {
+      print(3 is T); // No warning
+    }
+    ```
+
 * Pub
 
   * Git dependencies may now include a `path` parameter, indicating that the
diff --git a/DEPS b/DEPS
index 1c6c875..642a59a 100644
--- a/DEPS
+++ b/DEPS
@@ -91,7 +91,7 @@
   "isolate_tag": "@1.1.0",
   "jinja2_rev": "@2222b31554f03e62600cd7e383376a7c187967a1",
   "json_rpc_2_tag": "@2.0.4",
-  "linter_tag": "@0.1.40",
+  "linter_tag": "@0.1.41",
   "logging_tag": "@0.11.3+1",
   "markdown_tag": "@1.0.0",
   "matcher_tag": "@0.12.1+4",
diff --git a/pkg/analysis_server/lib/src/computer/computer_closingLabels.dart b/pkg/analysis_server/lib/src/computer/computer_closingLabels.dart
index 71c5ff3..15fe295 100644
--- a/pkg/analysis_server/lib/src/computer/computer_closingLabels.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_closingLabels.dart
@@ -7,9 +7,6 @@
 import 'package:analyzer/dart/ast/visitor.dart';
 import 'package:analyzer/src/generated/source.dart';
 
-// TODO(devoncarew): We should look into not creating any labels until there's
-// at least 2 levels of nesting.
-
 /**
  * A computer for [CompilationUnit] closing labels.
  */
@@ -17,6 +14,8 @@
   final LineInfo _lineInfo;
   final CompilationUnit _unit;
   final List<ClosingLabel> _closingLabels = [];
+  final Set<ClosingLabel> hasNestingSet = new Set();
+  final Set<ClosingLabel> isSingleLineSet = new Set();
 
   DartUnitClosingLabelsComputer(this._lineInfo, this._unit);
 
@@ -25,7 +24,20 @@
    */
   List<ClosingLabel> compute() {
     _unit.accept(new _DartUnitClosingLabelsComputerVisitor(this));
-    return _closingLabels;
+
+    return _closingLabels.where((ClosingLabel label) {
+      // Filter labels that don't have some nesting.
+      // Filter labels that start and end on the same line.
+      return hasNestingSet.contains(label) && !isSingleLineSet.contains(label);
+    }).toList();
+  }
+
+  void setHasNesting(ClosingLabel label) {
+    hasNestingSet.add(label);
+  }
+
+  void setSingleLine(ClosingLabel label) {
+    isSingleLineSet.add(label);
   }
 }
 
@@ -37,24 +49,33 @@
   final DartUnitClosingLabelsComputer computer;
 
   int interpolatedStringsEntered = 0;
+  List<ClosingLabel> labelStack = [];
 
   _DartUnitClosingLabelsComputerVisitor(this.computer);
 
   @override
   Object visitInstanceCreationExpression(InstanceCreationExpression node) {
+    ClosingLabel label;
+
     if (node.argumentList != null) {
-      var label = node.constructorName.type.name.name;
+      String labelText = node.constructorName.type.name.name;
       if (node.constructorName.name != null) {
-        label += ".${node.constructorName.name.name}";
+        labelText += ".${node.constructorName.name.name}";
       }
       // We override the node used for doing line calculations because otherwise
       // constructors that split over multiple lines (but have parens on same
       // line) would incorrectly get labels, because node.start on an instance
       // creation expression starts at the start of the expression.
-      _addLabel(node, label, checkLinesUsing: node.argumentList);
+      label = _addLabel(node, labelText, checkLinesUsing: node.argumentList);
     }
 
-    return super.visitInstanceCreationExpression(node);
+    if (label != null) _pushLabel(label);
+
+    try {
+      return super.visitInstanceCreationExpression(node);
+    } finally {
+      if (label != null) _popLabel();
+    }
   }
 
   @override
@@ -62,11 +83,19 @@
     final NodeList<TypeAnnotation> args = node.typeArguments?.arguments;
     final String typeName = args != null ? args[0]?.toString() : null;
 
+    ClosingLabel label;
+
     if (typeName != null) {
-      _addLabel(node, "<$typeName>[]");
+      label = _addLabel(node, "<$typeName>[]");
     }
 
-    return super.visitListLiteral(node);
+    if (label != null) _pushLabel(label);
+
+    try {
+      return super.visitListLiteral(node);
+    } finally {
+      if (label != null) _popLabel();
+    }
   }
 
   @override
@@ -79,10 +108,11 @@
     }
   }
 
-  void _addLabel(AstNode node, String label, {AstNode checkLinesUsing}) {
+  ClosingLabel _addLabel(AstNode node, String label,
+      {AstNode checkLinesUsing}) {
     // Never add labels if we're inside strings.
     if (interpolatedStringsEntered > 0) {
-      return;
+      return null;
     }
 
     checkLinesUsing = checkLinesUsing ?? node;
@@ -92,14 +122,32 @@
     final LineInfo_Location end =
         computer._lineInfo.getLocation(checkLinesUsing.end - 1);
 
-    int spannedLines = end.lineNumber - start.lineNumber;
-    if (spannedLines < 1) {
-      return;
-    }
-
     final ClosingLabel closingLabel =
         new ClosingLabel(node.offset, node.length, label);
 
+    int spannedLines = end.lineNumber - start.lineNumber;
+    if (spannedLines < 1) {
+      computer.setSingleLine(closingLabel);
+    }
+
+    ClosingLabel parent = _currentLabel;
+    if (parent != null) {
+      computer.setHasNesting(parent);
+      computer.setHasNesting(closingLabel);
+    }
+
     computer._closingLabels.add(closingLabel);
+
+    return closingLabel;
+  }
+
+  void _pushLabel(ClosingLabel label) {
+    labelStack.add(label);
+  }
+
+  ClosingLabel get _currentLabel => labelStack.isEmpty ? null : labelStack.last;
+
+  void _popLabel() {
+    labelStack.removeLast();
   }
 }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/common_usage_sorter.dart b/pkg/analysis_server/lib/src/services/completion/dart/common_usage_sorter.dart
index a515bed..6f84fd8 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/common_usage_sorter.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/common_usage_sorter.dart
@@ -16,6 +16,7 @@
 import 'package:analyzer/dart/ast/visitor.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type.dart';
+import 'package:analyzer/src/dart/ast/ast.dart';
 import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
 
 part 'common_usage_sorter.g.dart';
@@ -101,27 +102,44 @@
 /**
  * An [AstVisitor] used to determine the best defining type of a node.
  */
-class _BestTypeVisitor extends GeneralizingAstVisitor<DartType> {
+class _BestTypeVisitor extends UnifyingAstVisitor<DartType> {
   /**
    * The entity which the completed text will replace (or which will be
    * displaced once the completed text is inserted).  This may be an AstNode or
-   * a Token, or it may be null if the cursor is after all tokens in the file.
+   * a Token, or it may be `null` if the cursor is after all tokens in the file.
    * See field of the same name in [CompletionTarget].
    */
   final Object entity;
 
   _BestTypeVisitor(this.entity);
 
+  @override
   DartType visitConstructorName(ConstructorName node) =>
       node.period != null && node.name == entity ? node.type?.type : null;
 
+  @override
+  DartType visitNamedExpression(NamedExpression node) {
+    AstNode parent = node.parent;
+    if (parent is ArgumentListImpl) {
+      List<ParameterElement> params = parent.correspondingStaticParameters;
+      if (params != null) {
+        int index = parent.arguments.indexOf(node);
+        return params[index]?.type;
+      }
+    }
+    return super.visitNamedExpression(node);
+  }
+
+  @override
   DartType visitNode(AstNode node) {
     return null;
   }
 
+  @override
   DartType visitPrefixedIdentifier(PrefixedIdentifier node) =>
       node.identifier == entity ? node.prefix?.bestType : null;
 
+  @override
   DartType visitPropertyAccess(PropertyAccess node) =>
       node.propertyName == entity ? node.realTarget?.bestType : null;
 }
diff --git a/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart b/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
index 8e1519e..a43d978 100644
--- a/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
+++ b/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
@@ -113,14 +113,14 @@
 
   @override
   Future<List<SearchMatch>> searchTopLevelDeclarations(String pattern) async {
-    List<SearchMatch> allDeclarations = [];
+    Set<Element> allElements = new Set<Element>();
     RegExp regExp = new RegExp(pattern);
     List<AnalysisDriver> drivers = _drivers.toList();
     for (AnalysisDriver driver in drivers) {
       List<Element> elements = await driver.search.topLevelElements(regExp);
-      allDeclarations.addAll(elements.map(SearchMatchImpl.forElement));
+      allElements.addAll(elements);
     }
-    return allDeclarations;
+    return allElements.map(SearchMatchImpl.forElement).toList();
   }
 
   Future<List<SearchResult>> _searchDirectSubtypes(ClassElement type) async {
diff --git a/pkg/analysis_server/test/benchmarks_test.dart b/pkg/analysis_server/test/benchmarks_test.dart
index 5c6ecc1..4cd4a46 100644
--- a/pkg/analysis_server/test/benchmarks_test.dart
+++ b/pkg/analysis_server/test/benchmarks_test.dart
@@ -53,7 +53,7 @@
         );
         expect(r.exitCode, 0,
             reason: 'exit: ${r.exitCode}\n${r.stdout}\n${r.stderr}');
-      }, skip: true); // #31554
+      });
     }
   });
 }
diff --git a/pkg/analysis_server/test/integration/analysis/analysis_options_test.dart b/pkg/analysis_server/test/integration/analysis/analysis_options_test.dart
index e437193..4420642 100644
--- a/pkg/analysis_server/test/integration/analysis/analysis_options_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/analysis_options_test.dart
@@ -12,6 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(OptionsIntegrationTest);
+    defineReflectiveTests(OptionsIntegrationTest_PreviewDart2);
   });
 }
 
@@ -79,3 +80,9 @@
     expect(error.location.startColumn, 7);
   }
 }
+
+@reflectiveTest
+class OptionsIntegrationTest_PreviewDart2 extends OptionsIntegrationTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/error_test.dart b/pkg/analysis_server/test/integration/analysis/error_test.dart
index 1c32caa..fe968d7 100644
--- a/pkg/analysis_server/test/integration/analysis/error_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/error_test.dart
@@ -12,6 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(AnalysisErrorIntegrationTest);
+    defineReflectiveTests(AnalysisErrorIntegrationTest_PreviewDart2);
   });
 }
 
@@ -98,3 +99,23 @@
     expect(errors, isEmpty);
   }
 }
+
+@reflectiveTest
+class AnalysisErrorIntegrationTest_PreviewDart2
+    extends AnalysisErrorIntegrationTest {
+  @override
+  bool get usePreviewDart2 => true;
+
+  @override
+  @failingTest
+  test_super_mixins_disabled() {
+    // Disabling super mixins is not supported in the new FE.
+    return super.test_super_mixins_disabled();
+  }
+
+  @override
+  test_super_mixins_enabled() {
+    // This does pass with the new FE.
+    return super.test_super_mixins_enabled();
+  }
+}
diff --git a/pkg/analysis_server/test/integration/analysis/get_errors_nonStandard_sdk.dart b/pkg/analysis_server/test/integration/analysis/get_errors_nonStandard_sdk.dart
index 289a332..0d18844 100644
--- a/pkg/analysis_server/test/integration/analysis/get_errors_nonStandard_sdk.dart
+++ b/pkg/analysis_server/test/integration/analysis/get_errors_nonStandard_sdk.dart
@@ -17,6 +17,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(AnalysisDomainGetErrorsTest);
+    defineReflectiveTests(AnalysisDomainGetErrorsTest_PreviewDart2);
   });
 }
 
@@ -97,3 +98,10 @@
     expect(errors[0].code, 'unused_import');
   }
 }
+
+@reflectiveTest
+class AnalysisDomainGetErrorsTest_PreviewDart2
+    extends AnalysisDomainGetErrorsTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/get_errors_test.dart b/pkg/analysis_server/test/integration/analysis/get_errors_test.dart
index 2f39542..c8a518f 100644
--- a/pkg/analysis_server/test/integration/analysis/get_errors_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/get_errors_test.dart
@@ -12,6 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(GetErrorsTest);
+    defineReflectiveTests(GetErrorsTest_PreviewDart2);
   });
 }
 
@@ -34,3 +35,9 @@
     return analysisFinished.then((_) => finishTest());
   }
 }
+
+@reflectiveTest
+class GetErrorsTest_PreviewDart2 extends GetErrorsTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/get_hover_test.dart b/pkg/analysis_server/test/integration/analysis/get_hover_test.dart
index 55be6ca..352df8c 100644
--- a/pkg/analysis_server/test/integration/analysis/get_hover_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/get_hover_test.dart
@@ -14,6 +14,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(AnalysisGetHoverIntegrationTest);
+    defineReflectiveTests(AnalysisGetHoverIntegrationTest_PreviewDart2);
   });
 }
 
@@ -187,3 +188,17 @@
     });
   }
 }
+
+@reflectiveTest
+class AnalysisGetHoverIntegrationTest_PreviewDart2
+    extends AnalysisGetHoverIntegrationTest {
+  @override
+  bool get usePreviewDart2 => true;
+
+  @override
+  @failingTest
+  test_getHover() {
+    // TODO(devoncarew): NoSuchMethodError: The getter 'canonicalName' was called on null.
+    return super.test_getHover();
+  }
+}
diff --git a/pkg/analysis_server/test/integration/analysis/get_imported_elements_test.dart b/pkg/analysis_server/test/integration/analysis/get_imported_elements_test.dart
index 7433df5..4823a1a 100644
--- a/pkg/analysis_server/test/integration/analysis/get_imported_elements_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/get_imported_elements_test.dart
@@ -15,6 +15,8 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(AnalysisGetImportedElementsIntegrationTest);
+    defineReflectiveTests(
+        AnalysisGetImportedElementsIntegrationTest_PreviewDart2);
   });
 }
 
@@ -138,3 +140,10 @@
     }
   }
 }
+
+@reflectiveTest
+class AnalysisGetImportedElementsIntegrationTest_PreviewDart2
+    extends AnalysisGetImportedElementsIntegrationTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/get_library_dependencies_test.dart b/pkg/analysis_server/test/integration/analysis/get_library_dependencies_test.dart
index 51a7659..dda8e99 100644
--- a/pkg/analysis_server/test/integration/analysis/get_library_dependencies_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/get_library_dependencies_test.dart
@@ -11,6 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(GetLibraryDependenciesTest);
+    defineReflectiveTests(GetLibraryDependenciesTest_PreviewDart2);
   });
 }
 
@@ -45,3 +46,10 @@
     expect(map.keys, isEmpty);
   }
 }
+
+@reflectiveTest
+class GetLibraryDependenciesTest_PreviewDart2
+    extends GetLibraryDependenciesTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/get_navigation_test.dart b/pkg/analysis_server/test/integration/analysis/get_navigation_test.dart
index 9725e58..e9757fb 100644
--- a/pkg/analysis_server/test/integration/analysis/get_navigation_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/get_navigation_test.dart
@@ -12,6 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(GetNavigationTest);
+    defineReflectiveTests(GetNavigationTest_PreviewDart2);
   });
 }
 
@@ -65,3 +66,13 @@
     expect(result.targets, isEmpty);
   }
 }
+
+@reflectiveTest
+class GetNavigationTest_PreviewDart2 extends GetNavigationTest {
+  @override
+  bool get usePreviewDart2 => true;
+
+  @override
+  @failingTest
+  test_navigation() => super.test_navigation();
+}
diff --git a/pkg/analysis_server/test/integration/analysis/get_reachable_sources_test.dart b/pkg/analysis_server/test/integration/analysis/get_reachable_sources_test.dart
index 150c67f..532002c 100644
--- a/pkg/analysis_server/test/integration/analysis/get_reachable_sources_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/get_reachable_sources_test.dart
@@ -13,6 +13,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(GetReachableSourcesTest);
+    defineReflectiveTests(GetReachableSourcesTest_PreviewDart2);
   });
 }
 
@@ -47,3 +48,9 @@
     expect(sources[url], contains('dart:core'));
   }
 }
+
+@reflectiveTest
+class GetReachableSourcesTest_PreviewDart2 extends GetReachableSourcesTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/highlights_test.dart b/pkg/analysis_server/test/integration/analysis/highlights_test.dart
index 64d3313..8091efa 100644
--- a/pkg/analysis_server/test/integration/analysis/highlights_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/highlights_test.dart
@@ -12,6 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(AnalysisHighlightsTest);
+    defineReflectiveTests(AnalysisHighlightsTest_PreviewDart2);
   });
 }
 
@@ -144,3 +145,13 @@
     });
   }
 }
+
+@reflectiveTest
+class AnalysisHighlightsTest_PreviewDart2 extends AnalysisHighlightsTest {
+  @override
+  bool get usePreviewDart2 => true;
+
+  @override
+  @failingTest
+  test_highlights() => super.test_highlights();
+}
diff --git a/pkg/analysis_server/test/integration/analysis/highlights_test2.dart b/pkg/analysis_server/test/integration/analysis/highlights_test2.dart
index 2e672288..7d7314b 100644
--- a/pkg/analysis_server/test/integration/analysis/highlights_test2.dart
+++ b/pkg/analysis_server/test/integration/analysis/highlights_test2.dart
@@ -14,6 +14,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(AnalysisHighlightsTest);
+    defineReflectiveTests(AnalysisHighlightsTest_PreviewDart2);
   });
 }
 
@@ -164,3 +165,9 @@
     });
   }
 }
+
+@reflectiveTest
+class AnalysisHighlightsTest_PreviewDart2 extends AnalysisHighlightsTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/lint_test.dart b/pkg/analysis_server/test/integration/analysis/lint_test.dart
index 699b43b..803c4a1 100644
--- a/pkg/analysis_server/test/integration/analysis/lint_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/lint_test.dart
@@ -12,6 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(LintIntegrationTest);
+    defineReflectiveTests(LintIntegrationTest_PreviewDart2);
   });
 }
 
@@ -81,3 +82,9 @@
     expect(error.type, AnalysisErrorType.LINT);
   }
 }
+
+@reflectiveTest
+class LintIntegrationTest_PreviewDart2 extends LintIntegrationTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/navigation_test.dart b/pkg/analysis_server/test/integration/analysis/navigation_test.dart
index a514323..bad4f91 100644
--- a/pkg/analysis_server/test/integration/analysis/navigation_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/navigation_test.dart
@@ -12,6 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(AnalysisNavigationTest);
+    defineReflectiveTests(AnalysisNavigationTest_PreviewDart2);
   });
 }
 
@@ -134,3 +135,13 @@
         'TypeParameter field;', 'TypeParameter>', ElementKind.TYPE_PARAMETER);
   }
 }
+
+@reflectiveTest
+class AnalysisNavigationTest_PreviewDart2 extends AnalysisNavigationTest {
+  @override
+  bool get usePreviewDart2 => true;
+
+  @override
+  @failingTest
+  test_navigation() => super.test_navigation();
+}
diff --git a/pkg/analysis_server/test/integration/analysis/occurrences_test.dart b/pkg/analysis_server/test/integration/analysis/occurrences_test.dart
index 94c942c..78f8ca4 100644
--- a/pkg/analysis_server/test/integration/analysis/occurrences_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/occurrences_test.dart
@@ -12,6 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(OccurrencesTest);
+    defineReflectiveTests(OccurrencesTest_PreviewDart2);
   });
 }
 
@@ -66,3 +67,9 @@
     });
   }
 }
+
+@reflectiveTest
+class OccurrencesTest_PreviewDart2 extends OccurrencesTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/outline_test.dart b/pkg/analysis_server/test/integration/analysis/outline_test.dart
index bef8bd2..048ae85 100644
--- a/pkg/analysis_server/test/integration/analysis/outline_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/outline_test.dart
@@ -12,6 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(OutlineTest);
+    defineReflectiveTests(OutlineTest_PreviewDart2);
   });
 }
 
@@ -82,3 +83,9 @@
     });
   }
 }
+
+@reflectiveTest
+class OutlineTest_PreviewDart2 extends OutlineTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/overrides_test.dart b/pkg/analysis_server/test/integration/analysis/overrides_test.dart
index 32c238c..ca1bdbea 100644
--- a/pkg/analysis_server/test/integration/analysis/overrides_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/overrides_test.dart
@@ -11,6 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(OverridesTest);
+    defineReflectiveTests(OverridesTest_PreviewDart2);
   });
 }
 
@@ -120,3 +121,9 @@
     });
   }
 }
+
+@reflectiveTest
+class OverridesTest_PreviewDart2 extends OverridesTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/package_root_test.dart b/pkg/analysis_server/test/integration/analysis/package_root_test.dart
index d2e1c2c..8423906 100644
--- a/pkg/analysis_server/test/integration/analysis/package_root_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/package_root_test.dart
@@ -13,6 +13,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SetAnalysisRootsTest);
+    defineReflectiveTests(SetAnalysisRootsTest_PreviewDart2);
   });
 }
 
@@ -77,3 +78,9 @@
     });
   }
 }
+
+@reflectiveTest
+class SetAnalysisRootsTest_PreviewDart2 extends SetAnalysisRootsTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/reanalyze_concurrent_test.dart b/pkg/analysis_server/test/integration/analysis/reanalyze_concurrent_test.dart
index 11b7ceb..792e290 100644
--- a/pkg/analysis_server/test/integration/analysis/reanalyze_concurrent_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/reanalyze_concurrent_test.dart
@@ -17,6 +17,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ReanalyzeTest);
+    defineReflectiveTests(ReanalyzeTest_PreviewDart2);
   });
 }
 
@@ -47,3 +48,9 @@
     });
   }
 }
+
+@reflectiveTest
+class ReanalyzeTest_PreviewDart2 extends ReanalyzeTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/reanalyze_test.dart b/pkg/analysis_server/test/integration/analysis/reanalyze_test.dart
index 8740ef0..23693a7 100644
--- a/pkg/analysis_server/test/integration/analysis/reanalyze_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/reanalyze_test.dart
@@ -11,6 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ReanalyzeTest);
+    defineReflectiveTests(ReanalyzeTest_PreviewDart2);
   });
 }
 
@@ -38,3 +39,9 @@
     });
   }
 }
+
+@reflectiveTest
+class ReanalyzeTest_PreviewDart2 extends ReanalyzeTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/set_analysis_roots_test.dart b/pkg/analysis_server/test/integration/analysis/set_analysis_roots_test.dart
index f6c1d61..80869a9 100644
--- a/pkg/analysis_server/test/integration/analysis/set_analysis_roots_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/set_analysis_roots_test.dart
@@ -10,6 +10,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SetAnalysisRootsTest);
+    defineReflectiveTests(SetAnalysisRootsTest_PreviewDart2);
   });
 }
 
@@ -30,3 +31,9 @@
     expect(currentAnalysisErrors[pathname], isEmpty);
   }
 }
+
+@reflectiveTest
+class SetAnalysisRootsTest_PreviewDart2 extends SetAnalysisRootsTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/set_general_subscriptions_test.dart b/pkg/analysis_server/test/integration/analysis/set_general_subscriptions_test.dart
index 9d49157..3ee248a 100644
--- a/pkg/analysis_server/test/integration/analysis/set_general_subscriptions_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/set_general_subscriptions_test.dart
@@ -11,6 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SetGeneralSubscriptionsTest);
+    defineReflectiveTests(SetGeneralSubscriptionsTest_PreviewDart2);
   });
 }
 
@@ -38,3 +39,10 @@
         true);
   }
 }
+
+@reflectiveTest
+class SetGeneralSubscriptionsTest_PreviewDart2
+    extends SetGeneralSubscriptionsTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/set_priority_files_test.dart b/pkg/analysis_server/test/integration/analysis/set_priority_files_test.dart
index 10cb1a0..6a07229 100644
--- a/pkg/analysis_server/test/integration/analysis/set_priority_files_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/set_priority_files_test.dart
@@ -11,6 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SetPriorityFilesTest);
+    defineReflectiveTests(SetPriorityFilesTest_PreviewDart2);
   });
 }
 
@@ -28,3 +29,9 @@
     expect(status.analysis.isAnalyzing, false);
   }
 }
+
+@reflectiveTest
+class SetPriorityFilesTest_PreviewDart2 extends SetPriorityFilesTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/set_subscriptions_test.dart b/pkg/analysis_server/test/integration/analysis/set_subscriptions_test.dart
index 9524b4d..1656f80 100644
--- a/pkg/analysis_server/test/integration/analysis/set_subscriptions_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/set_subscriptions_test.dart
@@ -10,6 +10,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SetSubscriptionsTest);
+    defineReflectiveTests(SetSubscriptionsTest_PreviewDart2);
   });
 }
 
@@ -30,3 +31,9 @@
     expect(currentAnalysisErrors[pathname], isEmpty);
   }
 }
+
+@reflectiveTest
+class SetSubscriptionsTest_PreviewDart2 extends SetSubscriptionsTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/update_content_list_test.dart b/pkg/analysis_server/test/integration/analysis/update_content_list_test.dart
index d44cce7..c42ee65 100644
--- a/pkg/analysis_server/test/integration/analysis/update_content_list_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/update_content_list_test.dart
@@ -11,6 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(UpdateContentTest);
+    defineReflectiveTests(UpdateContentTest_PreviewDart2);
   });
 }
 
@@ -50,3 +51,16 @@
     });
   }
 }
+
+@reflectiveTest
+class UpdateContentTest_PreviewDart2 extends UpdateContentTest {
+  @override
+  bool get usePreviewDart2 => true;
+
+  @override
+  @failingTest
+  test_updateContent_list() {
+    // TODO(devoncarew): Class '_CompileTimeError' not found in library 'dart:core'.
+    return super.test_updateContent_list();
+  }
+}
diff --git a/pkg/analysis_server/test/integration/analysis/update_content_test.dart b/pkg/analysis_server/test/integration/analysis/update_content_test.dart
index 0e307b3..ac2644b 100644
--- a/pkg/analysis_server/test/integration/analysis/update_content_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/update_content_test.dart
@@ -11,6 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(UpdateContentTest);
+    defineReflectiveTests(UpdateContentTest_PreviewDart2);
   });
 }
 
@@ -105,3 +106,9 @@
     expect(errors2[0].location.file, equals(pathname));
   }
 }
+
+@reflectiveTest
+class UpdateContentTest_PreviewDart2 extends UpdateContentTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analysis/update_options_test.dart b/pkg/analysis_server/test/integration/analysis/update_options_test.dart
index 1172d78..f4d9610 100644
--- a/pkg/analysis_server/test/integration/analysis/update_options_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/update_options_test.dart
@@ -11,6 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(UpdateOptionsTest);
+    defineReflectiveTests(UpdateOptionsTest_PreviewDart2);
   });
 }
 
@@ -45,3 +46,9 @@
     expect(getErrors(pathname), hasLength(1));
   }
 }
+
+@reflectiveTest
+class UpdateOptionsTest_PreviewDart2 extends UpdateOptionsTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/completion/get_suggestions_test.dart b/pkg/analysis_server/test/integration/completion/get_suggestions_test.dart
index f2b5bd3..b3f4e19 100644
--- a/pkg/analysis_server/test/integration/completion/get_suggestions_test.dart
+++ b/pkg/analysis_server/test/integration/completion/get_suggestions_test.dart
@@ -2,8 +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 'dart:async';
-
 import 'package:analysis_server/protocol/protocol_generated.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart';
 import 'package:test/test.dart';
@@ -124,18 +122,4 @@
 class GetSuggestionsTest_PreviewDart2 extends GetSuggestionsTest {
   @override
   bool get usePreviewDart2 => true;
-
-  @override
-  @failingTest
-  Future test_getSuggestions() => super.test_getSuggestions();
-
-  @override
-  @failingTest
-  Future test_getSuggestions_onlyOverlay() =>
-      super.test_getSuggestions_onlyOverlay();
-
-  @override
-  @failingTest
-  Future test_getSuggestions_onlyOverlay_noWait() =>
-      super.test_getSuggestions_onlyOverlay_noWait();
 }
diff --git a/pkg/analysis_server/test/integration/edit/get_postfix_completion_test.dart b/pkg/analysis_server/test/integration/edit/get_postfix_completion_test.dart
index 69acbdf..4a3e3e9 100644
--- a/pkg/analysis_server/test/integration/edit/get_postfix_completion_test.dart
+++ b/pkg/analysis_server/test/integration/edit/get_postfix_completion_test.dart
@@ -2,8 +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 'dart:async';
-
 import 'package:analysis_server/protocol/protocol_generated.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart';
 import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/integration/edit/organize_directives_test.dart b/pkg/analysis_server/test/integration/edit/organize_directives_test.dart
index 429c143..cc94235 100644
--- a/pkg/analysis_server/test/integration/edit/organize_directives_test.dart
+++ b/pkg/analysis_server/test/integration/edit/organize_directives_test.dart
@@ -2,8 +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 'dart:async';
-
 import 'package:analysis_server/protocol/protocol_generated.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart';
 import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
index 2430ec8..3cf0ef7 100644
--- a/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
@@ -142,22 +142,6 @@
     return new ArgListContributor();
   }
 
-  fail_test_Annotation_local_constructor_named_param_10() async {
-    addTestSource('''
-class A { const A({int one, String two: 'defaultValue'}); }
-@A(two: '2' ^) main() { }''');
-    await computeSuggestions();
-    assertSuggestions([', one: ']);
-  }
-
-  fail_test_Annotation_local_constructor_named_param_9() async {
-    addTestSource('''
-class A { const A({int one, String two: 'defaultValue'}); }
-@A(two: '2'^) main() { }''');
-    await computeSuggestions();
-    assertSuggestions([', one: ']);
-  }
-
   test_Annotation_imported_constructor_named_param() async {
     addSource('/libA.dart', '''
 library libA; class A { const A({int one, String two: 'defaultValue'}); }''');
@@ -176,6 +160,15 @@
         namedArgumentsWithTypes: {'one': 'int', 'two': 'String'});
   }
 
+  @failingTest
+  test_Annotation_local_constructor_named_param_10() async {
+    addTestSource('''
+class A { const A({int one, String two: 'defaultValue'}); }
+@A(two: '2' ^) main() { }''');
+    await computeSuggestions();
+    assertSuggestions([', one: ']);
+  }
+
   test_Annotation_local_constructor_named_param_11() async {
     addTestSource('''
 class A { const A({int one, String two: 'defaultValue'}); }
@@ -240,6 +233,15 @@
     assertSuggestions(['one: ,']);
   }
 
+  @failingTest
+  test_Annotation_local_constructor_named_param_9() async {
+    addTestSource('''
+class A { const A({int one, String two: 'defaultValue'}); }
+@A(two: '2'^) main() { }''');
+    await computeSuggestions();
+    assertSuggestions([', one: ']);
+  }
+
   test_Annotation_local_constructor_named_param_negative() async {
     addTestSource('''
 class A { const A(int one, int two, int three, {int four, String five:
@@ -344,31 +346,6 @@
         defaultArgumentListTextRanges: null);
   }
 
-  test_ArgumentList_Flutter_InstanceCreationExpression_slivers() async {
-    configureFlutterPkg({
-      'src/widgets/framework.dart': flutter_framework_code +
-          '\nclass CustomScrollView extends Widget { CustomScrollView('
-          '\n{List<Widget> slivers}){}}'
-    });
-
-    addTestSource('''
-import 'package:flutter/src/widgets/framework.dart';
-
-build() => new CustomScrollView(
-    ^
-  );
-''');
-
-    await computeSuggestions();
-
-    assertSuggest('slivers: <Widget>[],',
-        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
-        relevance: DART_RELEVANCE_NAMED_PARAMETER,
-        defaultArgListString: null,
-        selectionOffset: 18,
-        defaultArgumentListTextRanges: null);
-  }
-
   test_ArgumentList_Flutter_InstanceCreationExpression_children_dynamic() async {
     // Ensure we don't generate unneeded <dynamic> param if a future API doesn't
     // type it's children.
@@ -419,6 +396,31 @@
         defaultArgListString: null);
   }
 
+  test_ArgumentList_Flutter_InstanceCreationExpression_slivers() async {
+    configureFlutterPkg({
+      'src/widgets/framework.dart': flutter_framework_code +
+          '\nclass CustomScrollView extends Widget { CustomScrollView('
+          '\n{List<Widget> slivers}){}}'
+    });
+
+    addTestSource('''
+import 'package:flutter/src/widgets/framework.dart';
+
+build() => new CustomScrollView(
+    ^
+  );
+''');
+
+    await computeSuggestions();
+
+    assertSuggest('slivers: <Widget>[],',
+        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
+        relevance: DART_RELEVANCE_NAMED_PARAMETER,
+        defaultArgListString: null,
+        selectionOffset: 18,
+        defaultArgumentListTextRanges: null);
+  }
+
   test_ArgumentList_Flutter_MethodExpression_children() async {
     // Ensure we don't generate params for a method call
     configureFlutterPkg({
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 3aa6d41..b578713 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
@@ -48,8 +48,26 @@
     assertNoResult('A');
   }
 
+  test_namedArgument_enum() async {
+    addTestFile('''
+enum E {e1, e2}
+f({E e}) {}
+main() {
+  f(e: ^);
+}
+''');
+    await getSuggestionsWith(<String, List<String>>{});
+    expect(replacementOffset, equals(completionOffset));
+    expect(replacementLength, equals(0));
+    assertHasResult(CompletionSuggestionKind.INVOCATION, 'E');
+    assertHasResult(CompletionSuggestionKind.INVOCATION, 'E.e1',
+        relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_INCREMENT);
+    assertHasResult(CompletionSuggestionKind.INVOCATION, 'E.e2',
+        relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_INCREMENT);
+  }
+
   test_PrefixedIdentifier_field() async {
-    // SimpleIdentifier  PrefixedIdentifeir  ExpressionStatement
+    // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
     addTestFile('class A {static int s1; static int s2; x() {A.^}}');
     await getSuggestionsWith({
       '.A': ['s2']
@@ -65,7 +83,7 @@
   }
 
   test_PrefixedIdentifier_field_inPart() async {
-    // SimpleIdentifier  PrefixedIdentifeir  ExpressionStatement
+    // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
     addFile('/project/bin/myLib.dart',
         'library L; part "$testFile"; class A {static int s2;}');
     addTestFile('part of L; foo() {A.^}');
@@ -82,7 +100,7 @@
   }
 
   test_PrefixedIdentifier_getter() async {
-    // SimpleIdentifier  PrefixedIdentifeir  ExpressionStatement
+    // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
     addTestFile('class A {int get g1 => 1; int get g2 => 2; x() {new A().^}}');
     await getSuggestionsWith({
       '.A': ['g2']
@@ -98,7 +116,7 @@
   }
 
   test_PrefixedIdentifier_setter() async {
-    // SimpleIdentifier  PrefixedIdentifeir  ExpressionStatement
+    // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
     addTestFile('class A {set s1(v) {}; set s2(v) {}; x() {new A().^}}');
     await getSuggestionsWith({
       '.A': ['s2']
@@ -114,7 +132,7 @@
   }
 
   test_PrefixedIdentifier_static_method() async {
-    // SimpleIdentifier  PrefixedIdentifeir  ExpressionStatement
+    // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
     addTestFile('import "dart:async"; class A {x() {Future.^}}');
     await getSuggestionsWith({
       'dart.async.Future': ['value', 'wait']
diff --git a/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
index 3bac1ad..deff0db 100644
--- a/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
@@ -279,35 +279,6 @@
     return new KeywordContributor();
   }
 
-  fail_import_partial() async {
-    addTestSource('imp^ import "package:foo/foo.dart"; import "bar.dart";');
-    await computeSuggestions();
-    // TODO(danrubel) should not suggest declaration keywords
-    assertNotSuggested('class');
-  }
-
-  fail_import_partial4() async {
-    addTestSource('^ imp import "package:foo/foo.dart";');
-    await computeSuggestions();
-    // TODO(danrubel) should not suggest declaration keywords
-    assertNotSuggested('class');
-  }
-
-  fail_import_partial5() async {
-    addTestSource('library libA; imp^ import "package:foo/foo.dart";');
-    await computeSuggestions();
-    // TODO(danrubel) should not suggest declaration keywords
-    assertNotSuggested('class');
-  }
-
-  fail_import_partial6() async {
-    addTestSource(
-        'library bar; import "zoo.dart"; imp^ import "package:foo/foo.dart";');
-    await computeSuggestions();
-    // TODO(danrubel) should not suggest declaration keywords
-    assertNotSuggested('class');
-  }
-
   test_after_class() async {
     addTestSource('class A {} ^');
     await computeSuggestions();
diff --git a/pkg/analysis_server/test/services/completion/dart/static_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/static_member_contributor_test.dart
index 8df73bd..da59376 100644
--- a/pkg/analysis_server/test/services/completion/dart/static_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/static_member_contributor_test.dart
@@ -22,18 +22,6 @@
     return new StaticMemberContributor();
   }
 
-  fail_enumConst_deprecated() async {
-    addTestSource('@deprecated enum E { one, two } main() {E.^}');
-    await computeSuggestions();
-    assertNotSuggested('E');
-    // TODO(danrubel) Investigate why enum suggestion is not marked
-    // as deprecated if enum ast element is deprecated
-    assertSuggestEnumConst('one', isDeprecated: true);
-    assertSuggestEnumConst('two', isDeprecated: true);
-    assertNotSuggested('index');
-    assertSuggestField('values', 'List<E>', isDeprecated: true);
-  }
-
   test_enumConst() async {
     addTestSource('enum E { one, two } main() {E.^}');
     await computeSuggestions();
@@ -96,6 +84,19 @@
     assertSuggestField('values', 'List<E>');
   }
 
+  @failingTest
+  test_enumConst_deprecated() async {
+    addTestSource('@deprecated enum E { one, two } main() {E.^}');
+    await computeSuggestions();
+    assertNotSuggested('E');
+    // TODO(danrubel) Investigate why enum suggestion is not marked
+    // as deprecated if enum ast element is deprecated
+    assertSuggestEnumConst('one', isDeprecated: true);
+    assertSuggestEnumConst('two', isDeprecated: true);
+    assertNotSuggested('index');
+    assertSuggestField('values', 'List<E>', isDeprecated: true);
+  }
+
   test_keyword() async {
     addTestSource('class C { static C get instance => null; } main() {C.in^}');
     await computeSuggestions();
diff --git a/pkg/analysis_server/test/services/search/search_engine_test.dart b/pkg/analysis_server/test/services/search/search_engine_test.dart
index 6c3bb33..678806c 100644
--- a/pkg/analysis_server/test/services/search/search_engine_test.dart
+++ b/pkg/analysis_server/test/services/search/search_engine_test.dart
@@ -9,6 +9,7 @@
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/file_system/memory_file_system.dart';
+import 'package:analyzer/source/package_map_resolver.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart';
 import 'package:analyzer/src/dart/analysis/file_state.dart';
 import 'package:analyzer/src/generated/engine.dart';
@@ -23,12 +24,12 @@
 
 main() {
   defineReflectiveSuite(() {
-    defineReflectiveTests(SearchEngineImpl2Test);
+    defineReflectiveTests(SearchEngineImplTest);
   });
 }
 
 @reflectiveTest
-class SearchEngineImpl2Test {
+class SearchEngineImplTest {
   final MemoryResourceProvider provider = new MemoryResourceProvider();
   DartSdk sdk;
   final ByteStore byteStore = new MemoryByteStore();
@@ -392,31 +393,81 @@
     expect(
         matches.where((match) => !match.libraryElement.isInSdk), hasLength(4));
 
-    void assertHasElement(String name) {
-      expect(
-          matches,
-          contains(predicate((SearchMatch m) =>
-              m.kind == MatchKind.DECLARATION && m.element.name == name)));
+    void assertHasOneElement(String name) {
+      Iterable<SearchMatch> nameMatches = matches.where((SearchMatch m) =>
+          m.kind == MatchKind.DECLARATION && m.element.name == name);
+      expect(nameMatches, hasLength(1));
     }
 
-    assertHasElement('A');
-    assertHasElement('a');
-    assertHasElement('B');
-    assertHasElement('b');
+    assertHasOneElement('A');
+    assertHasOneElement('a');
+    assertHasOneElement('B');
+    assertHasOneElement('b');
   }
 
-  AnalysisDriver _newDriver() => new AnalysisDriver(
-      scheduler,
-      logger,
-      provider,
-      byteStore,
-      contentOverlay,
-      null,
-      new SourceFactory(
-          [new DartUriResolver(sdk), new ResourceUriResolver(provider)],
-          null,
-          provider),
-      new AnalysisOptionsImpl()..strongMode = true);
+  test_searchTopLevelDeclarations_dependentPackage() async {
+    var a = _p('/a/lib/a.dart');
+    provider.newFile(a, '''
+class A {}
+''');
+    var driver1 = _newDriver();
+    driver1.addFile(a);
+
+    // The package:b uses the class A from the package:a,
+    // so it sees the declaration the element A.
+    var b = _p('/b/lib/b.dart');
+    provider.newFile(b, '''
+import 'package:a/a.dart';
+class B extends A {}
+''');
+    var driver2 = _newDriver(
+        packageUriResolver: new PackageMapUriResolver(provider, {
+      'a': [provider.getFile(a).parent]
+    }));
+    driver2.addFile(b);
+
+    while (scheduler.isAnalyzing) {
+      await new Future.delayed(new Duration(milliseconds: 1));
+    }
+
+    var searchEngine = new SearchEngineImpl([driver1, driver2]);
+    List<SearchMatch> matches =
+        await searchEngine.searchTopLevelDeclarations('.*');
+    // We get exactly two items: A and B.
+    // I.e. we get exactly one A.
+    expect(
+        matches.where((match) => !match.libraryElement.isInSdk), hasLength(2));
+
+    void assertHasOneElement(String name) {
+      Iterable<SearchMatch> nameMatches = matches.where((SearchMatch m) =>
+          m.kind == MatchKind.DECLARATION && m.element.name == name);
+      expect(nameMatches, hasLength(1));
+    }
+
+    assertHasOneElement('A');
+    assertHasOneElement('B');
+  }
+
+  AnalysisDriver _newDriver({UriResolver packageUriResolver}) {
+    var resolvers = <UriResolver>[
+      new DartUriResolver(sdk),
+      new ResourceUriResolver(provider)
+    ];
+    if (packageUriResolver != null) {
+      resolvers.add(packageUriResolver);
+    }
+    resolvers.add(new ResourceUriResolver(provider));
+
+    return new AnalysisDriver(
+        scheduler,
+        logger,
+        provider,
+        byteStore,
+        contentOverlay,
+        null,
+        new SourceFactory(resolvers, null, provider),
+        new AnalysisOptionsImpl()..strongMode = true);
+  }
 
   String _p(String path) => provider.convertPath(path);
 }
diff --git a/pkg/analysis_server/test/src/computer/closingLabels_computer_test.dart b/pkg/analysis_server/test/src/computer/closingLabels_computer_test.dart
index 533d072..aaf6879 100644
--- a/pkg/analysis_server/test/src/computer/closingLabels_computer_test.dart
+++ b/pkg/analysis_server/test/src/computer/closingLabels_computer_test.dart
@@ -30,13 +30,15 @@
   test_adjacentLinesExcluded() async {
     String content = """
 void myMethod() {
-  return /*1*/new Thing(1,
-    2)/*1:Thing*/;
+  return /*1*/new Wrapper(
+    /*2*/new Thing(1,
+      2)/*2:Thing*/
+  )/*1:Wrapper*/;
 }
 """;
 
     var labels = await _computeElements(content);
-    _compareLabels(labels, content, expectedLabelCount: 1);
+    _compareLabels(labels, content, expectedLabelCount: 2);
   }
 
   /// When constructors span many like this, the node's start position is on the first line
@@ -74,13 +76,24 @@
     _compareLabels(labels, content, expectedLabelCount: 0);
   }
 
-  test_constConstructor() async {
+  test_noLabelsForOneElement() async {
     String content = """
-void myMethod() {
-  return /*1*/const Class(
-    1,
-    2
-  )/*1:Class*/;
+Widget build(BuildContext context) {
+  return new Row(
+  );
+}
+""";
+
+    var labels = await _computeElements(content);
+    _compareLabels(labels, content, expectedLabelCount: 0);
+  }
+
+  test_labelsShownForMultipleElements() async {
+    String content = """
+Widget build(BuildContext context) {
+  return /*1*/new Row(
+    child: new RaisedButton(),
+  )/*1:Row*/;
 }
 """;
 
@@ -88,18 +101,51 @@
     _compareLabels(labels, content, expectedLabelCount: 1);
   }
 
-  test_constNamedConstructor() async {
+  test_labelsShownForMultipleElements_2() async {
     String content = """
-void myMethod() {
-  return /*1*/const Class.fromThing(
-    1,
-    2
-  )/*1:Class.fromThing*/;
+Widget build(BuildContext context) {
+  return /*1*/new Row(
+    child: /*2*/new RaisedButton(
+      onPressed: increment,
+    )/*2:RaisedButton*/,
+  )/*1:Row*/;
 }
 """;
 
     var labels = await _computeElements(content);
-    _compareLabels(labels, content, expectedLabelCount: 1);
+    _compareLabels(labels, content, expectedLabelCount: 2);
+  }
+
+  test_constConstructor() async {
+    String content = """
+void myMethod() {
+  return /*1*/new Wrapper(
+    /*2*/const Class(
+      1,
+      2
+    )/*2:Class*/
+  )/*1:Wrapper*/;
+}
+""";
+
+    var labels = await _computeElements(content);
+    _compareLabels(labels, content, expectedLabelCount: 2);
+  }
+
+  test_constNamedConstructor() async {
+    String content = """
+void myMethod() {
+  return /*1*/new Wrapper(
+    /*2*/const Class.fromThing(
+      1,
+      2
+    )/*2:Class.fromThing*/
+  )/*1:Wrapper*/;
+}
+""";
+
+    var labels = await _computeElements(content);
+    _compareLabels(labels, content, expectedLabelCount: 2);
   }
 
   test_knownBadCode1() async {
@@ -134,15 +180,17 @@
   test_listLiterals() async {
     String content = """
 void myMethod() {
-  return Widget.createWidget(/*1*/<Widget>[
-    1,
-    2
-  ]/*1:<Widget>[]*/);
+  return /*1*/new Wrapper(
+    Widget.createWidget(/*2*/<Widget>[
+      1,
+      2
+    ]/*2:<Widget>[]*/)
+  )/*1:Wrapper*/;
 }
 """;
 
     var labels = await _computeElements(content);
-    _compareLabels(labels, content, expectedLabelCount: 1);
+    _compareLabels(labels, content, expectedLabelCount: 2);
   }
 
   /// When a line contains the end of a label, we need to ensure we also include any
@@ -192,102 +240,116 @@
   test_newConstructor() async {
     String content = """
 void myMethod() {
-  return /*1*/new Class(
-    1,
-    2
-  )/*1:Class*/;
+  return /*1*/new Wrapper(
+    /*2*/new Class(
+      1,
+      2
+    )/*2:Class*/
+  )/*1:Wrapper*/;
 }
 """;
 
     var labels = await _computeElements(content);
-    _compareLabels(labels, content, expectedLabelCount: 1);
+    _compareLabels(labels, content, expectedLabelCount: 2);
   }
 
   test_newNamedConstructor() async {
     String content = """
 void myMethod() {
-  return /*1*/new Class.fromThing(
-    1,
-    2
-  )/*1:Class.fromThing*/;
+  return /*1*/new Wrapper(
+    /*2*/new Class.fromThing(
+      1,
+      2
+    )/*2:Class.fromThing*/
+  )/*1:Wrapper*/;
 }
 """;
 
     var labels = await _computeElements(content);
-    _compareLabels(labels, content, expectedLabelCount: 1);
+    _compareLabels(labels, content, expectedLabelCount: 2);
   }
 
   test_NoLabelsFromInterpolatedStrings() async {
     String content = """
 void main(HighlightRegionType type, int offset, int length) {
-  /*1*/new Fail(
-      'Not expected to find (offset=\$offset; length=\$length; type=\$type) in\\n'
-      '\${regions.join('\\n')}')/*1:Fail*/;
+  /*1*/new Wrapper(
+    /*2*/new Fail(
+        'Not expected to find (offset=\$offset; length=\$length; type=\$type) in\\n'
+        '\${regions.join('\\n')}')/*2:Fail*/
+      )/*1:Wrapper*/;
 }
     """;
 
     var labels = await _computeElements(content);
-    _compareLabels(labels, content, expectedLabelCount: 1);
+    _compareLabels(labels, content, expectedLabelCount: 2);
   }
 
   test_prefixedConstConstructor() async {
     String content = """
 import 'dart:async' as a;
 void myMethod() {
-  return /*1*/const a.Future(
-    1,
-    2
-  )/*1:a.Future*/;
+  return /*1*/new Wrapper(
+    /*2*/const a.Future(
+      1,
+      2
+    )/*2:a.Future*/
+  )/*1:Wrapper*/;
 }
 """;
 
     var labels = await _computeElements(content);
-    _compareLabels(labels, content, expectedLabelCount: 1);
+    _compareLabels(labels, content, expectedLabelCount: 2);
   }
 
   test_prefixedConstNamedConstructor() async {
     String content = """
 import 'dart:async' as a;
 void myMethod() {
-  return /*1*/const a.Future.delayed(
-    1,
-    2
-  )/*1:a.Future.delayed*/;
+  return /*1*/new Wrapper(
+    /*2*/const a.Future.delayed(
+      1,
+      2
+    )/*2:a.Future.delayed*/
+  )/*1:Wrapper*/;
 }
 """;
 
     var labels = await _computeElements(content);
-    _compareLabels(labels, content, expectedLabelCount: 1);
+    _compareLabels(labels, content, expectedLabelCount: 2);
   }
 
   test_prefixedNewConstructor() async {
     String content = """
 import 'dart:async' as a;
 void myMethod() {
-  return /*1*/new a.Future(
-    1,
-    2
-  )/*1:a.Future*/;
+  return /*1*/new Wrapper(
+    /*2*/new a.Future(
+      1,
+      2
+    )/*2:a.Future*/
+  )/*1:Wrapper*/;
 }
 """;
 
     var labels = await _computeElements(content);
-    _compareLabels(labels, content, expectedLabelCount: 1);
+    _compareLabels(labels, content, expectedLabelCount: 2);
   }
 
   test_prefixedNewNamedConstructor() async {
     String content = """
 import 'dart:async' as a;
 void myMethod() {
-  return /*1*/new a.Future.delayed(
-    1,
-    2
-  )/*1:a.Future.delayed*/;
+  return /*1*/new Wrapper(
+    /*2*/new a.Future.delayed(
+      1,
+      2
+    )/*2:a.Future.delayed*/
+  )/*1:Wrapper*/;
 }
 """;
 
     var labels = await _computeElements(content);
-    _compareLabels(labels, content, expectedLabelCount: 1);
+    _compareLabels(labels, content, expectedLabelCount: 2);
   }
 
   test_sameLineExcluded() async {
@@ -303,7 +365,7 @@
 
   /// Compares provided closing labels with expected
   /// labels extracted from the comments in the provided content.
-  _compareLabels(List<ClosingLabel> labels, String content,
+  void _compareLabels(List<ClosingLabel> labels, String content,
       {int expectedLabelCount}) {
     // Require the test pass us the expected count to guard
     // against expected annotations being mistyped and not
diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart
index 555f10d..c618f14 100644
--- a/pkg/analyzer/lib/dart/element/element.dart
+++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -665,6 +665,10 @@
    */
   bool get isSynthetic;
 
+  /// Return `true` if this element has an annotation of the form
+  /// '@visibleForTesting'.
+  bool get isVisibleForTesting;
+
   /**
    * Return the kind of element that this is.
    */
@@ -873,6 +877,10 @@
    */
   bool get isRequired;
 
+  /// Return `true` if this annotation marks the associated member as being
+  /// visible for testing.
+  bool get isVisibleForTesting;
+
   /**
    * Return a representation of the value of this annotation, forcing the value
    * to be computed if it had not previously been computed, or `null` if the
diff --git a/pkg/analyzer/lib/error/error.dart b/pkg/analyzer/lib/error/error.dart
index af34a92..34148ff 100644
--- a/pkg/analyzer/lib/error/error.dart
+++ b/pkg/analyzer/lib/error/error.dart
@@ -261,6 +261,7 @@
   HintCode.INVALID_METHOD_OVERRIDE_TYPE_PARAMETER_BOUND,
   HintCode.INVALID_REQUIRED_PARAM,
   HintCode.INVALID_USE_OF_PROTECTED_MEMBER,
+  HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER,
   HintCode.IS_DOUBLE,
   HintCode.IS_INT,
   HintCode.IS_NOT_DOUBLE,
@@ -532,6 +533,7 @@
   StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
   StaticWarningCode.ASSIGNMENT_TO_CONST,
   StaticWarningCode.ASSIGNMENT_TO_FINAL,
+  StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL,
   StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER,
   StaticWarningCode.ASSIGNMENT_TO_FUNCTION,
   StaticWarningCode.ASSIGNMENT_TO_METHOD,
@@ -608,7 +610,6 @@
   StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER,
   StaticWarningCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE,
   StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS,
-  StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER,
   StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC,
   StaticWarningCode.TYPE_TEST_WITH_NON_TYPE,
   StaticWarningCode.TYPE_TEST_WITH_UNDEFINED_NAME,
@@ -666,7 +667,6 @@
   StrongModeCode.TOP_LEVEL_INSTANCE_GETTER,
   StrongModeCode.TOP_LEVEL_TYPE_ARGUMENTS,
   StrongModeCode.TOP_LEVEL_UNSUPPORTED,
-  StrongModeCode.UNSAFE_BLOCK_CLOSURE_INFERENCE,
   TodoCode.TODO,
 ];
 
diff --git a/pkg/analyzer/lib/src/context/builder.dart b/pkg/analyzer/lib/src/context/builder.dart
index 4d06fb1..6bccdb7 100644
--- a/pkg/analyzer/lib/src/context/builder.dart
+++ b/pkg/analyzer/lib/src/context/builder.dart
@@ -32,6 +32,7 @@
 import 'package:analyzer/src/services/lint.dart';
 import 'package:analyzer/src/summary/summary_sdk.dart';
 import 'package:analyzer/src/task/options.dart';
+import 'package:analyzer/src/util/sdk.dart';
 import 'package:args/args.dart';
 import 'package:front_end/src/api_prototype/byte_store.dart';
 import 'package:front_end/src/base/performance_logger.dart';
@@ -171,6 +172,19 @@
         getAnalysisOptions(path, contextRoot: contextRoot);
     //_processAnalysisOptions(context, optionMap);
     final sf = createSourceFactory(path, options);
+
+    // The folder with `vm_platform_strong.dill`, which has required patches.
+    Folder kernelPlatformFolder;
+    if (previewDart2) {
+      DartSdk sdk = sf.dartSdk;
+      if (sdk is FolderBasedDartSdk) {
+        var binariesPath = computePlatformBinariesPath(sdk.directory.path);
+        if (binariesPath != null) {
+          kernelPlatformFolder = resourceProvider.getFolder(binariesPath);
+        }
+      }
+    }
+
     AnalysisDriver driver = new AnalysisDriver(
         analysisDriverScheduler,
         performanceLog,
@@ -180,7 +194,8 @@
         contextRoot,
         sf,
         options,
-        enableKernelDriver: previewDart2);
+        enableKernelDriver: previewDart2,
+        kernelPlatformFolder: kernelPlatformFolder);
     // temporary plugin support:
     if (onCreateAnalysisDriver != null) {
       onCreateAnalysisDriver(driver, analysisDriverScheduler, performanceLog,
diff --git a/pkg/analyzer/lib/src/dart/analysis/kernel_context.dart b/pkg/analyzer/lib/src/dart/analysis/kernel_context.dart
index 47ebc2e..be948b9 100644
--- a/pkg/analyzer/lib/src/dart/analysis/kernel_context.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/kernel_context.dart
@@ -84,14 +84,16 @@
 
   var uriTranslator = new UriTranslatorImpl(
       new TargetLibrariesSpecification('none', dartLibraries), packages);
+  var errorListener = new KernelErrorListener();
   var options = new ProcessedOptions(new CompilerOptions()
     ..target = new _AnalysisTarget(
         new TargetFlags(strongMode: analysisOptions.strongMode))
     ..reportMessages = false
     ..logger = logger
     ..fileSystem = new _FileSystemAdaptor(fsState, pathContext)
-    ..byteStore = byteStore);
-  return new KernelDriver(options, uriTranslator,
+    ..byteStore = byteStore
+    ..onError = errorListener.onError);
+  return new KernelDriver(options, uriTranslator, errorListener,
       metadataFactory: new AnalyzerMetadataFactory(),
       sdkOutlineBytes: sdkOutlineBytes);
 }
@@ -171,7 +173,7 @@
       }
 
       kernelResult.dependencies.forEach(addLibrary);
-      addLibrary(kernelResult.library);
+      addLibrary(kernelResult.libraryResult.library);
 
       if (DEBUG) {
         print('----------- ${targetLibrary.uriStr}');
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
index e7a18bb..5ac8673 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:collection';
 
 import 'package:analyzer/context/declared_variables.dart';
 import 'package:analyzer/dart/ast/ast.dart';
@@ -23,6 +24,7 @@
 import 'package:analyzer/src/dart/element/type.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/error/pending_error.dart';
+import 'package:analyzer/src/fasta/error_converter.dart';
 import 'package:analyzer/src/fasta/resolution_applier.dart';
 import 'package:analyzer/src/fasta/resolution_storer.dart' as kernel;
 import 'package:analyzer/src/generated/declaration_resolver.dart';
@@ -196,7 +198,7 @@
 
       // TODO(scheglov) Improve.
       AnalyzerTarget analyzerTarget;
-      await _kernelDriver.compileLibrary(
+      final kernelResult = await _kernelDriver.compileLibrary(
           (fileSystem, bool includeComments, dillTarget, uriTranslator,
                   {metadataCollector}) =>
               analyzerTarget ??= new AnalyzerTarget(fileSystem, dillTarget,
@@ -207,6 +209,18 @@
       units.forEach((file, unit) {
         _resolveFile2(file, unit, resolutions);
         _computePendingMissingRequiredParameters(file, unit);
+
+        // Invalid part URIs can result in an element with a null source
+        if (unit.element.source != null) {
+          final errorListener = new FastaErrorReporter(
+              new ErrorReporter(_getErrorListener(file), unit.element.source));
+          final libraryKernelResult = kernelResult.results
+              .expand((r) => r.libraryResults)
+              .where((r) => r.library.importUri == unit.element.source.uri)
+              .firstWhere((_) => true, orElse: () => null);
+          libraryKernelResult?.errors?.forEach((kernelError) =>
+              errorListener.reportCompilationMessage(kernelError));
+        }
       });
 
       _computeConstants();
@@ -724,24 +738,33 @@
         }
         for (var member in declaration.members) {
           if (member is ConstructorDeclaration) {
-            var context = member.element as ElementImpl;
-            var resolution = resolutions.next();
-            var applier = _createResolutionApplier(context, resolution);
-            member.initializers.accept(applier);
-            member.parameters.accept(applier);
-            member.body.accept(applier);
-            applier.applyToAnnotations(member);
-            applier.checkDone();
+            var context = member.element as ConstructorElementImpl;
+            ConstructorName redirectName = member.redirectedConstructor;
+            if (redirectName != null) {
+              var redirectedConstructor = context.redirectedConstructor;
+              redirectName.staticElement = redirectedConstructor;
+              ResolutionApplier.applyConstructorElement(
+                  redirectedConstructor.returnType,
+                  redirectedConstructor,
+                  redirectName);
+              // TODO(scheglov) Add support for type parameterized redirects.
+            } else {
+              var resolution = resolutions.next();
+              var applier = _createResolutionApplier(context, resolution);
+              member.initializers.accept(applier);
+              member.parameters.accept(applier);
+              member.body.accept(applier);
+              applier.applyToAnnotations(member);
+              applier.checkDone();
+            }
           } else if (member is FieldDeclaration) {
             List<VariableDeclaration> fields = member.fields.variables;
-            if (fields.length != 1) {
-              // TODO(scheglov) Handle this case.
-              throw new UnimplementedError('Multiple field');
-            }
             var context = fields[0].element as ElementImpl;
             var resolution = resolutions.next();
             var applier = _createResolutionApplier(context, resolution);
-            fields[0].initializer?.accept(applier);
+            for (var field in fields.reversed) {
+              field.initializer?.accept(applier);
+            }
             applier.applyToAnnotations(member);
             applier.checkDone();
           } else if (member is MethodDeclaration) {
@@ -772,14 +795,12 @@
         // No bodies to resolve.
       } else if (declaration is TopLevelVariableDeclaration) {
         List<VariableDeclaration> variables = declaration.variables.variables;
-        if (variables.length != 1) {
-          // TODO(scheglov) Handle this case.
-          throw new UnimplementedError('Multiple variables');
-        }
         var context = variables[0].element as ElementImpl;
         var resolution = resolutions.next();
         var applier = _createResolutionApplier(context, resolution);
-        variables[0].initializer?.accept(applier);
+        for (var variable in variables.reversed) {
+          variable.initializer?.accept(applier);
+        }
         applier.applyToAnnotations(declaration);
         applier.checkDone();
       } else {
@@ -999,10 +1020,11 @@
   ElementImpl context;
 
   List<Element> declaredElements = [];
-  Map<kernel.TreeNode, Element> declarationToElement = {};
-  Map<FunctionElementImpl, kernel.TreeNode> functionElementToDeclaration = {};
+  Map<kernel.TreeNode, Element> declarationToElement = new HashMap.identity();
+  Map<FunctionElementImpl, kernel.TreeNode> functionElementToDeclaration =
+      new HashMap.identity();
   Map<ParameterElementImpl, kernel.VariableDeclaration>
-      parameterElementToDeclaration = {};
+      parameterElementToDeclaration = new HashMap.identity();
 
   ResolutionApplier applier;
 
@@ -1050,6 +1072,8 @@
         element = resynthesizer
             .getElementFromCanonicalName(referencedNode.canonicalName);
         assert(element != null);
+      } else if (referencedNode is kernel.DynamicType) {
+        element = DynamicElementImpl.instance;
       } else if (referencedNode is kernel.FunctionType) {
         element = resynthesizer
             .getElementFromCanonicalName(referencedNode.typedef.canonicalName);
@@ -1059,24 +1083,32 @@
             referencedNode.classNode.canonicalName);
         assert(element != null);
       } else if (referencedNode is kernel.MemberGetterNode) {
-        var memberElement = resynthesizer
-            .getElementFromCanonicalName(referencedNode.member.canonicalName);
-        assert(memberElement != null);
-        if (memberElement is PropertyInducingElementImpl) {
-          element = memberElement.getter;
-          assert(element != null);
+        if (referencedNode.member == null) {
+          element = null;
         } else {
-          element = memberElement;
+          var memberElement = resynthesizer
+              .getElementFromCanonicalName(referencedNode.member.canonicalName);
+          assert(memberElement != null);
+          if (memberElement is PropertyInducingElementImpl) {
+            element = memberElement.getter;
+            assert(element != null);
+          } else {
+            element = memberElement;
+          }
         }
       } else if (referencedNode is kernel.MemberSetterNode) {
-        var memberElement = resynthesizer
-            .getElementFromCanonicalName(referencedNode.member.canonicalName);
-        assert(memberElement != null);
-        if (memberElement is PropertyInducingElementImpl) {
-          element = memberElement.setter;
-          assert(element != null);
+        if (referencedNode.member == null) {
+          element = null;
         } else {
-          element = memberElement;
+          var memberElement = resynthesizer
+              .getElementFromCanonicalName(referencedNode.member.canonicalName);
+          assert(memberElement != null);
+          if (memberElement is PropertyInducingElementImpl) {
+            element = memberElement.setter;
+            assert(element != null);
+          } else {
+            element = memberElement;
+          }
         }
       } else if (referencedNode is kernel.NullNode) {
         element = null;
@@ -1091,13 +1123,13 @@
       referencedElements.add(element);
     }
 
-    applier = new ResolutionApplier(
+    applier = new ValidatingResolutionApplier(
         this,
         declaredElements,
-        resolution.declarationOffsets,
         referencedElements,
-        resolution.referenceOffsets,
         resolution.kernelTypes,
+        resolution.declarationOffsets,
+        resolution.referenceOffsets,
         resolution.typeOffsets);
   }
 
@@ -1187,7 +1219,8 @@
       return element.type;
     } else if (kernelType is kernel.MemberInvocationDartType) {
       kernel.Member member = kernelType.member;
-      if (member != null) {
+      if (member is kernel.Procedure &&
+          member.kind == kernel.ProcedureKind.Method) {
         ExecutableElementImpl element =
             resynthesizer.getElementFromCanonicalName(member.canonicalName);
         return resynthesizer.instantiateFunctionType(
@@ -1197,7 +1230,7 @@
             member.function.functionType.withoutTypeParameters,
             kernelType.type);
       }
-      return null;
+      return DynamicTypeImpl.instance;
     } else if (kernelType is kernel.IndexAssignNullFunctionType) {
       return null;
     } else {
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 5c534f9..0f26c2c 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -2874,6 +2874,10 @@
    */
   static String _REQUIRED_VARIABLE_NAME = "required";
 
+  /// The name of the top-level variable used to mark a method as being
+  /// visible for testing.
+  static String _VISIBLE_FOR_TESTING_VARIABLE_NAME = "visibleForTesting";
+
   /**
    * The element representing the field, variable, or constructor being used as
    * an annotation.
@@ -2988,6 +2992,12 @@
           element.name == _REQUIRED_VARIABLE_NAME &&
           element.library?.name == _META_LIB_NAME;
 
+  @override
+  bool get isVisibleForTesting =>
+      element is PropertyAccessorElement &&
+      element.name == _VISIBLE_FOR_TESTING_VARIABLE_NAME &&
+      element.library?.name == _META_LIB_NAME;
+
   /**
    * Get the library containing this annotation.
    */
@@ -3260,6 +3270,10 @@
   }
 
   @override
+  bool get isVisibleForTesting => metadata
+      .any((ElementAnnotation annotation) => annotation.isVisibleForTesting);
+
+  @override
   LibraryElement get library =>
       getAncestor((element) => element is LibraryElement);
 
@@ -7465,6 +7479,9 @@
   bool get isSynthetic => true;
 
   @override
+  bool get isVisibleForTesting => false;
+
+  @override
   ElementKind get kind => ElementKind.ERROR;
 
   @override
diff --git a/pkg/analyzer/lib/src/dart/element/handle.dart b/pkg/analyzer/lib/src/dart/element/handle.dart
index f26e94e..062b10f 100644
--- a/pkg/analyzer/lib/src/dart/element/handle.dart
+++ b/pkg/analyzer/lib/src/dart/element/handle.dart
@@ -378,6 +378,9 @@
   bool get isSynthetic => actualElement.isSynthetic;
 
   @override
+  bool get isVisibleForTesting => actualElement.isVisibleForTesting;
+
+  @override
   LibraryElement get library =>
       getAncestor((element) => element is LibraryElement);
 
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index ef78722..ac66f59 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -424,6 +424,9 @@
   bool get isSynthetic => _baseElement.isSynthetic;
 
   @override
+  bool get isVisibleForTesting => _baseElement.isVisibleForTesting;
+
+  @override
   ElementKind get kind => _baseElement.kind;
 
   @override
diff --git a/pkg/analyzer/lib/src/dart/error/hint_codes.dart b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
index 63067a8..eb7771a 100644
--- a/pkg/analyzer/lib/src/dart/error/hint_codes.dart
+++ b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
@@ -303,6 +303,16 @@
       "The member '{0}' can only be used within instance members of subclasses "
       "of '{1}'.");
 
+  /// This hint is generated anywhere where a member annotated with
+  /// `@visibleForTesting` is used outside the defining library, or a test.
+  ///
+  /// Parameters:
+  /// 0: the name of the member
+  /// 1: the name of the defining class
+  static const HintCode INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER =
+      const HintCode('INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER',
+          "The member '{0}' can only be used within '{1}' or a test.");
+
   /**
    * Hint for the `x is double` type checks.
    */
diff --git a/pkg/analyzer/lib/src/error/codes.dart b/pkg/analyzer/lib/src/error/codes.dart
index 346daf9..6241319 100644
--- a/pkg/analyzer/lib/src/error/codes.dart
+++ b/pkg/analyzer/lib/src/error/codes.dart
@@ -3325,6 +3325,17 @@
    * a NoSuchMethodError to be thrown, because no setter is defined for it. The
    * assignment will also give rise to a static warning for the same reason.
    */
+  static const StaticWarningCode ASSIGNMENT_TO_FINAL_LOCAL =
+      const StaticWarningCode(
+          'ASSIGNMENT_TO_FINAL_LOCAL',
+          "'{0}', a final variable, can only be set once.",
+          "Try making '{0}' non-final.");
+
+  /**
+   * 5 Variables: Attempting to assign to a final variable elsewhere will cause
+   * a NoSuchMethodError to be thrown, because no setter is defined for it. The
+   * assignment will also give rise to a static warning for the same reason.
+   */
   static const StaticWarningCode ASSIGNMENT_TO_FINAL_NO_SETTER =
       const StaticWarningCode(
           'ASSIGNMENT_TO_FINAL_NO_SETTER',
@@ -4523,19 +4534,6 @@
           "changing the import to not be deferred.");
 
   /**
-   * Not yet spec'd.
-   *
-   * Parameters:
-   * 0: the name of the generic function's type parameter that is being used in
-   *    an `is` expression
-   */
-  static const StaticWarningCode TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER =
-      const StaticWarningCode(
-          'TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER',
-          "The type parameter '{0}' can't be used in a type test.",
-          "Try using a different type.");
-
-  /**
    * 12.31 Type Test: It is a static warning if <i>T</i> does not denote a type
    * available in the current lexical scope.
    */
@@ -5038,12 +5036,6 @@
       "The type of '{0}' can't be inferred because {1} expressions aren't supported.",
       "Try adding an explicit type for '{0}'.");
 
-  static const StrongModeCode UNSAFE_BLOCK_CLOSURE_INFERENCE = const StrongModeCode(
-      ErrorType.STATIC_WARNING,
-      'UNSAFE_BLOCK_CLOSURE_INFERENCE',
-      "Unsafe use of a block closure in a type-inferred variable outside a function body.",
-      "Try adding a type annotation for '{0}'. See dartbug.com/26947.");
-
   @override
   final ErrorType type;
 
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index 463735d..6d25fab 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -171,6 +171,7 @@
         leftParenthesis, expression, leftParenthesis?.endGroup));
   }
 
+  @override
   void handleStringPart(Token literalString) {
     assert(identical(literalString.kind, STRING_TOKEN));
     debugEvent("StringPart");
@@ -178,6 +179,13 @@
     push(literalString);
   }
 
+  @override
+  void handleInterpolationExpression(Token leftBracket, Token rightBracket) {
+    Expression expression = pop();
+    push(ast.interpolationExpression(leftBracket, expression, rightBracket));
+  }
+
+  @override
   void endLiteralString(int interpolationCount, Token endToken) {
     debugEvent("endLiteralString");
 
@@ -197,8 +205,8 @@
         var part = parts[i];
         if (part is Token) {
           elements.add(ast.interpolationString(part, part.lexeme));
-        } else if (part is Expression) {
-          elements.add(ast.interpolationExpression(null, part, null));
+        } else if (part is InterpolationExpression) {
+          elements.add(part);
         } else {
           unhandled("${part.runtimeType}", "string interpolation",
               first.charOffset, uri);
@@ -2027,8 +2035,7 @@
         optional('set', getOrSet));
     debugEvent("Method");
 
-    FunctionBody body = pop();
-    ConstructorName redirectedConstructor = null; // TODO(paulberry)
+    var bodyObject = pop();
     List<ConstructorInitializer> initializers = pop() ?? const [];
     Token separator = pop();
     FormalParameterList parameters = pop();
@@ -2039,6 +2046,19 @@
     List<Annotation> metadata = pop();
     Comment comment = _findComment(metadata, beginToken);
 
+    ConstructorName redirectedConstructor;
+    FunctionBody body;
+    if (bodyObject is FunctionBody) {
+      body = bodyObject;
+    } else if (bodyObject is _RedirectingFactoryBody) {
+      separator = bodyObject.equalToken;
+      redirectedConstructor = bodyObject.constructorName;
+      body = ast.emptyFunctionBody(endToken);
+    } else {
+      unhandled("${bodyObject.runtimeType}", "bodyObject",
+          beginToken.charOffset, uri);
+    }
+
     if (parameters == null && (getOrSet == null || optional('set', getOrSet))) {
       Token previous = typeParameters?.endToken;
       if (previous == null) {
diff --git a/pkg/analyzer/lib/src/fasta/error_converter.dart b/pkg/analyzer/lib/src/fasta/error_converter.dart
index f93c156..a4c0bec 100644
--- a/pkg/analyzer/lib/src/fasta/error_converter.dart
+++ b/pkg/analyzer/lib/src/fasta/error_converter.dart
@@ -5,6 +5,7 @@
 import 'package:analyzer/analyzer.dart';
 import 'package:analyzer/dart/ast/token.dart' show Token;
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
+import 'package:front_end/src/api_prototype/compilation_message.dart';
 import 'package:front_end/src/fasta/messages.dart' show Code, Message;
 
 /// An error reporter that knows how to convert a Fasta error into an analyzer
@@ -17,12 +18,8 @@
   /// [errorReporter].
   FastaErrorReporter(this.errorReporter);
 
-  /// Report an error based on the given [message] whose range is described by
-  /// the given [offset] and [length].
-  void reportMessage(Message message, int offset, int length) {
-    Code code = message.code;
-    Map<String, dynamic> arguments = message.arguments;
-
+  void reportByCode(String analyzerCode, int offset, int length,
+      Map<String, dynamic> arguments) {
     String stringOrTokenLexeme() {
       var text = arguments['string'];
       if (text == null) {
@@ -34,7 +31,7 @@
       return text;
     }
 
-    switch (code.analyzerCode) {
+    switch (analyzerCode) {
       case "ABSTRACT_CLASS_MEMBER":
         errorReporter?.reportErrorForOffset(
             ParserErrorCode.ABSTRACT_CLASS_MEMBER, offset, length);
@@ -408,6 +405,12 @@
         errorReporter?.reportErrorForOffset(
             ParserErrorCode.PREFIX_AFTER_COMBINATOR, offset, length);
         return;
+      case "REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR":
+        errorReporter?.reportErrorForOffset(
+            ParserErrorCode.REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR,
+            offset,
+            length);
+        return;
       case "RETURN_IN_GENERATOR":
         errorReporter?.reportErrorForOffset(
             CompileTimeErrorCode.RETURN_IN_GENERATOR, offset, length);
@@ -502,4 +505,40 @@
       // fall through
     }
   }
+
+  void reportCompilationMessage(CompilationMessage message) {
+    // TODO(mfairhurst) Disable this once the codes are already analyzer
+    // format (#31644)
+    final analyzerCode =
+        message.code.runes.fold<List<String>>(<String>[], (words, charcode) {
+      final char = new String.fromCharCode(charcode);
+      if (char.toUpperCase() == char) {
+        words.add(char);
+      } else {
+        words[words.length - 1] = words.last + char.toUpperCase();
+      }
+      return words;
+    }).join('_');
+
+    final code = errorCodeByUniqueName(analyzerCode);
+    if (code != null) {
+      errorReporter.reportError(new AnalysisError.forValues(
+          errorReporter.source,
+          message.span.start.offset,
+          message.span.length,
+          code,
+          message.message,
+          message.tip));
+    } else {
+      // TODO(mfairhurst) throw here, and fail all tests that trip this.
+    }
+  }
+
+  /// Report an error based on the given [message] whose range is described by
+  /// the given [offset] and [length].
+  void reportMessage(Message message, int offset, int length) {
+    Code code = message.code;
+
+    reportByCode(code.analyzerCode, offset, length, message.arguments);
+  }
 }
diff --git a/pkg/analyzer/lib/src/fasta/resolution_applier.dart b/pkg/analyzer/lib/src/fasta/resolution_applier.dart
index 80281aa..1cf2182 100644
--- a/pkg/analyzer/lib/src/fasta/resolution_applier.dart
+++ b/pkg/analyzer/lib/src/fasta/resolution_applier.dart
@@ -19,21 +19,15 @@
 /// Visitor that applies resolution data from the front end (obtained via
 /// [ResolutionStorer]) to an analyzer AST.
 class ResolutionApplier extends GeneralizingAstVisitor {
-  /// Indicates whether debug messages should be printed.
-  static const bool _debug = false;
-
   final TypeContext _typeContext;
 
   final List<Element> _declaredElements;
-  final List<int> _declaredElementOffsets;
   int _declaredElementIndex = 0;
 
   final List<Element> _referencedElements;
-  final List<int> _referencedElementOffsets;
   int _referencedElementIndex = 0;
 
   final List<kernel.DartType> _types;
-  final List<int> _typeOffsets;
   int _typeIndex = 0;
 
   /// Indicates whether we are applying resolution to an annotation.
@@ -42,14 +36,8 @@
   /// with corresponding getters.
   bool _inAnnotation = false;
 
-  ResolutionApplier(
-      this._typeContext,
-      this._declaredElements,
-      this._declaredElementOffsets,
-      this._referencedElements,
-      this._referencedElementOffsets,
-      this._types,
-      this._typeOffsets);
+  ResolutionApplier(this._typeContext, this._declaredElements,
+      this._referencedElements, this._types);
 
   /// Apply resolution to annotations of the given [node].
   void applyToAnnotations(AnnotatedNode node) {
@@ -62,15 +50,15 @@
   void checkDone() {
     if (_declaredElementIndex != _declaredElements.length) {
       throw new StateError('Some declarations were not consumed, starting at '
-          'offset ${_declaredElementOffsets[_declaredElementIndex]}');
+          '${_declaredElements[_declaredElementIndex]}');
     }
     if (_referencedElementIndex != _referencedElements.length) {
       throw new StateError('Some references were not consumed, starting at '
-          'offset ${_referencedElementOffsets[_referencedElementIndex]}');
+          '${_referencedElements[_referencedElementIndex]}');
     }
     if (_typeIndex != _types.length) {
-      throw new StateError('Some types were not consumed, starting at offset '
-          '${_typeOffsets[_typeIndex]}');
+      throw new StateError(
+          'Some types were not consumed, starting at ${_types[_typeIndex]}');
     }
   }
 
@@ -251,7 +239,7 @@
         }
       }
 
-      _applyParameters(element.parameters, parameterList.parameters);
+      applyParameters(element.parameters, parameterList);
     }
 
     functionExpression.body?.accept(this);
@@ -269,7 +257,7 @@
     if (element != null) {
       node.element = element;
       node.staticType = element.type;
-      _applyParameters(element.parameters, parameterList.parameters);
+      applyParameters(element.parameters, parameterList);
     }
 
     // Apply resolution to default values.
@@ -314,33 +302,15 @@
 
     DartType type = _getTypeFor(constructorName);
     ConstructorElement element = _getReferenceFor(constructorName);
-    ClassElement classElement = element?.enclosingElement;
 
     node.staticElement = element;
     node.staticType = type;
 
-    Identifier typeIdentifier = constructorName.type.name;
-    if (typeIdentifier is SimpleIdentifier) {
-      applyToTypeAnnotation(type, constructorName.type);
-      if (constructorName.name != null) {
-        constructorName.name.staticElement = element;
-      }
-    } else if (typeIdentifier is PrefixedIdentifier) {
-      // TODO(scheglov) Rewrite AST using knowledge about prefixes.
-      // TODO(scheglov) Add support for `new prefix.Type()`.
-      // TODO(scheglov) Add support for `new prefix.Type.name()`.
-      assert(constructorName.name == null);
-      constructorName.period = typeIdentifier.period;
-      constructorName.name = typeIdentifier.identifier;
-      SimpleIdentifier classNode = typeIdentifier.prefix;
-      constructorName.type = astFactory.typeName(classNode, null);
-      classNode.staticElement = classElement;
-      classNode.staticType = type;
-      constructorName.name.staticElement = element;
-    }
+    applyConstructorElement(type, element, constructorName);
 
-    node.argumentList?.accept(this);
-    _associateArgumentsWithParameters(element?.parameters, node.argumentList);
+    ArgumentList argumentList = node.argumentList;
+    _associateArgumentsWithParameters(element?.parameters, argumentList);
+    _applyResolutionToArguments(argumentList);
   }
 
   @override
@@ -376,13 +346,18 @@
 
     ArgumentList argumentList = node.argumentList;
 
-    _getReferenceFor(node.methodName); // raw element
+    Element invokeElement = _getReferenceFor(node.methodName);
     DartType invokeType = _getTypeFor(node.methodName);
     DartType resultType = _getTypeFor(argumentList);
 
+    if (invokeElement is PropertyInducingElement) {
+      PropertyInducingElement property = invokeElement;
+      invokeElement = property.getter;
+    }
+
     node.staticInvokeType = invokeType;
     node.staticType = resultType;
-    node.methodName.staticElement = invokeType.element;
+    node.methodName.staticElement = invokeElement;
     node.methodName.staticType = invokeType;
 
     if (invokeType is FunctionType) {
@@ -392,15 +367,7 @@
       _associateArgumentsWithParameters(invokeType.parameters, argumentList);
     }
 
-    // Apply resolution to arguments.
-    // Skip names of named arguments.
-    for (var argument in argumentList.arguments) {
-      if (argument is NamedExpression) {
-        argument.expression.accept(this);
-      } else {
-        argument.accept(this);
-      }
-    }
+    _applyResolutionToArguments(argumentList);
   }
 
   @override
@@ -424,36 +391,8 @@
 
   @override
   void visitPrefixedIdentifier(PrefixedIdentifier node) {
-    Element element =
-        _getReferenceFor(node.identifier, nullIfDifferentOffset: true);
-    if (element != null) {
-      // If the element is for the identifier, then this is a static element.
-      DartType type = _getTypeFor(node.identifier);
-      if (element is PropertyAccessorElement) {
-        assert(element.isStatic);
-        node.identifier.staticElement = element;
-        node.identifier.staticType = type;
-        var enclosingElement = element.enclosingElement;
-        if (enclosingElement is ClassElement) {
-          node.prefix.staticElement = enclosingElement;
-          node.prefix.staticType = enclosingElement.type;
-        } else {
-          // TODO(scheglov) Support for prefixed top-level variables?
-          throw new UnimplementedError('(${element.runtimeType}) $element');
-        }
-      } else {
-        // TODO(scheglov) Support for methods?
-        throw new UnimplementedError('(${element.runtimeType}) $element');
-      }
-    } else {
-      // If the element is not for the identifier, this is actually a property.
-      // The element and type must be for the prefix.
-      node.prefix.staticElement = _getReferenceFor(node.prefix);
-      node.prefix.staticType = _getTypeFor(node.prefix);
-      // The resolution for the identifier follows.
-      node.identifier.staticElement = _getReferenceFor(node.identifier);
-      node.identifier.staticType = _getTypeFor(node.identifier);
-    }
+    node.prefix.accept(this);
+    node.identifier.accept(this);
     node.staticType = node.identifier.staticType;
   }
 
@@ -488,6 +427,20 @@
   }
 
   @override
+  void visitRedirectingConstructorInvocation(
+      RedirectingConstructorInvocation node) {
+    SimpleIdentifier constructorName = node.constructorName;
+
+    ConstructorElement element = _getReferenceFor(constructorName ?? node);
+    node.staticElement = element;
+    constructorName?.staticElement = element;
+
+    ArgumentList argumentList = node.argumentList;
+    _associateArgumentsWithParameters(element?.parameters, argumentList);
+    _applyResolutionToArguments(argumentList);
+  }
+
+  @override
   void visitSimpleIdentifier(SimpleIdentifier node) {
     node.staticElement = _getReferenceFor(node);
     super.visitSimpleIdentifier(node);
@@ -564,10 +517,6 @@
     if (node.parent is TopLevelVariableDeclaration) {
       node.variables.accept(this);
     } else {
-      if (node.variables.length != 1) {
-        // TODO(paulberry): handle this case
-        throw new UnimplementedError('Multiple variables in one declaration');
-      }
       if (node.metadata.isNotEmpty) {
         // TODO(paulberry): handle this case
         throw new UnimplementedError('Metadata on a variable declaration list');
@@ -583,6 +532,17 @@
     }
   }
 
+  /// Apply resolution to arguments of the [argumentList].
+  void _applyResolutionToArguments(ArgumentList argumentList) {
+    for (var argument in argumentList.arguments) {
+      if (argument is NamedExpression) {
+        argument.expression.accept(this);
+      } else {
+        argument.accept(this);
+      }
+    }
+  }
+
   /// Associate arguments of the [argumentList] with the [parameters].
   void _associateArgumentsWithParameters(
       List<ParameterElement> parameters, ArgumentList argumentList) {
@@ -630,46 +590,12 @@
   /// Return the element associated with the declaration represented by the
   /// given [node].
   Element _getDeclarationFor(AstNode node) {
-    int nodeOffset = node.offset;
-    if (_debug) {
-      print('Getting declaration element for $node at $nodeOffset');
-    }
-    if (_declaredElementIndex >= _declaredElements.length) {
-      throw new StateError(
-          'No declaration information for $node at $nodeOffset');
-    }
-    int elementOffset = _declaredElementOffsets[_declaredElementIndex];
-    if (nodeOffset != elementOffset) {
-      throw new StateError(
-          'Expected element declaration for analyzer offset $nodeOffset; '
-          'got one for kernel offset $elementOffset');
-    }
-
     return _declaredElements[_declaredElementIndex++];
   }
 
   /// Return the element associated with the reference represented by the
   /// given [entity].
-  Element _getReferenceFor(SyntacticEntity entity,
-      {bool nullIfDifferentOffset: false}) {
-    int entityOffset = entity.offset;
-    if (_debug) {
-      print('Getting reference element for $entity at $entityOffset');
-    }
-    if (_referencedElementIndex >= _referencedElements.length) {
-      throw new StateError(
-          'No reference information for $entity at $entityOffset');
-    }
-    int elementOffset = _referencedElementOffsets[_referencedElementIndex];
-    if (entityOffset != elementOffset) {
-      if (nullIfDifferentOffset) {
-        return null;
-      }
-      throw new StateError(
-          'Expected element reference for analyzer offset $entityOffset; '
-          'got one for kernel offset $elementOffset');
-    }
-
+  Element _getReferenceFor(SyntacticEntity entity) {
     Element element = _referencedElements[_referencedElementIndex++];
     if (_inAnnotation && element is PropertyInducingElement) {
       return element.getter;
@@ -684,23 +610,99 @@
   /// optional parameter (i.e. [Null]).
   DartType _getTypeFor(SyntacticEntity entity, {bool synthetic: false}) {
     assert(!synthetic || entity == null);
-
-    var entityOffset = synthetic ? -1 : entity.offset;
-    if (_debug) {
-      print('Getting type for $entity at $entityOffset');
-    }
-    if (_typeIndex >= _types.length) {
-      throw new StateError('No type information for $entity at $entityOffset');
-    }
-    if (entityOffset != _typeOffsets[_typeIndex]) {
-      throw new StateError('Expected a type for $entity at $entityOffset; '
-          'got one for kernel offset ${_typeOffsets[_typeIndex]}');
-    }
-
     kernel.DartType kernelType = _types[_typeIndex++];
     return _typeContext.translateType(kernelType);
   }
 
+  /// Apply the [type] that is created by the [constructorName] and the
+  /// [constructorElement] it references.
+  static void applyConstructorElement(DartType type,
+      ConstructorElement constructorElement, ConstructorName constructorName) {
+    ClassElement classElement = constructorElement?.enclosingElement;
+
+    Identifier typeIdentifier = constructorName.type.name;
+    if (typeIdentifier is SimpleIdentifier) {
+      applyToTypeAnnotation(type, constructorName.type);
+      if (constructorName.name != null) {
+        constructorName.name.staticElement = constructorElement;
+      }
+    } else if (typeIdentifier is PrefixedIdentifier) {
+      // TODO(scheglov) Rewrite AST using knowledge about prefixes.
+      // TODO(scheglov) Add support for `new prefix.Type()`.
+      // TODO(scheglov) Add support for `new prefix.Type.name()`.
+      assert(constructorName.name == null);
+      constructorName.period = typeIdentifier.period;
+      constructorName.name = typeIdentifier.identifier;
+
+      SimpleIdentifier classNode = typeIdentifier.prefix;
+      classNode.staticElement = classElement;
+      classNode.staticType = type;
+
+      constructorName.type = astFactory.typeName(classNode, null);
+      constructorName.type.type = type;
+      constructorName.name.staticElement = constructorElement;
+    }
+  }
+
+  /// Apply the types of the [parameterElements] to the [parameterList] that
+  /// have an explicit type annotation.
+  static void applyParameters(List<ParameterElement> parameterElements,
+      FormalParameterList parameterList) {
+    List<FormalParameter> parameters = parameterList.parameters;
+
+    int length = parameterElements.length;
+    if (parameters.length != length) {
+      throw new StateError('Parameter counts do not match');
+    }
+    for (int i = 0; i < length; i++) {
+      ParameterElementImpl element = parameterElements[i];
+      FormalParameter parameter = parameters[i];
+
+      NormalFormalParameter normalParameter;
+      if (parameter is NormalFormalParameter) {
+        normalParameter = parameter;
+      } else if (parameter is DefaultFormalParameter) {
+        normalParameter = parameter.parameter;
+      }
+      assert(normalParameter != null);
+
+      if (normalParameter is SimpleFormalParameterImpl) {
+        normalParameter.element = element;
+      }
+
+      if (normalParameter.identifier != null) {
+        element.nameOffset = normalParameter.identifier.offset;
+        normalParameter.identifier.staticElement = element;
+        normalParameter.identifier.staticType = element.type;
+      }
+
+      // Apply the type or the return type, if a function typed parameter.
+      TypeAnnotation functionReturnType;
+      FormalParameterList functionParameterList;
+      if (normalParameter is SimpleFormalParameter) {
+        applyToTypeAnnotation(element.type, normalParameter.type);
+      } else if (normalParameter is FunctionTypedFormalParameter) {
+        functionReturnType = normalParameter.returnType;
+        functionParameterList = normalParameter.parameters;
+      } else if (normalParameter is FieldFormalParameter) {
+        if (normalParameter.parameters == null) {
+          applyToTypeAnnotation(element.type, normalParameter.type);
+        } else {
+          functionReturnType = normalParameter.type;
+          functionParameterList = normalParameter.parameters;
+        }
+      }
+
+      if (functionParameterList != null) {
+        FunctionType elementType = element.type;
+        if (functionReturnType != null) {
+          applyToTypeAnnotation(elementType.returnType, functionReturnType);
+        }
+        applyParameters(elementType.parameters, functionParameterList);
+      }
+    }
+  }
+
   /// Apply the [type] to the [typeAnnotation] by setting the type of the
   /// [typeAnnotation] to the [type] and recursively applying each of the type
   /// arguments of the [type] to the corresponding type arguments of the
@@ -726,8 +728,7 @@
       FunctionType functionType = type;
       typeAnnotation.type = type;
       applyToTypeAnnotation(functionType.returnType, typeAnnotation.returnType);
-      _applyParameters(
-          functionType.parameters, typeAnnotation.parameters.parameters);
+      applyParameters(functionType.parameters, typeAnnotation.parameters);
     } else if (typeAnnotation is TypeNameImpl) {
       typeAnnotation.type = type;
       SimpleIdentifier name = nameForElement(typeAnnotation.name);
@@ -749,42 +750,6 @@
     }
   }
 
-  /// Apply the types of the [parameterElements] to the [parameters] that have
-  /// an explicit type annotation.
-  static void _applyParameters(List<ParameterElement> parameterElements,
-      List<FormalParameter> parameters) {
-    int length = parameterElements.length;
-    if (parameters.length != length) {
-      throw new StateError('Parameter counts do not match');
-    }
-    for (int i = 0; i < length; i++) {
-      ParameterElement element = parameterElements[i];
-      FormalParameter parameter = parameters[i];
-
-      NormalFormalParameter normalParameter;
-      if (parameter is NormalFormalParameter) {
-        normalParameter = parameter;
-      } else if (parameter is DefaultFormalParameter) {
-        normalParameter = parameter.parameter;
-      }
-
-      TypeAnnotation typeAnnotation = null;
-      if (normalParameter is SimpleFormalParameter) {
-        typeAnnotation = normalParameter.type;
-      }
-      if (typeAnnotation != null) {
-        applyToTypeAnnotation(element.type, typeAnnotation);
-      }
-
-      if (normalParameter is SimpleFormalParameterImpl) {
-        normalParameter.element = element;
-      }
-      if (normalParameter.identifier != null) {
-        normalParameter.identifier.staticElement = element;
-      }
-    }
-  }
-
   /// Recursively apply each of the type arguments of the [type] to the
   /// corresponding type arguments of the [typeArguments].
   static void _applyTypeArgumentsToList(
@@ -832,3 +797,95 @@
   /// Return the Analyzer [DartType] for the given [kernelType].
   DartType translateType(kernel.DartType kernelType);
 }
+
+/// Visitor that applies resolution data from the front end (obtained via
+/// [ResolutionStorer]) to an analyzer AST, and also checks file offsets to
+/// verify that the types are applied to the correct subexpressions.
+class ValidatingResolutionApplier extends ResolutionApplier {
+  /// Indicates whether debug messages should be printed.
+  static const bool _debug = false;
+
+  final List<int> _declaredElementOffsets;
+  final List<int> _referencedElementOffsets;
+  final List<int> _typeOffsets;
+
+  ValidatingResolutionApplier(
+      TypeContext typeContext,
+      List<Element> declaredElements,
+      List<Element> referencedElements,
+      List<kernel.DartType> types,
+      this._declaredElementOffsets,
+      this._referencedElementOffsets,
+      this._typeOffsets)
+      : super(typeContext, declaredElements, referencedElements, types);
+
+  @override
+  void checkDone() {
+    if (_declaredElementIndex != _declaredElements.length) {
+      throw new StateError('Some declarations were not consumed, starting at '
+          'offset ${_declaredElementOffsets[_declaredElementIndex]}');
+    }
+    if (_referencedElementIndex != _referencedElements.length) {
+      throw new StateError('Some references were not consumed, starting at '
+          'offset ${_referencedElementOffsets[_referencedElementIndex]}');
+    }
+    if (_typeIndex != _types.length) {
+      throw new StateError('Some types were not consumed, starting at offset '
+          '${_typeOffsets[_typeIndex]}');
+    }
+  }
+
+  @override
+  Element _getDeclarationFor(AstNode node) {
+    int nodeOffset = node.offset;
+    if (_debug) {
+      print('Getting declaration element for $node at $nodeOffset');
+    }
+    if (_declaredElementIndex >= _declaredElements.length) {
+      throw new StateError(
+          'No declaration information for $node at $nodeOffset');
+    }
+    int elementOffset = _declaredElementOffsets[_declaredElementIndex];
+    if (nodeOffset != elementOffset) {
+      throw new StateError(
+          'Expected element declaration for analyzer offset $nodeOffset; '
+          'got one for kernel offset $elementOffset');
+    }
+    return super._getDeclarationFor(node);
+  }
+
+  @override
+  Element _getReferenceFor(SyntacticEntity entity) {
+    int entityOffset = entity.offset;
+    if (_debug) {
+      print('Getting reference element for $entity at $entityOffset');
+    }
+    if (_referencedElementIndex >= _referencedElements.length) {
+      throw new StateError(
+          'No reference information for $entity at $entityOffset');
+    }
+    int elementOffset = _referencedElementOffsets[_referencedElementIndex];
+    if (entityOffset != elementOffset) {
+      throw new StateError(
+          'Expected element reference for analyzer offset $entityOffset; '
+          'got one for kernel offset $elementOffset');
+    }
+    return super._getReferenceFor(entity);
+  }
+
+  @override
+  DartType _getTypeFor(SyntacticEntity entity, {bool synthetic: false}) {
+    var entityOffset = synthetic ? -1 : entity.offset;
+    if (_debug) {
+      print('Getting type for $entity at $entityOffset');
+    }
+    if (_typeIndex >= _types.length) {
+      throw new StateError('No type information for $entity at $entityOffset');
+    }
+    if (entityOffset != _typeOffsets[_typeIndex]) {
+      throw new StateError('Expected a type for $entity at $entityOffset; '
+          'got one for kernel offset ${_typeOffsets[_typeIndex]}');
+    }
+    return super._getTypeFor(entity);
+  }
+}
diff --git a/pkg/analyzer/lib/src/fasta/resolution_storer.dart b/pkg/analyzer/lib/src/fasta/resolution_storer.dart
index 665f407..8a59929 100644
--- a/pkg/analyzer/lib/src/fasta/resolution_storer.dart
+++ b/pkg/analyzer/lib/src/fasta/resolution_storer.dart
@@ -132,6 +132,8 @@
 /// A reference to the getter represented by the [member].
 /// The [member] might be either a getter itself, or a field.
 class MemberGetterNode implements TreeNode {
+  /// The member representing the getter, or `null` if the getter could not be
+  /// resolved.
   final Member member;
 
   MemberGetterNode(this.member);
@@ -162,6 +164,8 @@
 /// A reference to the setter represented by the [member].
 /// The [member] might be either a setter itself, or a field.
 class MemberSetterNode implements TreeNode {
+  /// The member representing the setter, or `null` if the setter could not be
+  /// resolved.
   final Member member;
 
   MemberSetterNode(this.member);
@@ -485,11 +489,23 @@
   }
 
   @override
-  bool staticAssignEnter(
-      Expression expression, Expression write, DartType typeContext) {
+  void redirectingInitializerEnter(RedirectingInitializer initializer) {
+    _recordReference(initializer.target, initializer.fileOffset);
+  }
+
+  @override
+  bool staticAssignEnter(Expression expression, int targetOffset,
+      Class targetClass, Expression write, DartType typeContext) {
+    // If the static target is explicit (and is a class), record it.
+    if (targetClass != null) {
+      _recordReference(targetClass, targetOffset);
+      _recordType(targetClass.rawType, targetOffset);
+    }
+
     _deferReference(write.fileOffset);
     _deferType(write.fileOffset);
-    return super.staticAssignEnter(expression, write, typeContext);
+    return super.staticAssignEnter(
+        expression, targetOffset, targetClass, write, typeContext);
   }
 
   @override
@@ -508,6 +524,18 @@
   }
 
   @override
+  bool staticGetEnter(StaticGet expression, int targetOffset, Class targetClass,
+      DartType typeContext) {
+    // If the static target is explicit (and is a class), record it.
+    if (targetClass != null) {
+      _recordReference(targetClass, targetOffset);
+      _recordType(targetClass.rawType, targetOffset);
+    }
+    return super
+        .staticGetEnter(expression, targetOffset, targetClass, typeContext);
+  }
+
+  @override
   void staticGetExit(StaticGet expression, DartType inferredType) {
     _recordReference(
         new MemberGetterNode(expression.target), expression.fileOffset);
diff --git a/pkg/analyzer/lib/src/generated/declaration_resolver.dart b/pkg/analyzer/lib/src/generated/declaration_resolver.dart
index ae1db7e..dc46ac2 100644
--- a/pkg/analyzer/lib/src/generated/declaration_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/declaration_resolver.dart
@@ -291,6 +291,17 @@
   }
 
   @override
+  Object visitFormalParameterList(FormalParameterList node) {
+    if (_applyKernelTypes) {
+      ResolutionApplier.applyParameters(_walker._parameters, node);
+      _walker.consumeParameters();
+      return null;
+    } else {
+      return super.visitFormalParameterList(node);
+    }
+  }
+
+  @override
   Object visitFunctionDeclaration(FunctionDeclaration node) {
     SimpleIdentifier functionName = node.name;
     Token property = node.propertyKeyword;
@@ -890,6 +901,10 @@
     _functionIndex = _functions.length;
   }
 
+  void consumeParameters() {
+    _parameterIndex = _parameters.length;
+  }
+
   /**
    * Returns the next non-synthetic child of [element] which is an accessor;
    * throws an [IndexError] if there are no more.
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index e5b19aa..a0b598b 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -919,7 +919,6 @@
   @override
   Object visitIsExpression(IsExpression node) {
     _checkForTypeAnnotationDeferredClass(node.type);
-    _checkForTypeAnnotationGenericFunctionParameter(node.type);
     return super.visitIsExpression(node);
   }
 
@@ -2574,17 +2573,24 @@
         _errorReporter.reportErrorForNode(
             StaticWarningCode.ASSIGNMENT_TO_CONST, expression);
       } else if (element.isFinal) {
-        if (element is FieldElementImpl &&
-            element.setter == null &&
-            element.isSynthetic) {
-          _errorReporter.reportErrorForNode(
-              StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER,
-              highlightedNode,
-              [element.name, element.enclosingElement.displayName]);
+        if (element is FieldElementImpl) {
+          if (element.setter == null && element.isSynthetic) {
+            _errorReporter.reportErrorForNode(
+                StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER,
+                highlightedNode,
+                [element.name, element.enclosingElement.displayName]);
+          } else {
+            _errorReporter.reportErrorForNode(
+                StaticWarningCode.ASSIGNMENT_TO_FINAL,
+                highlightedNode,
+                [element.name]);
+          }
           return;
         }
-        _errorReporter.reportErrorForNode(StaticWarningCode.ASSIGNMENT_TO_FINAL,
-            highlightedNode, [element.name]);
+        _errorReporter.reportErrorForNode(
+            StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL,
+            highlightedNode,
+            [element.name]);
       }
     } else if (element is FunctionElement) {
       _errorReporter.reportErrorForNode(
@@ -5561,7 +5567,8 @@
   void _checkForReferenceBeforeDeclaration(SimpleIdentifier node) {
     if (!node.inDeclarationContext() &&
         _hiddenElements != null &&
-        _hiddenElements.contains(node.staticElement)) {
+        _hiddenElements.contains(node.staticElement) &&
+        node.parent is! CommentReference) {
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION,
           node,
@@ -5759,28 +5766,6 @@
   }
 
   /**
-   * Verify that the given type [name] is not a type parameter in a generic
-   * method.
-   *
-   * See [StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER].
-   */
-  void _checkForTypeAnnotationGenericFunctionParameter(TypeAnnotation type) {
-    if (type is TypeName) {
-      Identifier name = type.name;
-      if (name is SimpleIdentifier) {
-        Element element = name.staticElement;
-        if (element is TypeParameterElement &&
-            element.enclosingElement is ExecutableElement) {
-          _errorReporter.reportErrorForNode(
-              StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER,
-              name,
-              [name.name]);
-        }
-      }
-    }
-  }
-
-  /**
    * Verify that the type arguments in the given [typeName] are all within
    * their bounds.
    *
diff --git a/pkg/analyzer/lib/src/generated/parser.dart b/pkg/analyzer/lib/src/generated/parser.dart
index 820bb38..f4c4590 100644
--- a/pkg/analyzer/lib/src/generated/parser.dart
+++ b/pkg/analyzer/lib/src/generated/parser.dart
@@ -6455,7 +6455,14 @@
     Expression message;
     if (_matches(TokenType.COMMA)) {
       comma = getAndAdvance();
-      message = parseExpression2();
+      if (_matches(TokenType.CLOSE_PAREN)) {
+        comma = null;
+      } else {
+        message = parseExpression2();
+        if (_matches(TokenType.COMMA)) {
+          getAndAdvance();
+        }
+      }
     }
     Token rightParen = _expect(TokenType.CLOSE_PAREN);
     return astFactory.assertInitializer(
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index b524b43..770a02e 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -32,6 +32,7 @@
 import 'package:analyzer/src/generated/testing/element_factory.dart';
 import 'package:analyzer/src/generated/type_system.dart';
 import 'package:analyzer/src/generated/utilities_dart.dart';
+import 'package:path/path.dart' as path;
 
 export 'package:analyzer/src/dart/resolver/inheritance_manager.dart';
 export 'package:analyzer/src/dart/resolver/scope.dart';
@@ -48,6 +49,8 @@
 
   static String _TO_INT_METHOD_NAME = "toInt";
 
+  static final _testDir = '${path.separator}test${path.separator}';
+
   /**
    * The class containing the AST nodes being visited, or `null` if we are not in the scope of
    * a class.
@@ -353,7 +356,7 @@
   @override
   Object visitSimpleIdentifier(SimpleIdentifier node) {
     _checkForDeprecatedMemberUseAtIdentifier(node);
-    _checkForInvalidProtectedMemberAccess(node);
+    _checkForInvalidAccess(node);
     return super.visitSimpleIdentifier(node);
   }
 
@@ -902,11 +905,17 @@
         decl.name, [decl.name.toString()]);
   }
 
-  /**
-   * Produces a hint if the given identifier is a protected closure, field or
-   * getter/setter, method closure or invocation accessed outside a subclass.
-   */
-  void _checkForInvalidProtectedMemberAccess(SimpleIdentifier identifier) {
+  /// Produces a hint if [identifier] is accessed from an invalid location. In
+  /// particular:
+  ///
+  /// * if the given identifier is a protected closure, field or
+  ///   getter/setter, method closure or invocation accessed outside a subclass,
+  ///   or accessed outside the library wherein the identifier is declared, or
+  /// * if the given identifier is a closure, field, getter, setter, method
+  ///   closure or invocation which is annotated with `visibleForTesting`, and
+  ///   is accessed outside of the defining library, and the current library
+  ///   does not have the word 'test' in its name.
+  void _checkForInvalidAccess(SimpleIdentifier identifier) {
     if (identifier.inDeclarationContext()) {
       return;
     }
@@ -925,6 +934,21 @@
       return false;
     }
 
+    bool isVisibleForTesting(Element element) {
+      if (element == null) {
+        return false;
+      }
+      if (element.isVisibleForTesting) {
+        return true;
+      }
+      if (element is PropertyAccessorElement &&
+          element.enclosingElement is ClassElement &&
+          element.variable.isVisibleForTesting) {
+        return true;
+      }
+      return false;
+    }
+
     bool inCommentReference(SimpleIdentifier identifier) =>
         identifier.getAncestor((AstNode node) => node is CommentReference) !=
         null;
@@ -932,21 +956,38 @@
     bool inCurrentLibrary(Element element) =>
         element.library == _currentLibrary;
 
+    bool inTestDirectory(LibraryElement library) =>
+        library.definingCompilationUnit.source.fullName.contains(_testDir);
+
     Element element = identifier.bestElement;
-    if (isProtected(element) &&
-        !inCurrentLibrary(element) &&
-        !inCommentReference(identifier)) {
+    if (isProtected(element)) {
+      if (inCurrentLibrary(element) || inCommentReference(identifier)) {
+        // The access is valid; even if [element] is also marked
+        // `visibleForTesting`, the "visibilities" are unioned.
+        return;
+      }
       ClassElement definingClass = element.enclosingElement;
       ClassDeclaration accessingClass =
           identifier.getAncestor((AstNode node) => node is ClassDeclaration);
-      if (accessingClass == null ||
-          !_hasTypeOrSuperType(accessingClass.element, definingClass.type)) {
+      if (_hasTypeOrSuperType(accessingClass?.element, definingClass.type)) {
+        return;
+      } else {
         _errorReporter.reportErrorForNode(
             HintCode.INVALID_USE_OF_PROTECTED_MEMBER,
             identifier,
             [identifier.name.toString(), definingClass.name]);
       }
     }
+    if (isVisibleForTesting(element) &&
+        !inCurrentLibrary(element) &&
+        !inTestDirectory(_currentLibrary) &&
+        !inCommentReference(identifier)) {
+      Element definingClass = element.enclosingElement;
+      _errorReporter.reportErrorForNode(
+          HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER,
+          identifier,
+          [identifier.name.toString(), definingClass.name]);
+    }
   }
 
   /**
diff --git a/pkg/analyzer/lib/src/kernel/resynthesize.dart b/pkg/analyzer/lib/src/kernel/resynthesize.dart
index 0fec400..a3a6ee3 100644
--- a/pkg/analyzer/lib/src/kernel/resynthesize.dart
+++ b/pkg/analyzer/lib/src/kernel/resynthesize.dart
@@ -488,6 +488,7 @@
     if (expr is kernel.StringLiteral) {
       return AstTestFactory.string2(expr.value);
     }
+
     if (expr is kernel.StringConcatenation) {
       List<InterpolationElement> elements = expr.expressions
           .map(_build)
@@ -495,6 +496,7 @@
           .toList(growable: false);
       return AstTestFactory.string(elements);
     }
+
     if (expr is kernel.SymbolLiteral) {
       List<String> components = expr.value.split('.').toList();
       return AstTestFactory.symbolLiteral(components);
@@ -524,6 +526,20 @@
       return AstTestFactory.mapLiteral(keyword, typeArguments, entries);
     }
 
+    // Invalid annotations are represented as Let.
+    if (expr is kernel.Let) {
+      kernel.Let let = expr;
+      if (_isConstantExpressionErrorThrow(let.variable.initializer) ||
+          _isConstantExpressionErrorThrow(let.body)) {
+        throw const _CompilationErrorFound();
+      }
+    }
+
+    // Stop if there is an error.
+    if (_isConstantExpressionErrorThrow(expr)) {
+      throw const _CompilationErrorFound();
+    }
+
     if (expr is kernel.StaticGet) {
       return _buildIdentifier(expr.targetReference, isGet: true);
     }
@@ -572,6 +588,10 @@
       return AstTestFactory.binaryExpression(left, operator, right);
     }
 
+    if (expr is kernel.AsExpression && expr.isTypeError) {
+      return _build(expr.operand);
+    }
+
     if (expr is kernel.Let) {
       var body = expr.body;
       if (body is kernel.ConditionalExpression) {
@@ -595,25 +615,20 @@
     }
 
     if (expr is kernel.MethodInvocation) {
-      kernel.Member member = expr.interfaceTarget;
-      if (member is kernel.Procedure) {
-        if (member.kind == kernel.ProcedureKind.Operator) {
-          var left = _build(expr.receiver);
-          String operatorName = expr.name.name;
-          List<kernel.Expression> args = expr.arguments.positional;
-          if (args.isEmpty) {
-            if (operatorName == 'unary-') {
-              return AstTestFactory.prefixExpression(TokenType.MINUS, left);
-            }
-            if (operatorName == '~') {
-              return AstTestFactory.prefixExpression(TokenType.TILDE, left);
-            }
-          } else if (args.length == 1) {
-            var operator = _toBinaryOperatorTokenType(operatorName);
-            var right = _build(args.single);
-            return AstTestFactory.binaryExpression(left, operator, right);
-          }
+      var left = _build(expr.receiver);
+      String operatorName = expr.name.name;
+      List<kernel.Expression> args = expr.arguments.positional;
+      if (args.isEmpty) {
+        if (operatorName == 'unary-') {
+          return AstTestFactory.prefixExpression(TokenType.MINUS, left);
         }
+        if (operatorName == '~') {
+          return AstTestFactory.prefixExpression(TokenType.TILDE, left);
+        }
+      } else if (args.length == 1) {
+        var operator = _toBinaryOperatorTokenType(operatorName);
+        var right = _build(args.single);
+        return AstTestFactory.binaryExpression(left, operator, right);
       }
     }
 
@@ -660,20 +675,6 @@
       return identifier;
     }
 
-    // Invalid annotations are represented as Let.
-    if (expr is kernel.Let) {
-      kernel.Let let = expr;
-      if (_isConstantExpressionErrorThrow(let.variable.initializer) ||
-          _isConstantExpressionErrorThrow(let.body)) {
-        throw const _CompilationErrorFound();
-      }
-    }
-
-    // Stop if there is an error.
-    if (_isConstantExpressionErrorThrow(expr)) {
-      throw const _CompilationErrorFound();
-    }
-
     // TODO(scheglov): complete getExpression
     throw new UnimplementedError('kernel: (${expr.runtimeType}) $expr');
   }
diff --git a/pkg/analyzer/lib/src/task/options.dart b/pkg/analyzer/lib/src/task/options.dart
index 6d92337..b38c3ad 100644
--- a/pkg/analyzer/lib/src/task/options.dart
+++ b/pkg/analyzer/lib/src/task/options.dart
@@ -281,7 +281,7 @@
       initialIncludeSpan ??= span;
       String includeUri = span.text;
       Source includedSource = sourceFactory.resolveUri(source, includeUri);
-      if (!includedSource.exists()) {
+      if (includedSource == null || !includedSource.exists()) {
         errors.add(new AnalysisError(
             initialSource,
             initialIncludeSpan.start.column + 1,
diff --git a/pkg/analyzer/test/generated/checked_mode_compile_time_error_code_kernel_test.dart b/pkg/analyzer/test/generated/checked_mode_compile_time_error_code_kernel_test.dart
index 193fcce..4f7a9c2 100644
--- a/pkg/analyzer/test/generated/checked_mode_compile_time_error_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/checked_mode_compile_time_error_code_kernel_test.dart
@@ -17,6 +17,232 @@
     extends CheckedModeCompileTimeErrorCodeTest_Driver {
   @override
   bool get enableKernelDriver => true;
+
+  @override
+  bool get previewDart2 => true;
+
+  @failingTest
+  @override
+  test_fieldFormalParameterAssignableToField_fieldType_unresolved_null() async {
+    // Expected 1 errors of type StaticWarningCode.UNDEFINED_CLASS, found 0
+    await super
+        .test_fieldFormalParameterAssignableToField_fieldType_unresolved_null();
+  }
+
+  @failingTest
+  @override
+  test_fieldFormalParameterAssignableToField_typedef() async {
+    // Expected 1 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0
+    await super.test_fieldFormalParameterAssignableToField_typedef();
+  }
+
+  @failingTest
+  @override
+  test_fieldFormalParameterNotAssignableToField() async {
+    // Expected 1 errors of type CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH, found 0;
+    //          1 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0
+    await super.test_fieldFormalParameterNotAssignableToField();
+  }
+
+  @failingTest
+  @override
+  test_fieldFormalParameterNotAssignableToField_extends() async {
+    // Expected 1 errors of type CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH, found 0
+    await super.test_fieldFormalParameterNotAssignableToField_extends();
+  }
+
+  @failingTest
+  @override
+  test_fieldFormalParameterNotAssignableToField_fieldType() async {
+    // Expected 1 errors of type CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH, found 0;
+    //          1 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0
+    await super.test_fieldFormalParameterNotAssignableToField_fieldType();
+  }
+
+  @failingTest
+  @override
+  test_fieldFormalParameterNotAssignableToField_fieldType_unresolved() async {
+    // Expected 1 errors of type CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH, found 0;
+    //          1 errors of type StaticWarningCode.UNDEFINED_CLASS, found 0
+    await super
+        .test_fieldFormalParameterNotAssignableToField_fieldType_unresolved();
+  }
+
+  @failingTest
+  @override
+  test_fieldFormalParameterNotAssignableToField_implements() async {
+    // Expected 1 errors of type CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH, found 0
+    await super.test_fieldFormalParameterNotAssignableToField_implements();
+  }
+
+  @failingTest
+  @override
+  test_fieldFormalParameterNotAssignableToField_list() async {
+    // Expected 1 errors of type CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH, found 0
+    await super.test_fieldFormalParameterNotAssignableToField_list();
+  }
+
+  @failingTest
+  @override
+  test_fieldFormalParameterNotAssignableToField_map_keyMismatch() async {
+    // Expected 1 errors of type CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH, found 0
+    await super.test_fieldFormalParameterNotAssignableToField_map_keyMismatch();
+  }
+
+  @failingTest
+  @override
+  test_fieldFormalParameterNotAssignableToField_map_valueMismatch() async {
+    // Expected 1 errors of type CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH, found 0
+    await super
+        .test_fieldFormalParameterNotAssignableToField_map_valueMismatch();
+  }
+
+  @failingTest
+  @override
+  test_fieldFormalParameterNotAssignableToField_optional() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t1 = "foo" in let ...
+    await super.test_fieldFormalParameterNotAssignableToField_optional();
+  }
+
+  @failingTest
+  @override
+  test_fieldFormalParameterNotAssignableToField_typedef() async {
+    // Expected 1 errors of type CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH, found 0;
+    //          1 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0
+    await super.test_fieldFormalParameterNotAssignableToField_typedef();
+  }
+
+  @failingTest
+  @override
+  test_fieldInitializerNotAssignable() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t2 = "" in let ...
+    await super.test_fieldInitializerNotAssignable();
+  }
+
+  @failingTest
+  @override
+  test_fieldTypeMismatch() async {
+    // UnimplementedError: kernel: (AsExpression) x as{TypeError} dart.core::int
+    await super.test_fieldTypeMismatch();
+  }
+
+  @failingTest
+  @override
+  test_fieldTypeMismatch_generic() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t3 = #lib1::y in let ...
+    await super.test_fieldTypeMismatch_generic();
+  }
+
+  @failingTest
+  @override
+  test_fieldTypeMismatch_unresolved() async {
+    // UnimplementedError: kernel: (AsExpression) x as{TypeError} invalid-type
+    await super.test_fieldTypeMismatch_unresolved();
+  }
+
+  @failingTest
+  @override
+  test_fieldTypeOk_generic() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t4 = #lib2::y in let ...
+    await super.test_fieldTypeOk_generic();
+  }
+
+  @failingTest
+  @override
+  test_fieldTypeOk_unresolved_null() async {
+    // UnimplementedError: kernel: (AsExpression) x as{TypeError} invalid-type
+    await super.test_fieldTypeOk_unresolved_null();
+  }
+
+  @failingTest
+  @override
+  test_listElementTypeNotAssignable() async {
+    // Expected 1 errors of type CheckedModeCompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, found 0;
+    //          1 errors of type StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, found 0
+    await super.test_listElementTypeNotAssignable();
+  }
+
+  @failingTest
+  @override
+  test_mapKeyTypeNotAssignable() async {
+    // Expected 1 errors of type CheckedModeCompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, found 0;
+    //          1 errors of type StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, found 0
+    await super.test_mapKeyTypeNotAssignable();
+  }
+
+  @failingTest
+  @override
+  test_mapValueTypeNotAssignable() async {
+    // Expected 1 errors of type CheckedModeCompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, found 0;
+    //          1 errors of type StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, found 0
+    await super.test_mapValueTypeNotAssignable();
+  }
+
+  @failingTest
+  @override
+  test_parameterAssignable_undefined_null() async {
+    // Expected 1 errors of type StaticWarningCode.UNDEFINED_CLASS, found 0
+    await super.test_parameterAssignable_undefined_null();
+  }
+
+  @failingTest
+  @override
+  test_parameterNotAssignable() async {
+    // Expected 1 errors of type CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH, found 0;
+    //          1 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0
+    await super.test_parameterNotAssignable();
+  }
+
+  @failingTest
+  @override
+  test_parameterNotAssignable_typeSubstitution() async {
+    // Expected 1 errors of type CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH, found 0;
+    //          1 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0
+    await super.test_parameterNotAssignable_typeSubstitution();
+  }
+
+  @failingTest
+  @override
+  test_parameterNotAssignable_undefined() async {
+    // Expected 1 errors of type CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH, found 0;
+    //          1 errors of type StaticWarningCode.UNDEFINED_CLASS, found 0
+    await super.test_parameterNotAssignable_undefined();
+  }
+
+  @failingTest
+  @override
+  test_redirectingConstructor_paramTypeMismatch() async {
+    // Bad state: Expected element reference for analyzer offset 33; got one for kernel offset 36
+    await super.test_redirectingConstructor_paramTypeMismatch();
+  }
+
+  @failingTest
+  @override
+  test_superConstructor_paramTypeMismatch() async {
+    // UnimplementedError: kernel: (AsExpression) d as{TypeError} dart.core::double
+    await super.test_superConstructor_paramTypeMismatch();
+  }
+
+  @failingTest
+  @override
+  test_topLevelVarAssignable_undefined_null() async {
+    // Expected 1 errors of type StaticWarningCode.UNDEFINED_CLASS, found 0
+    await super.test_topLevelVarAssignable_undefined_null();
+  }
+
+  @failingTest
+  @override
+  test_topLevelVarNotAssignable() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t5 = "foo" in let ...
+    await super.test_topLevelVarNotAssignable();
+  }
+
+  @failingTest
+  @override
+  test_topLevelVarNotAssignable_undefined() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t6 = "foo" in let ...
+    await super.test_topLevelVarNotAssignable_undefined();
+  }
 }
 
 /// Tests marked with this annotation fail because of a Fasta problem.
diff --git a/pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart b/pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart
index 0b6dc66..dcd7eb6 100644
--- a/pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart
@@ -22,6 +22,86 @@
   bool get enableKernelDriver => true;
 
   @override
+  bool get previewDart2 => true;
+
+  @override
+  @failingTest
+  test_accessPrivateEnumField() async {
+    // 'package:analyzer/src/dart/analysis/library_analyzer.dart': Failed assertion: line 1082 pos 18: 'memberElement != null': is not true.
+    await super.test_accessPrivateEnumField();
+  }
+
+  @override
+  @failingTest
+  test_ambiguousExport() async {
+    // Expected 1 errors of type CompileTimeErrorCode.AMBIGUOUS_EXPORT, found 0
+    await super.test_ambiguousExport();
+  }
+
+  @override
+  @failingTest
+  test_annotationWithNotClass() async {
+    // Bad state: No reference information for property at 117
+    await super.test_annotationWithNotClass();
+  }
+
+  @override
+  @failingTest
+  test_annotationWithNotClass_prefixed() async {
+    // Bad state: No reference information for pref at 36
+    await super.test_annotationWithNotClass_prefixed();
+  }
+
+  @override
+  @failingTest
+  test_async_used_as_identifier_in_annotation() async {
+    // 'package:analyzer/src/dart/constant/utilities.dart': Failed assertion: line 184 pos 14: 'node.parent is PartOfDirective ||
+    await super.test_async_used_as_identifier_in_annotation();
+  }
+
+  @override
+  @failingTest
+  test_async_used_as_identifier_in_break_statement() async {
+    // Bad state: No type information for true at 21
+    await super.test_async_used_as_identifier_in_break_statement();
+  }
+
+  @override
+  @failingTest
+  test_async_used_as_identifier_in_continue_statement() async {
+    // Bad state: No reference information for async at 42
+    await super.test_async_used_as_identifier_in_continue_statement();
+  }
+
+  @override
+  @failingTest
+  test_async_used_as_identifier_in_prefix() async {
+    // 'package:analyzer/src/fasta/resolution_applier.dart': Failed assertion: line 632 pos 14: 'constructorName.name == null': is not true.
+    await super.test_async_used_as_identifier_in_prefix();
+  }
+
+  @override
+  @failingTest
+  test_async_used_as_identifier_in_statement_label() async {
+    // Bad state: Expected element reference for analyzer offset 14; got one for kernel offset 21
+    await super.test_async_used_as_identifier_in_statement_label();
+  }
+
+  @override
+  @failingTest
+  test_async_used_as_identifier_in_suffix() async {
+    // Bad state: Expected element reference for analyzer offset 46; got one for kernel offset 48
+    await super.test_async_used_as_identifier_in_suffix();
+  }
+
+  @override
+  @failingTest
+  test_async_used_as_identifier_in_switch_label() async {
+    // Bad state: No reference information for async at 31
+    await super.test_async_used_as_identifier_in_switch_label();
+  }
+
+  @override
   @failingTest
   // This test fails because the kernel driver element model produces a
   // different element model result than the regular parser produces. Once these
@@ -33,12 +113,588 @@
 
   @override
   @failingTest
+  test_builtInIdentifierAsMixinName_classTypeAlias() async {
+    // Expected 1 errors of type CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, found 0
+    await super.test_builtInIdentifierAsMixinName_classTypeAlias();
+  }
+
+  @override
+  @failingTest
+  test_builtInIdentifierAsPrefixName() async {
+    // Expected 1 errors of type CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_PREFIX_NAME, found 0
+    await super.test_builtInIdentifierAsPrefixName();
+  }
+
+  @override
+  @failingTest
+  test_builtInIdentifierAsType_formalParameter_field() async {
+    // Expected 1 errors of type CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE, found 0;
+    //          0 errors of type ParserErrorCode.EXTRANEOUS_MODIFIER, found 1 (23)
+    await super.test_builtInIdentifierAsType_formalParameter_field();
+  }
+
+  @override
+  @failingTest
+  test_builtInIdentifierAsType_formalParameter_simple() async {
+    // Expected 1 errors of type CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE, found 0;
+    //          0 errors of type ParserErrorCode.EXTRANEOUS_MODIFIER, found 1 (2)
+    await super.test_builtInIdentifierAsType_formalParameter_simple();
+  }
+
+  @override
+  @failingTest
+  test_builtInIdentifierAsType_variableDeclaration() async {
+    // Bad state: No reference information for typedef at 8
+    await super.test_builtInIdentifierAsType_variableDeclaration();
+  }
+
+  @override
+  @failingTest
+  test_builtInIdentifierAsTypedefName_functionTypeAlias() async {
+    // Expected 1 errors of type CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, found 0
+    await super.test_builtInIdentifierAsTypedefName_functionTypeAlias();
+  }
+
+  @override
+  @failingTest
+  test_builtInIdentifierAsTypeName() async {
+    // Expected 1 errors of type CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, found 0
+    await super.test_builtInIdentifierAsTypeName();
+  }
+
+  @override
+  @failingTest
+  test_builtInIdentifierAsTypeParameterName() async {
+    // Expected 1 errors of type CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME, found 0
+    await super.test_builtInIdentifierAsTypeParameterName();
+  }
+
+  @override
+  @failingTest
+  test_caseExpressionTypeImplementsEquals() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS, found 0
+    await super.test_caseExpressionTypeImplementsEquals();
+  }
+
+  @override
+  @failingTest
+  test_conflictingConstructorNameAndMember_field() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_NAME_AND_FIELD, found 0
+    await super.test_conflictingConstructorNameAndMember_field();
+  }
+
+  @override
+  @failingTest
+  test_conflictingConstructorNameAndMember_getter() async {
+    // Bad state: No type information for 42 at 25
+    await super.test_conflictingConstructorNameAndMember_getter();
+  }
+
+  @override
+  @failingTest
+  test_conflictingConstructorNameAndMember_method() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_NAME_AND_METHOD, found 0
+    await super.test_conflictingConstructorNameAndMember_method();
+  }
+
+  @override
+  @failingTest
+  test_conflictingGetterAndMethod_field_method() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONFLICTING_GETTER_AND_METHOD, found 0
+    await super.test_conflictingGetterAndMethod_field_method();
+  }
+
+  @override
+  @failingTest
+  test_conflictingGetterAndMethod_getter_method() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONFLICTING_GETTER_AND_METHOD, found 0
+    await super.test_conflictingGetterAndMethod_getter_method();
+  }
+
+  @override
+  @failingTest
+  test_conflictingGetterAndMethod_method_field() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONFLICTING_METHOD_AND_GETTER, found 0
+    await super.test_conflictingGetterAndMethod_method_field();
+  }
+
+  @override
+  @failingTest
+  test_conflictingGetterAndMethod_method_getter() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONFLICTING_METHOD_AND_GETTER, found 0
+    await super.test_conflictingGetterAndMethod_method_getter();
+  }
+
+  @override
+  @failingTest
+  test_conflictingTypeVariableAndClass() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_CLASS, found 0
+    await super.test_conflictingTypeVariableAndClass();
+  }
+
+  @override
+  @failingTest
+  test_conflictingTypeVariableAndMember_field() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER, found 0
+    await super.test_conflictingTypeVariableAndMember_field();
+  }
+
+  @override
+  @failingTest
+  test_conflictingTypeVariableAndMember_getter() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER, found 0
+    await super.test_conflictingTypeVariableAndMember_getter();
+  }
+
+  @override
+  @failingTest
+  test_conflictingTypeVariableAndMember_method() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER, found 0
+    await super.test_conflictingTypeVariableAndMember_method();
+  }
+
+  @override
+  @failingTest
+  test_conflictingTypeVariableAndMember_method_static() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER, found 0
+    await super.test_conflictingTypeVariableAndMember_method_static();
+  }
+
+  @override
+  @failingTest
+  test_conflictingTypeVariableAndMember_setter() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER, found 0
+    await super.test_conflictingTypeVariableAndMember_setter();
+  }
+
+  @override
+  @failingTest
   test_const_invalid_constructorFieldInitializer_fromLibrary() {
     return super.test_const_invalid_constructorFieldInitializer_fromLibrary();
   }
 
   @override
   @failingTest
+  test_constConstructorWithFieldInitializedByNonConst() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST, found 0;
+    //          1 errors of type CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, found 0
+    await super.test_constConstructorWithFieldInitializedByNonConst();
+  }
+
+  @override
+  @failingTest
+  test_constConstructorWithMixin() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_MIXIN, found 0
+    await super.test_constConstructorWithMixin();
+  }
+
+  @override
+  @failingTest
+  test_constConstructorWithNonConstSuper_explicit() async {
+    // UnimplementedError: For ShadowInvalidInitializer
+    await super.test_constConstructorWithNonConstSuper_explicit();
+  }
+
+  @override
+  @failingTest
+  test_constConstructorWithNonConstSuper_implicit() async {
+    // UnimplementedError: For ShadowInvalidInitializer
+    await super.test_constConstructorWithNonConstSuper_implicit();
+  }
+
+  @override
+  @failingTest
+  test_constConstructorWithNonFinalField_mixin() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_MIXIN, found 0;
+    //          1 errors of type CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD, found 0
+    await super.test_constConstructorWithNonFinalField_mixin();
+  }
+
+  @override
+  @failingTest
+  test_constConstructorWithNonFinalField_super() async {
+    // UnimplementedError: For ShadowInvalidInitializer
+    await super.test_constConstructorWithNonFinalField_super();
+  }
+
+  @override
+  @failingTest
+  test_constConstructorWithNonFinalField_this() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD, found 0
+    await super.test_constConstructorWithNonFinalField_this();
+  }
+
+  @override
+  @failingTest
+  test_constDeferredClass() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_DEFERRED_CLASS, found 0;
+    //          0 errors of type HintCode.UNUSED_IMPORT, found 1 (21)
+    await super.test_constDeferredClass();
+  }
+
+  @override
+  @failingTest
+  test_constDeferredClass_namedConstructor() async {
+    // 'package:analyzer/src/fasta/resolution_applier.dart': Failed assertion: line 632 pos 14: 'constructorName.name == null': is not true.
+    await super.test_constDeferredClass_namedConstructor();
+  }
+
+  @override
+  @failingTest
+  test_constEval_newInstance_constConstructor() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, found 0
+    await super.test_constEval_newInstance_constConstructor();
+  }
+
+  @override
+  @failingTest
+  test_constEval_nonStaticField_inGenericClass() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, found 0
+    await super.test_constEval_nonStaticField_inGenericClass();
+  }
+
+  @override
+  @failingTest
+  test_constEval_propertyExtraction_targetNotConst() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, found 0
+    await super.test_constEval_propertyExtraction_targetNotConst();
+  }
+
+  @override
+  @failingTest
+  test_constEvalThrowsException_binaryMinus_null() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t2 = null in let ...
+    await super.test_constEvalThrowsException_binaryMinus_null();
+  }
+
+  @override
+  @failingTest
+  test_constEvalThrowsException_binaryPlus_null() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t3 = null in let ...
+    await super.test_constEvalThrowsException_binaryPlus_null();
+  }
+
+  @override
+  @failingTest
+  test_constEvalThrowsException_divisionByZero() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_EVAL_THROWS_IDBZE, found 0
+    await super.test_constEvalThrowsException_divisionByZero();
+  }
+
+  @override
+  @failingTest
+  test_constEvalThrowsException_finalAlreadySet_initializer() async {
+    // Bad state: No reference information for = at 41
+    await super.test_constEvalThrowsException_finalAlreadySet_initializer();
+  }
+
+  @override
+  @failingTest
+  test_constEvalThrowsException_finalAlreadySet_initializing_formal() async {
+    // UnimplementedError: For ShadowInvalidInitializer
+    await super
+        .test_constEvalThrowsException_finalAlreadySet_initializing_formal();
+  }
+
+  @override
+  @failingTest
+  test_constEvalThrowsException_unaryBitNot_null() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t4 = null in let ...
+    await super.test_constEvalThrowsException_unaryBitNot_null();
+  }
+
+  @override
+  @failingTest
+  test_constEvalThrowsException_unaryNegated_null() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t5 = null in let ...
+    await super.test_constEvalThrowsException_unaryNegated_null();
+  }
+
+  @override
+  @failingTest
+  test_constEvalThrowsException_unaryNot_null() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, found 0
+    await super.test_constEvalThrowsException_unaryNot_null();
+  }
+
+  @override
+  @failingTest
+  test_constEvalTypeBool_binary() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t6 = "" in let ...
+    await super.test_constEvalTypeBool_binary();
+  }
+
+  @override
+  @failingTest
+  test_constEvalTypeBool_binary_leftTrue() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t7 = 0 in let ...
+    await super.test_constEvalTypeBool_binary_leftTrue();
+  }
+
+  @override
+  @failingTest
+  test_constEvalTypeBoolNumString_equal() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL_NUM_STRING, found 0
+    await super.test_constEvalTypeBoolNumString_equal();
+  }
+
+  @override
+  @failingTest
+  test_constEvalTypeBoolNumString_notEqual() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL_NUM_STRING, found 0
+    await super.test_constEvalTypeBoolNumString_notEqual();
+  }
+
+  @override
+  @failingTest
+  test_constEvalTypeInt_binary() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t8 = "" in let ...
+    await super.test_constEvalTypeInt_binary();
+  }
+
+  @override
+  @failingTest
+  test_constEvalTypeNum_binary() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t9 = "" in let ...
+    await super.test_constEvalTypeNum_binary();
+  }
+
+  @override
+  @failingTest
+  test_constFormalParameter_fieldFormalParameter() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_FORMAL_PARAMETER, found 0;
+    //          0 errors of type ParserErrorCode.EXTRANEOUS_MODIFIER, found 1 (23)
+    await super.test_constFormalParameter_fieldFormalParameter();
+  }
+
+  @override
+  @failingTest
+  test_constFormalParameter_simpleFormalParameter() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_FORMAL_PARAMETER, found 0;
+    //          0 errors of type ParserErrorCode.EXTRANEOUS_MODIFIER, found 1 (2)
+    await super.test_constFormalParameter_simpleFormalParameter();
+  }
+
+  @override
+  @failingTest
+  test_constInitializedWithNonConstValue() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, found 0
+    await super.test_constInitializedWithNonConstValue();
+  }
+
+  @override
+  @failingTest
+  test_constInitializedWithNonConstValue_finalField() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, found 0
+    await super.test_constInitializedWithNonConstValue_finalField();
+  }
+
+  @override
+  @failingTest
+  test_constInitializedWithNonConstValue_missingConstInListLiteral() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, found 0
+    await super
+        .test_constInitializedWithNonConstValue_missingConstInListLiteral();
+  }
+
+  @override
+  @failingTest
+  test_constInitializedWithNonConstValue_missingConstInMapLiteral() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, found 0
+    await super
+        .test_constInitializedWithNonConstValue_missingConstInMapLiteral();
+  }
+
+  @override
+  @failingTest
+  test_constInitializedWithNonConstValueFromDeferredClass() async {
+    // Bad state: Expected element reference for analyzer offset 58; got one for kernel offset 60
+    await super.test_constInitializedWithNonConstValueFromDeferredClass();
+  }
+
+  @override
+  @failingTest
+  test_constInitializedWithNonConstValueFromDeferredClass_nested() async {
+    // Bad state: Expected element reference for analyzer offset 58; got one for kernel offset 60
+    await super
+        .test_constInitializedWithNonConstValueFromDeferredClass_nested();
+  }
+
+  @override
+  @failingTest
+  test_constInstanceField() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_INSTANCE_FIELD, found 0
+    await super.test_constInstanceField();
+  }
+
+  @override
+  @failingTest
+  test_constMapKeyTypeImplementsEquals_direct() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS, found 0
+    await super.test_constMapKeyTypeImplementsEquals_direct();
+  }
+
+  @override
+  @failingTest
+  test_constMapKeyTypeImplementsEquals_dynamic() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS, found 0
+    await super.test_constMapKeyTypeImplementsEquals_dynamic();
+  }
+
+  @override
+  @failingTest
+  test_constMapKeyTypeImplementsEquals_factory() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS, found 0
+    await super.test_constMapKeyTypeImplementsEquals_factory();
+  }
+
+  @override
+  @failingTest
+  test_constMapKeyTypeImplementsEquals_super() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS, found 0
+    await super.test_constMapKeyTypeImplementsEquals_super();
+  }
+
+  @override
+  @failingTest
+  test_constWithInvalidTypeParameters() async {
+    // Bad state: Found 0 argument types for 1 type arguments
+    await super.test_constWithInvalidTypeParameters();
+  }
+
+  @override
+  @failingTest
+  test_constWithInvalidTypeParameters_tooFew() async {
+    // Bad state: Found 2 argument types for 1 type arguments
+    await super.test_constWithInvalidTypeParameters_tooFew();
+  }
+
+  @override
+  @failingTest
+  test_constWithInvalidTypeParameters_tooMany() async {
+    // Bad state: Found 1 argument types for 2 type arguments
+    await super.test_constWithInvalidTypeParameters_tooMany();
+  }
+
+  @override
+  @failingTest
+  test_constWithNonConst() async {
+    // Bad state: No type information for T at 52
+    await super.test_constWithNonConst();
+  }
+
+  @override
+  @failingTest
+  test_constWithNonConst_with() async {
+    // Bad state: No type information for C at 72
+    await super.test_constWithNonConst_with();
+  }
+
+  @override
+  @failingTest
+  test_constWithNonConstantArgument_annotation() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_WITH_NON_CONSTANT_ARGUMENT, found 0
+    await super.test_constWithNonConstantArgument_annotation();
+  }
+
+  @override
+  @failingTest
+  test_constWithNonConstantArgument_instanceCreation() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_WITH_NON_CONSTANT_ARGUMENT, found 0;
+    //          1 errors of type CompileTimeErrorCode.INVALID_CONSTANT, found 0
+    await super.test_constWithNonConstantArgument_instanceCreation();
+  }
+
+  @override
+  @failingTest
+  test_constWithNonType() async {
+    // Bad state: No type information for A at 28
+    await super.test_constWithNonType();
+  }
+
+  @override
+  @failingTest
+  test_constWithNonType_fromLibrary() async {
+    // Bad state: No type information for lib.A at 45
+    await super.test_constWithNonType_fromLibrary();
+  }
+
+  @override
+  @failingTest
+  test_constWithUndefinedConstructor() async {
+    // Bad state: No type information for A.noSuchConstructor at 46
+    await super.test_constWithUndefinedConstructor();
+  }
+
+  @override
+  @failingTest
+  test_constWithUndefinedConstructorDefault() async {
+    // Bad state: No type information for A at 51
+    await super.test_constWithUndefinedConstructorDefault();
+  }
+
+  @override
+  @failingTest
+  test_defaultValueInFunctionTypeAlias_new_named() async {
+    // Bad state: (GenericTypeAliasImpl) typedef F = int Function({Map<String, String> m : const {}})
+    await super.test_defaultValueInFunctionTypeAlias_new_named();
+  }
+
+  @override
+  @failingTest
+  test_defaultValueInFunctionTypeAlias_new_positional() async {
+    // Bad state: (GenericTypeAliasImpl) typedef F = int Function([Map<String, String> m = const {}])
+    await super.test_defaultValueInFunctionTypeAlias_new_positional();
+  }
+
+  @override
+  @failingTest
+  test_defaultValueInFunctionTypeAlias_old_named() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE_ALIAS, found 0;
+    //          0 errors of type ParserErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE, found 1 (13)
+    await super.test_defaultValueInFunctionTypeAlias_old_named();
+  }
+
+  @override
+  @failingTest
+  test_defaultValueInFunctionTypeAlias_old_positional() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE_ALIAS, found 0;
+    //          0 errors of type ParserErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE, found 1 (13)
+    await super.test_defaultValueInFunctionTypeAlias_old_positional();
+  }
+
+  @override
+  @failingTest
+  test_defaultValueInFunctionTypedParameter_named() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPED_PARAMETER, found 0;
+    //          0 errors of type ParserErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE, found 1 (6)
+    await super.test_defaultValueInFunctionTypedParameter_named();
+  }
+
+  @override
+  @failingTest
+  test_defaultValueInFunctionTypedParameter_optional() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPED_PARAMETER, found 0;
+    //          0 errors of type ParserErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE, found 1 (7)
+    await super.test_defaultValueInFunctionTypedParameter_optional();
+  }
+
+  @override
+  @failingTest
+  test_defaultValueInRedirectingFactoryConstructor() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DEFAULT_VALUE_IN_REDIRECTING_FACTORY_CONSTRUCTOR, found 0
+    await super.test_defaultValueInRedirectingFactoryConstructor();
+  }
+
+  @override
+  @failingTest
+  test_deferredImportWithInvalidUri() async {
+    // Bad state: No reference information for p at 49
+    await super.test_deferredImportWithInvalidUri();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/30857')
   test_duplicateConstructorName_named() async {
     return super.test_duplicateConstructorName_named();
@@ -60,6 +716,13 @@
 
   @override
   @failingTest
+  test_duplicateDefinition_catch() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DUPLICATE_DEFINITION, found 0
+    await super.test_duplicateDefinition_catch();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/30857')
   test_duplicateDefinition_classMembers_fields() async {
     return super.test_duplicateDefinition_classMembers_fields();
@@ -88,6 +751,138 @@
 
   @override
   @failingTest
+  test_duplicateDefinition_locals_inCase() async {
+    // Bad state: No type information for a at 58
+    await super.test_duplicateDefinition_locals_inCase();
+  }
+
+  @override
+  @failingTest
+  test_duplicateDefinition_locals_inFunctionBlock() async {
+    // Bad state: No declaration information for m(a) {} at 24
+    await super.test_duplicateDefinition_locals_inFunctionBlock();
+  }
+
+  @override
+  @failingTest
+  test_duplicateDefinition_locals_inIf() async {
+    // Bad state: No type information for a at 49
+    await super.test_duplicateDefinition_locals_inIf();
+  }
+
+  @override
+  @failingTest
+  test_duplicateDefinition_locals_inMethodBlock() async {
+    // Bad state: No type information for a at 37
+    await super.test_duplicateDefinition_locals_inMethodBlock();
+  }
+
+  @override
+  @failingTest
+  test_duplicateDefinition_parameters_inConstructor() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DUPLICATE_DEFINITION, found 0
+    await super.test_duplicateDefinition_parameters_inConstructor();
+  }
+
+  @override
+  @failingTest
+  test_duplicateDefinition_parameters_inFunctionTypeAlias() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DUPLICATE_DEFINITION, found 0
+    await super.test_duplicateDefinition_parameters_inFunctionTypeAlias();
+  }
+
+  @override
+  @failingTest
+  test_duplicateDefinition_parameters_inLocalFunction() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DUPLICATE_DEFINITION, found 0
+    await super.test_duplicateDefinition_parameters_inLocalFunction();
+  }
+
+  @override
+  @failingTest
+  test_duplicateDefinition_parameters_inMethod() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DUPLICATE_DEFINITION, found 0
+    await super.test_duplicateDefinition_parameters_inMethod();
+  }
+
+  @override
+  @failingTest
+  test_duplicateDefinition_parameters_inTopLevelFunction() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DUPLICATE_DEFINITION, found 0
+    await super.test_duplicateDefinition_parameters_inTopLevelFunction();
+  }
+
+  @override
+  @failingTest
+  test_duplicateDefinition_typeParameters() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DUPLICATE_DEFINITION, found 0
+    await super.test_duplicateDefinition_typeParameters();
+  }
+
+  @override
+  @failingTest
+  test_duplicateDefinitionInheritance_instanceGetter_staticGetter() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE, found 0
+    await super
+        .test_duplicateDefinitionInheritance_instanceGetter_staticGetter();
+  }
+
+  @override
+  @failingTest
+  test_duplicateDefinitionInheritance_instanceGetterAbstract_staticGetter() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE, found 0
+    await super
+        .test_duplicateDefinitionInheritance_instanceGetterAbstract_staticGetter();
+  }
+
+  @override
+  @failingTest
+  test_duplicateDefinitionInheritance_instanceMethod_staticMethod() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE, found 0
+    await super
+        .test_duplicateDefinitionInheritance_instanceMethod_staticMethod();
+  }
+
+  @override
+  @failingTest
+  test_duplicateDefinitionInheritance_instanceMethodAbstract_staticMethod() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE, found 0
+    await super
+        .test_duplicateDefinitionInheritance_instanceMethodAbstract_staticMethod();
+  }
+
+  @override
+  @failingTest
+  test_duplicateDefinitionInheritance_instanceSetter_staticSetter() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE, found 0
+    await super
+        .test_duplicateDefinitionInheritance_instanceSetter_staticSetter();
+  }
+
+  @override
+  @failingTest
+  test_duplicateDefinitionInheritance_instanceSetterAbstract_staticSetter() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE, found 0
+    await super
+        .test_duplicateDefinitionInheritance_instanceSetterAbstract_staticSetter();
+  }
+
+  @override
+  @failingTest
+  test_duplicateNamedArgument() async {
+    // Bad state: No type information for 1 at 29
+    await super.test_duplicateNamedArgument();
+  }
+
+  @override
+  @failingTest
+  test_exportInternalLibrary() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXPORT_INTERNAL_LIBRARY, found 0
+    await super.test_exportInternalLibrary();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/30960')
   test_exportOfNonLibrary() async {
     return super.test_exportOfNonLibrary();
@@ -95,6 +890,224 @@
 
   @override
   @failingTest
+  test_extendsDeferredClass() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_DEFERRED_CLASS, found 0;
+    //          0 errors of type HintCode.UNUSED_IMPORT, found 1 (21)
+    await super.test_extendsDeferredClass();
+  }
+
+  @override
+  @failingTest
+  test_extendsDeferredClass_classTypeAlias() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_DEFERRED_CLASS, found 0;
+    //          0 errors of type HintCode.UNUSED_IMPORT, found 1 (21)
+    await super.test_extendsDeferredClass_classTypeAlias();
+  }
+
+  @override
+  @failingTest
+  test_extendsDisallowedClass_class_bool() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, found 0;
+    //          1 errors of type CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT, found 0
+    await super.test_extendsDisallowedClass_class_bool();
+  }
+
+  @override
+  @failingTest
+  test_extendsDisallowedClass_class_double() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, found 0
+    await super.test_extendsDisallowedClass_class_double();
+  }
+
+  @override
+  @failingTest
+  test_extendsDisallowedClass_class_int() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, found 0;
+    //          1 errors of type CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT, found 0
+    await super.test_extendsDisallowedClass_class_int();
+  }
+
+  @override
+  @failingTest
+  test_extendsDisallowedClass_class_Null() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, found 0;
+    //          1 errors of type CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT, found 0
+    await super.test_extendsDisallowedClass_class_Null();
+  }
+
+  @override
+  @failingTest
+  test_extendsDisallowedClass_class_num() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, found 0
+    await super.test_extendsDisallowedClass_class_num();
+  }
+
+  @override
+  @failingTest
+  test_extendsDisallowedClass_class_String() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, found 0;
+    //          1 errors of type CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT, found 0
+    await super.test_extendsDisallowedClass_class_String();
+  }
+
+  @override
+  @failingTest
+  test_extendsDisallowedClass_classTypeAlias_bool() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, found 0
+    await super.test_extendsDisallowedClass_classTypeAlias_bool();
+  }
+
+  @override
+  @failingTest
+  test_extendsDisallowedClass_classTypeAlias_double() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, found 0
+    await super.test_extendsDisallowedClass_classTypeAlias_double();
+  }
+
+  @override
+  @failingTest
+  test_extendsDisallowedClass_classTypeAlias_int() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, found 0
+    await super.test_extendsDisallowedClass_classTypeAlias_int();
+  }
+
+  @override
+  @failingTest
+  test_extendsDisallowedClass_classTypeAlias_Null() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, found 0
+    await super.test_extendsDisallowedClass_classTypeAlias_Null();
+  }
+
+  @override
+  @failingTest
+  test_extendsDisallowedClass_classTypeAlias_num() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, found 0
+    await super.test_extendsDisallowedClass_classTypeAlias_num();
+  }
+
+  @override
+  @failingTest
+  test_extendsDisallowedClass_classTypeAlias_String() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, found 0
+    await super.test_extendsDisallowedClass_classTypeAlias_String();
+  }
+
+  @override
+  @failingTest
+  test_extendsEnum() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_ENUM, found 0
+    await super.test_extendsEnum();
+  }
+
+  @override
+  @failingTest
+  test_extendsNonClass_class() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_NON_CLASS, found 0
+    await super.test_extendsNonClass_class();
+  }
+
+  @override
+  @failingTest
+  test_extendsNonClass_dynamic() async {
+    // Expected 1 errors of type CompileTimeErrorCode.EXTENDS_NON_CLASS, found 0
+    await super.test_extendsNonClass_dynamic();
+  }
+
+  @override
+  @failingTest
+  test_extraPositionalArguments_const() async {
+    // Bad state: No type information for A at 42
+    await super.test_extraPositionalArguments_const();
+  }
+
+  @override
+  @failingTest
+  test_extraPositionalArguments_const_super() async {
+    // Bad state: No type information for 0 at 65
+    await super.test_extraPositionalArguments_const_super();
+  }
+
+  @override
+  @failingTest
+  test_extraPositionalArgumentsCouldBeNamed_const() async {
+    // Bad state: No type information for A at 49
+    await super.test_extraPositionalArgumentsCouldBeNamed_const();
+  }
+
+  @override
+  @failingTest
+  test_extraPositionalArgumentsCouldBeNamed_const_super() async {
+    // Bad state: No type information for 0 at 72
+    await super.test_extraPositionalArgumentsCouldBeNamed_const_super();
+  }
+
+  @override
+  @failingTest
+  test_fieldFormalParameter_assignedInInitializer() async {
+    // Bad state: No reference information for = at 35
+    await super.test_fieldFormalParameter_assignedInInitializer();
+  }
+
+  @override
+  @failingTest
+  test_fieldInitializedByMultipleInitializers() async {
+    // Bad state: No reference information for = at 36
+    await super.test_fieldInitializedByMultipleInitializers();
+  }
+
+  @override
+  @failingTest
+  test_fieldInitializedByMultipleInitializers_multipleInits() async {
+    // Bad state: No reference information for = at 36
+    await super.test_fieldInitializedByMultipleInitializers_multipleInits();
+  }
+
+  @override
+  @failingTest
+  test_fieldInitializedByMultipleInitializers_multipleNames() async {
+    // Bad state: Expected element reference for analyzer offset 45; got one for kernel offset 52
+    await super.test_fieldInitializedByMultipleInitializers_multipleNames();
+  }
+
+  @override
+  @failingTest
+  test_fieldInitializedInParameterAndInitializer() async {
+    // Bad state: No reference information for = at 35
+    await super.test_fieldInitializedInParameterAndInitializer();
+  }
+
+  @override
+  @failingTest
+  test_fieldInitializerFactoryConstructor() async {
+    // Expected 1 errors of type CompileTimeErrorCode.FIELD_INITIALIZER_FACTORY_CONSTRUCTOR, found 0
+    await super.test_fieldInitializerFactoryConstructor();
+  }
+
+  @override
+  @failingTest
+  test_fieldInitializerOutsideConstructor() async {
+    // Expected 1 errors of type ParserErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, found 0;
+    //          1 errors of type CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, found 0
+    await super.test_fieldInitializerOutsideConstructor();
+  }
+
+  @override
+  @failingTest
+  test_fieldInitializerOutsideConstructor_defaultParameter() async {
+    // Expected 1 errors of type CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, found 0
+    await super.test_fieldInitializerOutsideConstructor_defaultParameter();
+  }
+
+  @override
+  @failingTest
+  test_fieldInitializerOutsideConstructor_inFunctionTypeParameter() async {
+    // Expected 1 errors of type CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, found 0
+    await super
+        .test_fieldInitializerOutsideConstructor_inFunctionTypeParameter();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/30982')
   test_fieldInitializerRedirectingConstructor_afterRedirection() async {
     return super.test_fieldInitializerRedirectingConstructor_afterRedirection();
@@ -117,6 +1130,73 @@
 
   @override
   @failingTest
+  test_finalInitializedMultipleTimes_initializers() async {
+    // Bad state: No reference information for = at 38
+    await super.test_finalInitializedMultipleTimes_initializers();
+  }
+
+  @override
+  @failingTest
+  test_finalInitializedMultipleTimes_initializingFormal_initializer() async {
+    // Bad state: No reference information for = at 37
+    await super
+        .test_finalInitializedMultipleTimes_initializingFormal_initializer();
+  }
+
+  @override
+  @failingTest
+  test_finalInitializedMultipleTimes_initializingFormals() async {
+    // Expected 1 errors of type CompileTimeErrorCode.DUPLICATE_DEFINITION, found 0;
+    //          1 errors of type CompileTimeErrorCode.FINAL_INITIALIZED_MULTIPLE_TIMES, found 0
+    await super.test_finalInitializedMultipleTimes_initializingFormals();
+  }
+
+  @override
+  @failingTest
+  test_finalNotInitialized_instanceField_const_static() async {
+    // Bad state: Some types were not consumed, starting at offset 26
+    await super.test_finalNotInitialized_instanceField_const_static();
+  }
+
+  @override
+  @failingTest
+  test_finalNotInitialized_library_const() async {
+    // Bad state: Some types were not consumed, starting at offset 7
+    await super.test_finalNotInitialized_library_const();
+  }
+
+  @override
+  @failingTest
+  test_finalNotInitialized_local_const() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_NOT_INITIALIZED, found 0
+    await super.test_finalNotInitialized_local_const();
+  }
+
+  @override
+  @failingTest
+  test_fromEnvironment_bool_badArgs() async {
+    // Expected 2 errors of type CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, found 0;
+    //          2 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0
+    await super.test_fromEnvironment_bool_badArgs();
+  }
+
+  @override
+  @failingTest
+  test_fromEnvironment_bool_badDefault_whenDefined() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, found 0;
+    //          1 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0
+    await super.test_fromEnvironment_bool_badDefault_whenDefined();
+  }
+
+  @override
+  @failingTest
+  test_genericFunctionTypedParameter() async {
+    // Expected 1 errors of type CompileTimeErrorCode.GENERIC_FUNCTION_TYPED_PARAM_UNSUPPORTED, found 0
+    await super.test_genericFunctionTypedParameter();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/30857')
   test_getterAndMethodWithSameName() async {
     return super.test_getterAndMethodWithSameName();
@@ -124,6 +1204,241 @@
 
   @override
   @failingTest
+  test_implementsDeferredClass() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS, found 0;
+    //          0 errors of type HintCode.UNUSED_IMPORT, found 1 (21)
+    await super.test_implementsDeferredClass();
+  }
+
+  @override
+  @failingTest
+  test_implementsDeferredClass_classTypeAlias() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS, found 0;
+    //          0 errors of type HintCode.UNUSED_IMPORT, found 1 (21)
+    await super.test_implementsDeferredClass_classTypeAlias();
+  }
+
+  @override
+  @failingTest
+  test_implementsDisallowedClass_class_bool() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS, found 0
+    await super.test_implementsDisallowedClass_class_bool();
+  }
+
+  @override
+  @failingTest
+  test_implementsDisallowedClass_class_double() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS, found 0
+    await super.test_implementsDisallowedClass_class_double();
+  }
+
+  @override
+  @failingTest
+  test_implementsDisallowedClass_class_int() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS, found 0
+    await super.test_implementsDisallowedClass_class_int();
+  }
+
+  @override
+  @failingTest
+  test_implementsDisallowedClass_class_Null() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS, found 0
+    await super.test_implementsDisallowedClass_class_Null();
+  }
+
+  @override
+  @failingTest
+  test_implementsDisallowedClass_class_num() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS, found 0
+    await super.test_implementsDisallowedClass_class_num();
+  }
+
+  @override
+  @failingTest
+  test_implementsDisallowedClass_class_String() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS, found 0
+    await super.test_implementsDisallowedClass_class_String();
+  }
+
+  @override
+  @failingTest
+  test_implementsDisallowedClass_class_String_num() async {
+    // Expected 2 errors of type CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS, found 0
+    await super.test_implementsDisallowedClass_class_String_num();
+  }
+
+  @override
+  @failingTest
+  test_implementsDisallowedClass_classTypeAlias_bool() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS, found 0
+    await super.test_implementsDisallowedClass_classTypeAlias_bool();
+  }
+
+  @override
+  @failingTest
+  test_implementsDisallowedClass_classTypeAlias_double() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS, found 0
+    await super.test_implementsDisallowedClass_classTypeAlias_double();
+  }
+
+  @override
+  @failingTest
+  test_implementsDisallowedClass_classTypeAlias_int() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS, found 0
+    await super.test_implementsDisallowedClass_classTypeAlias_int();
+  }
+
+  @override
+  @failingTest
+  test_implementsDisallowedClass_classTypeAlias_Null() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS, found 0
+    await super.test_implementsDisallowedClass_classTypeAlias_Null();
+  }
+
+  @override
+  @failingTest
+  test_implementsDisallowedClass_classTypeAlias_num() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS, found 0
+    await super.test_implementsDisallowedClass_classTypeAlias_num();
+  }
+
+  @override
+  @failingTest
+  test_implementsDisallowedClass_classTypeAlias_String() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS, found 0
+    await super.test_implementsDisallowedClass_classTypeAlias_String();
+  }
+
+  @override
+  @failingTest
+  test_implementsDisallowedClass_classTypeAlias_String_num() async {
+    // Expected 2 errors of type CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS, found 0
+    await super.test_implementsDisallowedClass_classTypeAlias_String_num();
+  }
+
+  @override
+  @failingTest
+  test_implementsDynamic() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_implementsDynamic();
+  }
+
+  @override
+  @failingTest
+  test_implementsEnum() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_implementsEnum();
+  }
+
+  @override
+  @failingTest
+  test_implementsNonClass_class() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_implementsNonClass_class();
+  }
+
+  @override
+  @failingTest
+  test_implementsNonClass_typeAlias() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_implementsNonClass_typeAlias();
+  }
+
+  @override
+  @failingTest
+  test_implementsRepeated() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_REPEATED, found 0
+    await super.test_implementsRepeated();
+  }
+
+  @override
+  @failingTest
+  test_implementsRepeated_3times() async {
+    // Expected 3 errors of type CompileTimeErrorCode.IMPLEMENTS_REPEATED, found 0
+    await super.test_implementsRepeated_3times();
+  }
+
+  @override
+  @failingTest
+  test_implementsSuperClass() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS, found 0
+    await super.test_implementsSuperClass();
+  }
+
+  @override
+  @failingTest
+  test_implementsSuperClass_Object() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS, found 0
+    await super.test_implementsSuperClass_Object();
+  }
+
+  @override
+  @failingTest
+  test_implementsSuperClass_Object_typeAlias() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS, found 0
+    await super.test_implementsSuperClass_Object_typeAlias();
+  }
+
+  @override
+  @failingTest
+  test_implementsSuperClass_typeAlias() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS, found 0
+    await super.test_implementsSuperClass_typeAlias();
+  }
+
+  @override
+  @failingTest
+  test_implicitThisReferenceInInitializer_field() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER, found 0
+    await super.test_implicitThisReferenceInInitializer_field();
+  }
+
+  @override
+  @failingTest
+  test_implicitThisReferenceInInitializer_field2() async {
+    // Bad state: No reference information for x at 37
+    await super.test_implicitThisReferenceInInitializer_field2();
+  }
+
+  @override
+  @failingTest
+  test_implicitThisReferenceInInitializer_invocation() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER, found 0
+    await super.test_implicitThisReferenceInInitializer_invocation();
+  }
+
+  @override
+  @failingTest
+  test_implicitThisReferenceInInitializer_invocationInStatic() async {
+    // Bad state: No reference information for m at 27
+    await super.test_implicitThisReferenceInInitializer_invocationInStatic();
+  }
+
+  @override
+  @failingTest
+  test_implicitThisReferenceInInitializer_redirectingConstructorInvocation() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER, found 0
+    await super
+        .test_implicitThisReferenceInInitializer_redirectingConstructorInvocation();
+  }
+
+  @override
+  @failingTest
+  test_implicitThisReferenceInInitializer_superConstructorInvocation() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER, found 0
+    await super
+        .test_implicitThisReferenceInInitializer_superConstructorInvocation();
+  }
+
+  @override
+  @failingTest
+  test_importInternalLibrary() async {
+    // Expected 1 errors of type CompileTimeErrorCode.IMPORT_INTERNAL_LIBRARY, found 0
+    await super.test_importInternalLibrary();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/30959')
   test_importOfNonLibrary() async {
     return super.test_importOfNonLibrary();
@@ -131,6 +1446,154 @@
 
   @override
   @failingTest
+  test_inconsistentCaseExpressionTypes() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INCONSISTENT_CASE_EXPRESSION_TYPES, found 0
+    await super.test_inconsistentCaseExpressionTypes();
+  }
+
+  @override
+  @failingTest
+  test_inconsistentCaseExpressionTypes_dynamic() async {
+    // Expected 2 errors of type CompileTimeErrorCode.INCONSISTENT_CASE_EXPRESSION_TYPES, found 0
+    await super.test_inconsistentCaseExpressionTypes_dynamic();
+  }
+
+  @override
+  @failingTest
+  test_inconsistentCaseExpressionTypes_repeated() async {
+    // Expected 2 errors of type CompileTimeErrorCode.INCONSISTENT_CASE_EXPRESSION_TYPES, found 0
+    await super.test_inconsistentCaseExpressionTypes_repeated();
+  }
+
+  @override
+  @failingTest
+  test_initializerForNonExistent_const() async {
+    // Bad state: No reference information for = at 26
+    await super.test_initializerForNonExistent_const();
+  }
+
+  @override
+  @failingTest
+  test_initializerForNonExistent_initializer() async {
+    // Bad state: No reference information for = at 20
+    await super.test_initializerForNonExistent_initializer();
+  }
+
+  @override
+  @failingTest
+  test_initializerForStaticField() async {
+    // Bad state: No reference information for = at 36
+    await super.test_initializerForStaticField();
+  }
+
+  @override
+  @failingTest
+  test_initializingFormalForNonExistentField() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD, found 0
+    await super.test_initializingFormalForNonExistentField();
+  }
+
+  @override
+  @failingTest
+  test_initializingFormalForNonExistentField_notInEnclosingClass() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD, found 0
+    await super
+        .test_initializingFormalForNonExistentField_notInEnclosingClass();
+  }
+
+  @override
+  @failingTest
+  test_initializingFormalForNonExistentField_optional() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD, found 0
+    await super.test_initializingFormalForNonExistentField_optional();
+  }
+
+  @override
+  @failingTest
+  test_initializingFormalForNonExistentField_synthetic() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD, found 0
+    await super.test_initializingFormalForNonExistentField_synthetic();
+  }
+
+  @override
+  @failingTest
+  test_initializingFormalForStaticField() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_STATIC_FIELD, found 0
+    await super.test_initializingFormalForStaticField();
+  }
+
+  @override
+  @failingTest
+  test_instanceMemberAccessFromFactory_named() async {
+    // Bad state: Expected element reference for analyzer offset 51; got one for kernel offset 71
+    await super.test_instanceMemberAccessFromFactory_named();
+  }
+
+  @override
+  @failingTest
+  test_instanceMemberAccessFromFactory_unnamed() async {
+    // Bad state: Expected element reference for analyzer offset 48; got one for kernel offset 68
+    await super.test_instanceMemberAccessFromFactory_unnamed();
+  }
+
+  @override
+  @failingTest
+  test_instanceMemberAccessFromStatic_field() async {
+    // Bad state: No reference information for f at 40
+    await super.test_instanceMemberAccessFromStatic_field();
+  }
+
+  @override
+  @failingTest
+  test_instanceMemberAccessFromStatic_getter() async {
+    // Bad state: No reference information for g at 48
+    await super.test_instanceMemberAccessFromStatic_getter();
+  }
+
+  @override
+  @failingTest
+  test_instanceMemberAccessFromStatic_method() async {
+    // Bad state: No reference information for m at 40
+    await super.test_instanceMemberAccessFromStatic_method();
+  }
+
+  @override
+  @failingTest
+  test_instantiateEnum_const() async {
+    // Bad state: No type information for E at 49
+    await super.test_instantiateEnum_const();
+  }
+
+  @override
+  @failingTest
+  test_instantiateEnum_new() async {
+    // Bad state: No type information for E at 47
+    await super.test_instantiateEnum_new();
+  }
+
+  @override
+  @failingTest
+  test_invalidAnnotation_getter() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INVALID_ANNOTATION, found 0
+    await super.test_invalidAnnotation_getter();
+  }
+
+  @override
+  @failingTest
+  test_invalidAnnotation_importWithPrefix_getter() async {
+    // Bad state: No reference information for V at 27
+    await super.test_invalidAnnotation_importWithPrefix_getter();
+  }
+
+  @override
+  @failingTest
+  test_invalidAnnotation_importWithPrefix_notConstantVariable() async {
+    // Bad state: No reference information for V at 27
+    await super.test_invalidAnnotation_importWithPrefix_notConstantVariable();
+  }
+
+  @override
+  @failingTest
   test_invalidAnnotation_importWithPrefix_notVariableOrConstructorInvocation() {
     return super
         .test_invalidAnnotation_importWithPrefix_notVariableOrConstructorInvocation();
@@ -138,18 +1601,39 @@
 
   @override
   @failingTest
+  test_invalidAnnotation_notConstantVariable() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INVALID_ANNOTATION, found 0
+    await super.test_invalidAnnotation_notConstantVariable();
+  }
+
+  @override
+  @failingTest
   test_invalidAnnotation_notVariableOrConstructorInvocation() {
     return super.test_invalidAnnotation_notVariableOrConstructorInvocation();
   }
 
   @override
   @failingTest
+  test_invalidAnnotation_staticMethodReference() async {
+    // Bad state: Expected element reference for analyzer offset 31; got one for kernel offset 30
+    await super.test_invalidAnnotation_staticMethodReference();
+  }
+
+  @override
+  @failingTest
   test_invalidAnnotation_unresolved_identifier() {
     return super.test_invalidAnnotation_unresolved_identifier();
   }
 
   @override
   @failingTest
+  test_invalidAnnotation_unresolved_invocation() async {
+    // Bad state: No reference information for Unresolved at 1
+    await super.test_invalidAnnotation_unresolved_invocation();
+  }
+
+  @override
+  @failingTest
   test_invalidAnnotation_unresolved_prefixedIdentifier() {
     return super.test_invalidAnnotation_unresolved_prefixedIdentifier();
   }
@@ -162,6 +1646,27 @@
 
   @override
   @failingTest
+  test_invalidAnnotationFromDeferredLibrary() async {
+    // Bad state: No reference information for v at 51
+    await super.test_invalidAnnotationFromDeferredLibrary();
+  }
+
+  @override
+  @failingTest
+  test_invalidAnnotationFromDeferredLibrary_constructor() async {
+    // Bad state: No reference information for C at 51
+    await super.test_invalidAnnotationFromDeferredLibrary_constructor();
+  }
+
+  @override
+  @failingTest
+  test_invalidAnnotationFromDeferredLibrary_namedConstructor() async {
+    // Bad state: No reference information for C at 51
+    await super.test_invalidAnnotationFromDeferredLibrary_namedConstructor();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/31001')
   test_invalidConstructorName_notEnclosingClassName_defined() async {
     return super.test_invalidConstructorName_notEnclosingClassName_defined();
@@ -190,6 +1695,183 @@
 
   @override
   @failingTest
+  test_invalidModifierOnConstructor_async() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INVALID_MODIFIER_ON_CONSTRUCTOR, found 0
+    await super.test_invalidModifierOnConstructor_async();
+  }
+
+  @override
+  @failingTest
+  test_invalidModifierOnConstructor_asyncStar() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INVALID_MODIFIER_ON_CONSTRUCTOR, found 0
+    await super.test_invalidModifierOnConstructor_asyncStar();
+  }
+
+  @override
+  @failingTest
+  test_invalidModifierOnConstructor_syncStar() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INVALID_MODIFIER_ON_CONSTRUCTOR, found 0
+    await super.test_invalidModifierOnConstructor_syncStar();
+  }
+
+  @override
+  @failingTest
+  test_invalidModifierOnSetter_member_async() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_invalidModifierOnSetter_member_async();
+  }
+
+  @override
+  @failingTest
+  test_invalidModifierOnSetter_member_asyncStar() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_invalidModifierOnSetter_member_asyncStar();
+  }
+
+  @override
+  @failingTest
+  test_invalidModifierOnSetter_member_syncStar() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_invalidModifierOnSetter_member_syncStar();
+  }
+
+  @override
+  @failingTest
+  test_invalidModifierOnSetter_topLevel_async() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_invalidModifierOnSetter_topLevel_async();
+  }
+
+  @override
+  @failingTest
+  test_invalidModifierOnSetter_topLevel_asyncStar() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_invalidModifierOnSetter_topLevel_asyncStar();
+  }
+
+  @override
+  @failingTest
+  test_invalidModifierOnSetter_topLevel_syncStar() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_invalidModifierOnSetter_topLevel_syncStar();
+  }
+
+  @override
+  @failingTest
+  test_invalidReferenceToThis_factoryConstructor() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS, found 0
+    await super.test_invalidReferenceToThis_factoryConstructor();
+  }
+
+  @override
+  @failingTest
+  test_invalidReferenceToThis_instanceVariableInitializer_inConstructor() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS, found 0
+    await super
+        .test_invalidReferenceToThis_instanceVariableInitializer_inConstructor();
+  }
+
+  @override
+  @failingTest
+  test_invalidReferenceToThis_instanceVariableInitializer_inDeclaration() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS, found 0
+    await super
+        .test_invalidReferenceToThis_instanceVariableInitializer_inDeclaration();
+  }
+
+  @override
+  @failingTest
+  test_invalidReferenceToThis_staticMethod() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS, found 0
+    await super.test_invalidReferenceToThis_staticMethod();
+  }
+
+  @override
+  @failingTest
+  test_invalidReferenceToThis_staticVariableInitializer() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS, found 0
+    await super.test_invalidReferenceToThis_staticVariableInitializer();
+  }
+
+  @override
+  @failingTest
+  test_invalidReferenceToThis_superInitializer() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS, found 0
+    await super.test_invalidReferenceToThis_superInitializer();
+  }
+
+  @override
+  @failingTest
+  test_invalidReferenceToThis_topLevelFunction() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS, found 0
+    await super.test_invalidReferenceToThis_topLevelFunction();
+  }
+
+  @override
+  @failingTest
+  test_invalidReferenceToThis_variableInitializer() async {
+    // Expected 1 errors of type CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS, found 0
+    await super.test_invalidReferenceToThis_variableInitializer();
+  }
+
+  @override
+  @failingTest
+  test_isInConstInstanceCreation_restored() async {
+    // Expected 1 errors of type CompileTimeErrorCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_isInConstInstanceCreation_restored();
+  }
+
+  @override
+  @failingTest
+  test_isInInstanceVariableInitializer_restored() async {
+    // Bad state: No reference information for _foo at 89
+    await super.test_isInInstanceVariableInitializer_restored();
+  }
+
+  @override
+  @failingTest
+  test_labelInOuterScope() async {
+    // Bad state: No reference information for l at 32
+    await super.test_labelInOuterScope();
+  }
+
+  @override
+  @failingTest
+  test_labelUndefined_break() async {
+    // Bad state: No reference information for x at 8
+    await super.test_labelUndefined_break();
+  }
+
+  @override
+  @failingTest
+  test_labelUndefined_continue() async {
+    // Bad state: No reference information for x at 8
+    await super.test_labelUndefined_continue();
+  }
+
+  @override
+  @failingTest
+  test_length_of_erroneous_constant() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t15 = 1 in let ...
+    await super.test_length_of_erroneous_constant();
+  }
+
+  @override
+  @failingTest
+  test_memberWithClassName_field() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MEMBER_WITH_CLASS_NAME, found 0
+    await super.test_memberWithClassName_field();
+  }
+
+  @override
+  @failingTest
+  test_memberWithClassName_field2() async {
+    // UnimplementedError: Multiple field
+    await super.test_memberWithClassName_field2();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/30981')
   test_memberWithClassName_getter() async {
     return super.test_memberWithClassName_getter();
@@ -204,6 +1886,197 @@
 
   @override
   @failingTest
+  test_mixinDeclaresConstructor_classDeclaration() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_DECLARES_CONSTRUCTOR, found 0
+    await super.test_mixinDeclaresConstructor_classDeclaration();
+  }
+
+  @override
+  @failingTest
+  test_mixinDeclaresConstructor_typeAlias() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_DECLARES_CONSTRUCTOR, found 0
+    await super.test_mixinDeclaresConstructor_typeAlias();
+  }
+
+  @override
+  @failingTest
+  test_mixinDeferredClass() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_DEFERRED_CLASS, found 0;
+    //          0 errors of type HintCode.UNUSED_IMPORT, found 1 (21)
+    await super.test_mixinDeferredClass();
+  }
+
+  @override
+  @failingTest
+  test_mixinDeferredClass_classTypeAlias() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_DEFERRED_CLASS, found 0;
+    //          0 errors of type HintCode.UNUSED_IMPORT, found 1 (21)
+    await super.test_mixinDeferredClass_classTypeAlias();
+  }
+
+  @override
+  @failingTest
+  test_mixinHasNoConstructors_mixinApp() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_HAS_NO_CONSTRUCTORS, found 0
+    await super.test_mixinHasNoConstructors_mixinApp();
+  }
+
+  @override
+  @failingTest
+  test_mixinHasNoConstructors_mixinClass() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_HAS_NO_CONSTRUCTORS, found 0
+    await super.test_mixinHasNoConstructors_mixinClass();
+  }
+
+  @override
+  @failingTest
+  test_mixinHasNoConstructors_mixinClass_explicitSuperCall() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_HAS_NO_CONSTRUCTORS, found 0
+    await super.test_mixinHasNoConstructors_mixinClass_explicitSuperCall();
+  }
+
+  @override
+  @failingTest
+  test_mixinHasNoConstructors_mixinClass_implicitSuperCall() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_HAS_NO_CONSTRUCTORS, found 0
+    await super.test_mixinHasNoConstructors_mixinClass_implicitSuperCall();
+  }
+
+  @override
+  @failingTest
+  test_mixinHasNoConstructors_mixinClass_namedSuperCall() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_HAS_NO_CONSTRUCTORS, found 0
+    await super.test_mixinHasNoConstructors_mixinClass_namedSuperCall();
+  }
+
+  @override
+  @failingTest
+  test_mixinInheritsFromNotObject_classDeclaration_extends() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT, found 0
+    await super.test_mixinInheritsFromNotObject_classDeclaration_extends();
+  }
+
+  @override
+  @failingTest
+  test_mixinInheritsFromNotObject_classDeclaration_with() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT, found 0
+    await super.test_mixinInheritsFromNotObject_classDeclaration_with();
+  }
+
+  @override
+  @failingTest
+  test_mixinInheritsFromNotObject_typeAlias_extends() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT, found 0
+    await super.test_mixinInheritsFromNotObject_typeAlias_extends();
+  }
+
+  @override
+  @failingTest
+  test_mixinInheritsFromNotObject_typeAlias_with() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT, found 0
+    await super.test_mixinInheritsFromNotObject_typeAlias_with();
+  }
+
+  @override
+  @failingTest
+  test_mixinOfDisallowedClass_class_bool() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS, found 0
+    await super.test_mixinOfDisallowedClass_class_bool();
+  }
+
+  @override
+  @failingTest
+  test_mixinOfDisallowedClass_class_double() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS, found 0
+    await super.test_mixinOfDisallowedClass_class_double();
+  }
+
+  @override
+  @failingTest
+  test_mixinOfDisallowedClass_class_int() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS, found 0
+    await super.test_mixinOfDisallowedClass_class_int();
+  }
+
+  @override
+  @failingTest
+  test_mixinOfDisallowedClass_class_Null() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS, found 0
+    await super.test_mixinOfDisallowedClass_class_Null();
+  }
+
+  @override
+  @failingTest
+  test_mixinOfDisallowedClass_class_num() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS, found 0
+    await super.test_mixinOfDisallowedClass_class_num();
+  }
+
+  @override
+  @failingTest
+  test_mixinOfDisallowedClass_class_String() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS, found 0
+    await super.test_mixinOfDisallowedClass_class_String();
+  }
+
+  @override
+  @failingTest
+  test_mixinOfDisallowedClass_classTypeAlias_bool() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS, found 0
+    await super.test_mixinOfDisallowedClass_classTypeAlias_bool();
+  }
+
+  @override
+  @failingTest
+  test_mixinOfDisallowedClass_classTypeAlias_double() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS, found 0
+    await super.test_mixinOfDisallowedClass_classTypeAlias_double();
+  }
+
+  @override
+  @failingTest
+  test_mixinOfDisallowedClass_classTypeAlias_int() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS, found 0
+    await super.test_mixinOfDisallowedClass_classTypeAlias_int();
+  }
+
+  @override
+  @failingTest
+  test_mixinOfDisallowedClass_classTypeAlias_Null() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS, found 0
+    await super.test_mixinOfDisallowedClass_classTypeAlias_Null();
+  }
+
+  @override
+  @failingTest
+  test_mixinOfDisallowedClass_classTypeAlias_num() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS, found 0
+    await super.test_mixinOfDisallowedClass_classTypeAlias_num();
+  }
+
+  @override
+  @failingTest
+  test_mixinOfDisallowedClass_classTypeAlias_String() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS, found 0
+    await super.test_mixinOfDisallowedClass_classTypeAlias_String();
+  }
+
+  @override
+  @failingTest
+  test_mixinOfEnum() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_mixinOfEnum();
+  }
+
+  @override
+  @failingTest
+  test_mixinOfNonClass_class() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_mixinOfNonClass_class();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/31005')
   test_mixinOfNonClass_typeAlias() async {
     return super.test_mixinOfNonClass_typeAlias();
@@ -211,6 +2084,27 @@
 
   @override
   @failingTest
+  test_mixinReferencesSuper() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_REFERENCES_SUPER, found 0
+    await super.test_mixinReferencesSuper();
+  }
+
+  @override
+  @failingTest
+  test_mixinWithNonClassSuperclass_class() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_WITH_NON_CLASS_SUPERCLASS, found 0
+    await super.test_mixinWithNonClassSuperclass_class();
+  }
+
+  @override
+  @failingTest
+  test_mixinWithNonClassSuperclass_typeAlias() async {
+    // Expected 1 errors of type CompileTimeErrorCode.MIXIN_WITH_NON_CLASS_SUPERCLASS, found 0
+    await super.test_mixinWithNonClassSuperclass_typeAlias();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/30982')
   test_multipleRedirectingConstructorInvocations() async {
     return super.test_multipleRedirectingConstructorInvocations();
@@ -225,12 +2119,369 @@
 
   @override
   @failingTest
+  test_nativeClauseInNonSDKCode() async {
+    // Expected 1 errors of type ParserErrorCode.NATIVE_CLAUSE_IN_NON_SDK_CODE, found 0
+    await super.test_nativeClauseInNonSDKCode();
+  }
+
+  @override
+  @failingTest
+  test_nativeFunctionBodyInNonSDKCode_function() async {
+    // Expected 1 errors of type ParserErrorCode.NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE, found 0
+    await super.test_nativeFunctionBodyInNonSDKCode_function();
+  }
+
+  @override
+  @failingTest
+  test_nativeFunctionBodyInNonSDKCode_method() async {
+    // Expected 1 errors of type ParserErrorCode.NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE, found 0
+    await super.test_nativeFunctionBodyInNonSDKCode_method();
+  }
+
+  @override
+  @failingTest
   test_noAnnotationConstructorArguments() {
     return super.test_noAnnotationConstructorArguments();
   }
 
   @override
   @failingTest
+  test_noDefaultSuperConstructorExplicit() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT, found 0
+    await super.test_noDefaultSuperConstructorExplicit();
+  }
+
+  @override
+  @failingTest
+  test_noDefaultSuperConstructorExplicit_MixinAppWithDirectSuperCall() async {
+    // Expected 1 errors of type CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT, found 0
+    await super
+        .test_noDefaultSuperConstructorExplicit_MixinAppWithDirectSuperCall();
+  }
+
+  @override
+  @failingTest
+  test_noDefaultSuperConstructorExplicit_mixinAppWithNamedParam() async {
+    // Expected 1 errors of type CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT, found 0
+    await super.test_noDefaultSuperConstructorExplicit_mixinAppWithNamedParam();
+  }
+
+  @override
+  @failingTest
+  test_noDefaultSuperConstructorExplicit_MixinAppWithNamedSuperCall() async {
+    // Expected 1 errors of type CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER, found 0
+    await super
+        .test_noDefaultSuperConstructorExplicit_MixinAppWithNamedSuperCall();
+  }
+
+  @override
+  @failingTest
+  test_noDefaultSuperConstructorExplicit_mixinAppWithOptionalParam() async {
+    // Expected 1 errors of type CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT, found 0
+    await super
+        .test_noDefaultSuperConstructorExplicit_mixinAppWithOptionalParam();
+  }
+
+  @override
+  @failingTest
+  test_noDefaultSuperConstructorExplicit_MixinWithDirectSuperCall() async {
+    // Expected 1 errors of type CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT, found 0
+    await super
+        .test_noDefaultSuperConstructorExplicit_MixinWithDirectSuperCall();
+  }
+
+  @override
+  @failingTest
+  test_noDefaultSuperConstructorExplicit_mixinWithNamedParam() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT, found 0
+    await super.test_noDefaultSuperConstructorExplicit_mixinWithNamedParam();
+  }
+
+  @override
+  @failingTest
+  test_noDefaultSuperConstructorExplicit_MixinWithNamedSuperCall() async {
+    // Expected 1 errors of type CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER, found 0
+    await super
+        .test_noDefaultSuperConstructorExplicit_MixinWithNamedSuperCall();
+  }
+
+  @override
+  @failingTest
+  test_noDefaultSuperConstructorExplicit_mixinWithOptionalParam() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT, found 0
+    await super.test_noDefaultSuperConstructorExplicit_mixinWithOptionalParam();
+  }
+
+  @override
+  @failingTest
+  test_noDefaultSuperConstructorImplicit_mixinAppWithNamedParam() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT, found 0
+    await super.test_noDefaultSuperConstructorImplicit_mixinAppWithNamedParam();
+  }
+
+  @override
+  @failingTest
+  test_noDefaultSuperConstructorImplicit_mixinAppWithOptionalParam() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT, found 0
+    await super
+        .test_noDefaultSuperConstructorImplicit_mixinAppWithOptionalParam();
+  }
+
+  @override
+  @failingTest
+  test_noDefaultSuperConstructorImplicit_mixinWithNamedParam() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT, found 0
+    await super.test_noDefaultSuperConstructorImplicit_mixinWithNamedParam();
+  }
+
+  @override
+  @failingTest
+  test_noDefaultSuperConstructorImplicit_mixinWithOptionalParam() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT, found 0
+    await super.test_noDefaultSuperConstructorImplicit_mixinWithOptionalParam();
+  }
+
+  @override
+  @failingTest
+  test_noDefaultSuperConstructorImplicit_superHasParameters() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT, found 0
+    await super.test_noDefaultSuperConstructorImplicit_superHasParameters();
+  }
+
+  @override
+  @failingTest
+  test_noDefaultSuperConstructorImplicit_superOnlyNamed() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT, found 0
+    await super.test_noDefaultSuperConstructorImplicit_superOnlyNamed();
+  }
+
+  @override
+  @failingTest
+  test_nonConstantAnnotationConstructor_named() async {
+    // Bad state: No reference information for A at 30
+    await super.test_nonConstantAnnotationConstructor_named();
+  }
+
+  @override
+  @failingTest
+  test_nonConstantAnnotationConstructor_unnamed() async {
+    // Bad state: No reference information for A at 22
+    await super.test_nonConstantAnnotationConstructor_unnamed();
+  }
+
+  @override
+  @failingTest
+  test_nonConstantDefaultValue_function_named() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, found 0
+    await super.test_nonConstantDefaultValue_function_named();
+  }
+
+  @override
+  @failingTest
+  test_nonConstantDefaultValue_function_positional() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, found 0
+    await super.test_nonConstantDefaultValue_function_positional();
+  }
+
+  @override
+  @failingTest
+  test_nonConstantDefaultValue_inConstructor_named() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, found 0
+    await super.test_nonConstantDefaultValue_inConstructor_named();
+  }
+
+  @override
+  @failingTest
+  test_nonConstantDefaultValue_inConstructor_positional() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, found 0
+    await super.test_nonConstantDefaultValue_inConstructor_positional();
+  }
+
+  @override
+  @failingTest
+  test_nonConstantDefaultValue_method_named() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, found 0
+    await super.test_nonConstantDefaultValue_method_named();
+  }
+
+  @override
+  @failingTest
+  test_nonConstantDefaultValue_method_positional() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, found 0
+    await super.test_nonConstantDefaultValue_method_positional();
+  }
+
+  @override
+  @failingTest
+  test_nonConstantDefaultValueFromDeferredLibrary() async {
+    // Bad state: Expected element reference for analyzer offset 55; got one for kernel offset 57
+    await super.test_nonConstantDefaultValueFromDeferredLibrary();
+  }
+
+  @override
+  @failingTest
+  test_nonConstantDefaultValueFromDeferredLibrary_nested() async {
+    // Bad state: Expected element reference for analyzer offset 55; got one for kernel offset 57
+    await super.test_nonConstantDefaultValueFromDeferredLibrary_nested();
+  }
+
+  @override
+  @failingTest
+  test_nonConstCaseExpression() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION, found 0
+    await super.test_nonConstCaseExpression();
+  }
+
+  @override
+  @failingTest
+  test_nonConstCaseExpressionFromDeferredLibrary() async {
+    // Bad state: Expected element reference for analyzer offset 87; got one for kernel offset 89
+    await super.test_nonConstCaseExpressionFromDeferredLibrary();
+  }
+
+  @override
+  @failingTest
+  test_nonConstCaseExpressionFromDeferredLibrary_nested() async {
+    // Bad state: Expected element reference for analyzer offset 87; got one for kernel offset 89
+    await super.test_nonConstCaseExpressionFromDeferredLibrary_nested();
+  }
+
+  @override
+  @failingTest
+  test_nonConstListElement() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, found 0
+    await super.test_nonConstListElement();
+  }
+
+  @override
+  @failingTest
+  test_nonConstListElementFromDeferredLibrary() async {
+    // Bad state: Expected element reference for analyzer offset 70; got one for kernel offset 72
+    await super.test_nonConstListElementFromDeferredLibrary();
+  }
+
+  @override
+  @failingTest
+  test_nonConstListElementFromDeferredLibrary_nested() async {
+    // Bad state: Expected element reference for analyzer offset 70; got one for kernel offset 72
+    await super.test_nonConstListElementFromDeferredLibrary_nested();
+  }
+
+  @override
+  @failingTest
+  test_nonConstMapAsExpressionStatement_begin() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_nonConstMapAsExpressionStatement_begin();
+  }
+
+  @override
+  @failingTest
+  test_nonConstMapAsExpressionStatement_only() async {
+    // Bad state: No reference information for  at 13
+    await super.test_nonConstMapAsExpressionStatement_only();
+  }
+
+  @override
+  @failingTest
+  test_nonConstMapKey() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, found 0
+    await super.test_nonConstMapKey();
+  }
+
+  @override
+  @failingTest
+  test_nonConstMapKeyFromDeferredLibrary() async {
+    // Bad state: Expected element reference for analyzer offset 70; got one for kernel offset 72
+    await super.test_nonConstMapKeyFromDeferredLibrary();
+  }
+
+  @override
+  @failingTest
+  test_nonConstMapKeyFromDeferredLibrary_nested() async {
+    // Bad state: Expected element reference for analyzer offset 70; got one for kernel offset 72
+    await super.test_nonConstMapKeyFromDeferredLibrary_nested();
+  }
+
+  @override
+  @failingTest
+  test_nonConstMapValue() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, found 0
+    await super.test_nonConstMapValue();
+  }
+
+  @override
+  @failingTest
+  test_nonConstMapValueFromDeferredLibrary() async {
+    // Bad state: Expected element reference for analyzer offset 76; got one for kernel offset 78
+    await super.test_nonConstMapValueFromDeferredLibrary();
+  }
+
+  @override
+  @failingTest
+  test_nonConstMapValueFromDeferredLibrary_nested() async {
+    // Bad state: Expected element reference for analyzer offset 76; got one for kernel offset 78
+    await super.test_nonConstMapValueFromDeferredLibrary_nested();
+  }
+
+  @override
+  @failingTest
+  test_nonConstValueInInitializer_assert_condition() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER, found 0
+    await super.test_nonConstValueInInitializer_assert_condition();
+  }
+
+  @override
+  @failingTest
+  test_nonConstValueInInitializer_assert_message() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER, found 0
+    await super.test_nonConstValueInInitializer_assert_message();
+  }
+
+  @override
+  @failingTest
+  test_nonConstValueInInitializer_binary_notBool_left() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t17 = p in let ...
+    await super.test_nonConstValueInInitializer_binary_notBool_left();
+  }
+
+  @override
+  @failingTest
+  test_nonConstValueInInitializer_binary_notBool_right() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t18 = p in let ...
+    await super.test_nonConstValueInInitializer_binary_notBool_right();
+  }
+
+  @override
+  @failingTest
+  test_nonConstValueInInitializer_binary_notInt() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t19 = p in let ...
+    await super.test_nonConstValueInInitializer_binary_notInt();
+  }
+
+  @override
+  @failingTest
+  test_nonConstValueInInitializer_binary_notNum() async {
+    // UnimplementedError: kernel: (AsExpression) 5.{dart.core::num::+}(let ...
+    await super.test_nonConstValueInInitializer_binary_notNum();
+  }
+
+  @override
+  @failingTest
+  test_nonConstValueInInitializer_field() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER, found 0
+    await super.test_nonConstValueInInitializer_field();
+  }
+
+  @override
+  @failingTest
+  test_nonConstValueInInitializer_instanceCreation() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER, found 0;
+    //          1 errors of type CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, found 0
+    await super.test_nonConstValueInInitializer_instanceCreation();
+  }
+
+  @override
+  @failingTest
   test_nonConstValueInInitializer_instanceCreation_inDifferentFile() {
     return super
         .test_nonConstValueInInitializer_instanceCreation_inDifferentFile();
@@ -238,6 +2489,148 @@
 
   @override
   @failingTest
+  test_nonConstValueInInitializer_redirecting() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER, found 0
+    await super.test_nonConstValueInInitializer_redirecting();
+  }
+
+  @override
+  @failingTest
+  test_nonConstValueInInitializer_super() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER, found 0
+    await super.test_nonConstValueInInitializer_super();
+  }
+
+  @override
+  @failingTest
+  test_nonConstValueInInitializerFromDeferredLibrary_field() async {
+    // Bad state: Expected element reference for analyzer offset 91; got one for kernel offset 93
+    await super.test_nonConstValueInInitializerFromDeferredLibrary_field();
+  }
+
+  @override
+  @failingTest
+  test_nonConstValueInInitializerFromDeferredLibrary_field_nested() async {
+    // Bad state: Expected element reference for analyzer offset 91; got one for kernel offset 93
+    await super
+        .test_nonConstValueInInitializerFromDeferredLibrary_field_nested();
+  }
+
+  @override
+  @failingTest
+  test_nonConstValueInInitializerFromDeferredLibrary_redirecting() async {
+    // Bad state: Expected element reference for analyzer offset 103; got one for kernel offset 105
+    await super
+        .test_nonConstValueInInitializerFromDeferredLibrary_redirecting();
+  }
+
+  @override
+  @failingTest
+  test_nonConstValueInInitializerFromDeferredLibrary_super() async {
+    // Bad state: Expected element reference for analyzer offset 114; got one for kernel offset 116
+    await super.test_nonConstValueInInitializerFromDeferredLibrary_super();
+  }
+
+  @override
+  @failingTest
+  test_nonGenerativeConstructor_explicit() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR, found 0
+    await super.test_nonGenerativeConstructor_explicit();
+  }
+
+  @override
+  @failingTest
+  test_nonGenerativeConstructor_implicit() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR, found 0
+    await super.test_nonGenerativeConstructor_implicit();
+  }
+
+  @override
+  @failingTest
+  test_nonGenerativeConstructor_implicit2() async {
+    // Expected 1 errors of type CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR, found 0
+    await super.test_nonGenerativeConstructor_implicit2();
+  }
+
+  @override
+  @failingTest
+  test_notEnoughRequiredArguments_const() async {
+    // Bad state: No type information for A at 47
+    await super.test_notEnoughRequiredArguments_const();
+  }
+
+  @override
+  @failingTest
+  test_notEnoughRequiredArguments_const_super() async {
+    // UnimplementedError: For ShadowInvalidInitializer
+    await super.test_notEnoughRequiredArguments_const_super();
+  }
+
+  @override
+  @failingTest
+  test_optionalParameterInOperator_named() async {
+    // Expected 1 errors of type CompileTimeErrorCode.OPTIONAL_PARAMETER_IN_OPERATOR, found 0
+    await super.test_optionalParameterInOperator_named();
+  }
+
+  @override
+  @failingTest
+  test_optionalParameterInOperator_positional() async {
+    // Expected 1 errors of type CompileTimeErrorCode.OPTIONAL_PARAMETER_IN_OPERATOR, found 0
+    await super.test_optionalParameterInOperator_positional();
+  }
+
+  @override
+  @failingTest
+  test_prefix_assignment_compound_in_method() async {
+    // Bad state: No reference information for p at 46
+    await super.test_prefix_assignment_compound_in_method();
+  }
+
+  @override
+  @failingTest
+  test_prefix_assignment_compound_not_in_method() async {
+    // Bad state: No reference information for p at 32
+    await super.test_prefix_assignment_compound_not_in_method();
+  }
+
+  @override
+  @failingTest
+  test_prefix_assignment_in_method() async {
+    // Bad state: No reference information for p at 46
+    await super.test_prefix_assignment_in_method();
+  }
+
+  @override
+  @failingTest
+  test_prefix_assignment_not_in_method() async {
+    // Bad state: No reference information for p at 32
+    await super.test_prefix_assignment_not_in_method();
+  }
+
+  @override
+  @failingTest
+  test_prefix_conditionalPropertyAccess_call() async {
+    // Bad state: Expected element reference for analyzer offset 32; got one for kernel offset 35
+    await super.test_prefix_conditionalPropertyAccess_call();
+  }
+
+  @override
+  @failingTest
+  test_prefix_conditionalPropertyAccess_call_loadLibrary() async {
+    // Bad state: No reference information for p at 41
+    await super.test_prefix_conditionalPropertyAccess_call_loadLibrary();
+  }
+
+  @override
+  @failingTest
+  test_prefix_conditionalPropertyAccess_get() async {
+    // Bad state: Expected element reference for analyzer offset 39; got one for kernel offset 42
+    await super.test_prefix_conditionalPropertyAccess_get();
+  }
+
+  @override
+  @failingTest
   @potentialAnalyzerProblem
   test_prefix_conditionalPropertyAccess_get_loadLibrary() async {
     return super.test_prefix_conditionalPropertyAccess_get_loadLibrary();
@@ -245,6 +2638,34 @@
 
   @override
   @failingTest
+  test_prefix_conditionalPropertyAccess_set() async {
+    // Bad state: Expected element reference for analyzer offset 32; got one for kernel offset 35
+    await super.test_prefix_conditionalPropertyAccess_set();
+  }
+
+  @override
+  @failingTest
+  test_prefix_conditionalPropertyAccess_set_loadLibrary() async {
+    // Bad state: No reference information for p at 41
+    await super.test_prefix_conditionalPropertyAccess_set_loadLibrary();
+  }
+
+  @override
+  @failingTest
+  test_prefix_unqualified_invocation_in_method() async {
+    // Bad state: No reference information for p at 46
+    await super.test_prefix_unqualified_invocation_in_method();
+  }
+
+  @override
+  @failingTest
+  test_prefix_unqualified_invocation_not_in_method() async {
+    // Bad state: No reference information for p at 32
+    await super.test_prefix_unqualified_invocation_not_in_method();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/30857')
   test_prefixCollidesWithTopLevelMembers_functionTypeAlias() async {
     return super.test_prefixCollidesWithTopLevelMembers_functionTypeAlias();
@@ -273,6 +2694,212 @@
 
   @override
   @failingTest
+  test_prefixNotFollowedByDot() async {
+    // Bad state: No reference information for p at 39
+    await super.test_prefixNotFollowedByDot();
+  }
+
+  @override
+  @failingTest
+  test_prefixNotFollowedByDot_compoundAssignment() async {
+    // Bad state: No reference information for p at 32
+    await super.test_prefixNotFollowedByDot_compoundAssignment();
+  }
+
+  @override
+  @failingTest
+  test_prefixNotFollowedByDot_conditionalMethodInvocation() async {
+    // Bad state: Expected element reference for analyzer offset 32; got one for kernel offset 35
+    await super.test_prefixNotFollowedByDot_conditionalMethodInvocation();
+  }
+
+  @override
+  @failingTest
+  test_privateCollisionInClassTypeAlias_mixinAndMixin() async {
+    // Expected 1 errors of type CompileTimeErrorCode.PRIVATE_COLLISION_IN_MIXIN_APPLICATION, found 0
+    await super.test_privateCollisionInClassTypeAlias_mixinAndMixin();
+  }
+
+  @override
+  @failingTest
+  test_privateCollisionInClassTypeAlias_mixinAndMixin_indirect() async {
+    // Expected 1 errors of type CompileTimeErrorCode.PRIVATE_COLLISION_IN_MIXIN_APPLICATION, found 0
+    await super.test_privateCollisionInClassTypeAlias_mixinAndMixin_indirect();
+  }
+
+  @override
+  @failingTest
+  test_privateCollisionInClassTypeAlias_superclassAndMixin() async {
+    // Expected 1 errors of type CompileTimeErrorCode.PRIVATE_COLLISION_IN_MIXIN_APPLICATION, found 0
+    await super.test_privateCollisionInClassTypeAlias_superclassAndMixin();
+  }
+
+  @override
+  @failingTest
+  test_privateCollisionInClassTypeAlias_superclassAndMixin_same() async {
+    // Expected 1 errors of type CompileTimeErrorCode.PRIVATE_COLLISION_IN_MIXIN_APPLICATION, found 0
+    await super.test_privateCollisionInClassTypeAlias_superclassAndMixin_same();
+  }
+
+  @override
+  @failingTest
+  test_privateCollisionInMixinApplication_mixinAndMixin() async {
+    // Expected 1 errors of type CompileTimeErrorCode.PRIVATE_COLLISION_IN_MIXIN_APPLICATION, found 0
+    await super.test_privateCollisionInMixinApplication_mixinAndMixin();
+  }
+
+  @override
+  @failingTest
+  test_privateCollisionInMixinApplication_mixinAndMixin_indirect() async {
+    // Expected 1 errors of type CompileTimeErrorCode.PRIVATE_COLLISION_IN_MIXIN_APPLICATION, found 0
+    await super
+        .test_privateCollisionInMixinApplication_mixinAndMixin_indirect();
+  }
+
+  @override
+  @failingTest
+  test_privateCollisionInMixinApplication_superclassAndMixin() async {
+    // Expected 1 errors of type CompileTimeErrorCode.PRIVATE_COLLISION_IN_MIXIN_APPLICATION, found 0
+    await super.test_privateCollisionInMixinApplication_superclassAndMixin();
+  }
+
+  @override
+  @failingTest
+  test_privateCollisionInMixinApplication_superclassAndMixin_same() async {
+    // Expected 1 errors of type CompileTimeErrorCode.PRIVATE_COLLISION_IN_MIXIN_APPLICATION, found 0
+    await super
+        .test_privateCollisionInMixinApplication_superclassAndMixin_same();
+  }
+
+  @override
+  @failingTest
+  test_privateOptionalParameter() async {
+    // Expected 1 errors of type CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER, found 0
+    await super.test_privateOptionalParameter();
+  }
+
+  @override
+  @failingTest
+  test_privateOptionalParameter_fieldFormal() async {
+    // Expected 1 errors of type CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER, found 0
+    await super.test_privateOptionalParameter_fieldFormal();
+  }
+
+  @override
+  @failingTest
+  test_privateOptionalParameter_withDefaultValue() async {
+    // Expected 1 errors of type CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER, found 0
+    await super.test_privateOptionalParameter_withDefaultValue();
+  }
+
+  @override
+  @failingTest
+  test_recursiveCompileTimeConstant() async {
+    // Expected 1 errors of type CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT, found 0
+    await super.test_recursiveCompileTimeConstant();
+  }
+
+  @override
+  @failingTest
+  test_recursiveCompileTimeConstant_cycle() async {
+    // UnimplementedError: kernel: (ShadowMethodInvocation) #lib4::y.+(1)
+    await super.test_recursiveCompileTimeConstant_cycle();
+  }
+
+  @override
+  @failingTest
+  test_recursiveCompileTimeConstant_initializer_after_toplevel_var() async {
+    // Expected 1 errors of type CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT, found 0
+    await super
+        .test_recursiveCompileTimeConstant_initializer_after_toplevel_var();
+  }
+
+  @override
+  @failingTest
+  test_recursiveCompileTimeConstant_singleVariable() async {
+    // Expected 1 errors of type CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT, found 0
+    await super.test_recursiveCompileTimeConstant_singleVariable();
+  }
+
+  @override
+  @failingTest
+  test_recursiveConstructorRedirect() async {
+    // Expected 2 errors of type CompileTimeErrorCode.RECURSIVE_CONSTRUCTOR_REDIRECT, found 0
+    await super.test_recursiveConstructorRedirect();
+  }
+
+  @override
+  @failingTest
+  test_recursiveConstructorRedirect_directSelfReference() async {
+    // Expected 1 errors of type CompileTimeErrorCode.RECURSIVE_CONSTRUCTOR_REDIRECT, found 0
+    await super.test_recursiveConstructorRedirect_directSelfReference();
+  }
+
+  @override
+  @failingTest
+  test_recursiveFactoryRedirect() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_recursiveFactoryRedirect();
+  }
+
+  @override
+  @failingTest
+  test_recursiveFactoryRedirect_directSelfReference() async {
+    // Expected 1 errors of type CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT, found 0
+    await super.test_recursiveFactoryRedirect_directSelfReference();
+  }
+
+  @override
+  @failingTest
+  test_recursiveFactoryRedirect_diverging() async {
+    // Bad state: Attempting to apply a non-parameterized type (TypeParameterTypeImpl) to type arguments
+    await super.test_recursiveFactoryRedirect_diverging();
+  }
+
+  @override
+  @failingTest
+  test_recursiveFactoryRedirect_generic() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_recursiveFactoryRedirect_generic();
+  }
+
+  @override
+  @failingTest
+  test_recursiveFactoryRedirect_named() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_recursiveFactoryRedirect_named();
+  }
+
+  @override
+  @failingTest
+  test_recursiveFactoryRedirect_outsideCycle() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_recursiveFactoryRedirect_outsideCycle();
+  }
+
+  @override
+  @failingTest
+  test_recursiveInterfaceInheritance_extends() async {
+    // Expected 2 errors of type CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, found 0
+    await super.test_recursiveInterfaceInheritance_extends();
+  }
+
+  @override
+  @failingTest
+  test_recursiveInterfaceInheritance_extends_implements() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_recursiveInterfaceInheritance_extends_implements();
+  }
+
+  @override
+  @failingTest
+  test_recursiveInterfaceInheritance_implements() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_recursiveInterfaceInheritance_implements();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/31007')
   test_recursiveInterfaceInheritance_mixin() async {
     return super.test_recursiveInterfaceInheritance_mixin();
@@ -280,6 +2907,65 @@
 
   @override
   @failingTest
+  test_recursiveInterfaceInheritance_mixin_superclass() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_recursiveInterfaceInheritance_mixin_superclass();
+  }
+
+  @override
+  @failingTest
+  test_recursiveInterfaceInheritance_tail() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_recursiveInterfaceInheritance_tail();
+  }
+
+  @override
+  @failingTest
+  test_recursiveInterfaceInheritance_tail2() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_recursiveInterfaceInheritance_tail2();
+  }
+
+  @override
+  @failingTest
+  test_recursiveInterfaceInheritance_tail3() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_recursiveInterfaceInheritance_tail3();
+  }
+
+  @override
+  @failingTest
+  test_recursiveInterfaceInheritanceBaseCaseExtends() async {
+    // Expected 1 errors of type CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_EXTENDS, found 0
+    await super.test_recursiveInterfaceInheritanceBaseCaseExtends();
+  }
+
+  @override
+  @failingTest
+  test_recursiveInterfaceInheritanceBaseCaseExtends_abstract() async {
+    // Expected 1 errors of type CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_EXTENDS, found 0;
+    //          1 errors of type StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER, found 0;
+    //          1 errors of type StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE, found 0
+    await super.test_recursiveInterfaceInheritanceBaseCaseExtends_abstract();
+  }
+
+  @override
+  @failingTest
+  test_recursiveInterfaceInheritanceBaseCaseImplements() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_recursiveInterfaceInheritanceBaseCaseImplements();
+  }
+
+  @override
+  @failingTest
+  test_recursiveInterfaceInheritanceBaseCaseImplements_typeAlias() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super
+        .test_recursiveInterfaceInheritanceBaseCaseImplements_typeAlias();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/31007')
   test_recursiveInterfaceInheritanceBaseCaseWith() async {
     return super.test_recursiveInterfaceInheritanceBaseCaseWith();
@@ -287,6 +2973,202 @@
 
   @override
   @failingTest
+  test_redirectGenerativeToMissingConstructor() async {
+    // Bad state: No reference information for noSuchConstructor at 23
+    await super.test_redirectGenerativeToMissingConstructor();
+  }
+
+  @override
+  @failingTest
+  test_redirectGenerativeToNonGenerativeConstructor() async {
+    // Bad state: No reference information for x at 23
+    await super.test_redirectGenerativeToNonGenerativeConstructor();
+  }
+
+  @override
+  @failingTest
+  test_redirectToMissingConstructor_named() async {
+    // NoSuchMethodError: The getter 'returnType' was called on null.
+    await super.test_redirectToMissingConstructor_named();
+  }
+
+  @override
+  @failingTest
+  test_redirectToMissingConstructor_unnamed() async {
+    // NoSuchMethodError: The getter 'returnType' was called on null.
+    await super.test_redirectToMissingConstructor_unnamed();
+  }
+
+  @override
+  @failingTest
+  test_redirectToNonClass_notAType() async {
+    // NoSuchMethodError: The getter 'returnType' was called on null.
+    await super.test_redirectToNonClass_notAType();
+  }
+
+  @override
+  @failingTest
+  test_redirectToNonClass_undefinedIdentifier() async {
+    // NoSuchMethodError: The getter 'returnType' was called on null.
+    await super.test_redirectToNonClass_undefinedIdentifier();
+  }
+
+  @override
+  @failingTest
+  test_redirectToNonConstConstructor() async {
+    // Expected 1 errors of type CompileTimeErrorCode.REDIRECT_TO_NON_CONST_CONSTRUCTOR, found 0
+    await super.test_redirectToNonConstConstructor();
+  }
+
+  @override
+  @failingTest
+  test_referencedBeforeDeclaration_hideInBlock_function() async {
+    // Bad state: No declaration information for v() {} at 34
+    await super.test_referencedBeforeDeclaration_hideInBlock_function();
+  }
+
+  @override
+  @failingTest
+  test_referencedBeforeDeclaration_hideInBlock_local() async {
+    // Bad state: No type information for v at 38
+    await super.test_referencedBeforeDeclaration_hideInBlock_local();
+  }
+
+  @override
+  @failingTest
+  test_referencedBeforeDeclaration_hideInBlock_subBlock() async {
+    // Bad state: No type information for v at 48
+    await super.test_referencedBeforeDeclaration_hideInBlock_subBlock();
+  }
+
+  @override
+  @failingTest
+  test_referencedBeforeDeclaration_inInitializer_closure() async {
+    // Bad state: No type information for v at 15
+    await super.test_referencedBeforeDeclaration_inInitializer_closure();
+  }
+
+  @override
+  @failingTest
+  test_referencedBeforeDeclaration_inInitializer_directly() async {
+    // Bad state: No type information for v at 15
+    await super.test_referencedBeforeDeclaration_inInitializer_directly();
+  }
+
+  @override
+  @failingTest
+  test_referencedBeforeDeclaration_type_localFunction() async {
+    // Bad state: No declaration information for int String(int x) => x + 1; at 40
+    await super.test_referencedBeforeDeclaration_type_localFunction();
+  }
+
+  @override
+  @failingTest
+  test_referencedBeforeDeclaration_type_localVariable() async {
+    // Bad state: No type information for String at 44
+    await super.test_referencedBeforeDeclaration_type_localVariable();
+  }
+
+  @override
+  @failingTest
+  test_rethrowOutsideCatch() async {
+    // Bad state: No type information for rethrow at 8
+    await super.test_rethrowOutsideCatch();
+  }
+
+  @override
+  @failingTest
+  test_returnInGenerativeConstructor() async {
+    // Bad state: No type information for 0 at 25
+    await super.test_returnInGenerativeConstructor();
+  }
+
+  @override
+  @failingTest
+  test_returnInGenerativeConstructor_expressionFunctionBody() async {
+    // Bad state: No type information for null at 19
+    await super.test_returnInGenerativeConstructor_expressionFunctionBody();
+  }
+
+  @override
+  @failingTest
+  test_returnInGenerator_asyncStar() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_returnInGenerator_asyncStar();
+  }
+
+  @override
+  @failingTest
+  test_returnInGenerator_syncStar() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_returnInGenerator_syncStar();
+  }
+
+  @override
+  @failingTest
+  test_sharedDeferredPrefix() async {
+    // Bad state: Expected element reference for analyzer offset 86; got one for kernel offset 90
+    await super.test_sharedDeferredPrefix();
+  }
+
+  @override
+  @failingTest
+  test_superInInvalidContext_binaryExpression() async {
+    // Expected 1 errors of type CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT, found 0
+    await super.test_superInInvalidContext_binaryExpression();
+  }
+
+  @override
+  @failingTest
+  test_superInInvalidContext_constructorFieldInitializer() async {
+    // Expected 1 errors of type CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT, found 0
+    await super.test_superInInvalidContext_constructorFieldInitializer();
+  }
+
+  @override
+  @failingTest
+  test_superInInvalidContext_factoryConstructor() async {
+    // Bad state: No reference information for m at 67
+    await super.test_superInInvalidContext_factoryConstructor();
+  }
+
+  @override
+  @failingTest
+  test_superInInvalidContext_instanceVariableInitializer() async {
+    // Expected 1 errors of type CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT, found 0
+    await super.test_superInInvalidContext_instanceVariableInitializer();
+  }
+
+  @override
+  @failingTest
+  test_superInInvalidContext_staticMethod() async {
+    // Bad state: No reference information for m at 76
+    await super.test_superInInvalidContext_staticMethod();
+  }
+
+  @override
+  @failingTest
+  test_superInInvalidContext_staticVariableInitializer() async {
+    // Bad state: No reference information for a at 75
+    await super.test_superInInvalidContext_staticVariableInitializer();
+  }
+
+  @override
+  @failingTest
+  test_superInInvalidContext_topLevelFunction() async {
+    // Bad state: No reference information for f at 14
+    await super.test_superInInvalidContext_topLevelFunction();
+  }
+
+  @override
+  @failingTest
+  test_superInInvalidContext_topLevelVariableInitializer() async {
+    // Bad state: No reference information for y at 14
+    await super.test_superInInvalidContext_topLevelVariableInitializer();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/30982')
   test_superInRedirectingConstructor_redirectionSuper() async {
     return super.test_superInRedirectingConstructor_redirectionSuper();
@@ -301,6 +3183,21 @@
 
   @override
   @failingTest
+  test_symbol_constructor_badArgs() async {
+    // Bad state: No type information for Symbol at 69
+    await super.test_symbol_constructor_badArgs();
+  }
+
+  @override
+  @failingTest
+  test_test_fieldInitializerOutsideConstructor_topLevelFunction() async {
+    // Expected 1 errors of type ParserErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, found 0;
+    //          1 errors of type CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, found 0
+    await super.test_test_fieldInitializerOutsideConstructor_topLevelFunction();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/31007')
   test_typeAliasCannotReferenceItself_11987() async {
     return super.test_typeAliasCannotReferenceItself_11987();
@@ -308,6 +3205,14 @@
 
   @override
   @failingTest
+  test_typeAliasCannotReferenceItself_functionTypedParameter_returnType() async {
+    // Expected 1 errors of type CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF, found 0
+    await super
+        .test_typeAliasCannotReferenceItself_functionTypedParameter_returnType();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/31007')
   test_typeAliasCannotReferenceItself_generic() async {
     return super.test_typeAliasCannotReferenceItself_generic();
@@ -344,6 +3249,20 @@
 
   @override
   @failingTest
+  test_typeAliasCannotReferenceItself_returnType() async {
+    // Expected 1 errors of type CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF, found 0
+    await super.test_typeAliasCannotReferenceItself_returnType();
+  }
+
+  @override
+  @failingTest
+  test_typeAliasCannotReferenceItself_returnType_indirect() async {
+    // Expected 2 errors of type CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF, found 0
+    await super.test_typeAliasCannotReferenceItself_returnType_indirect();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/31007')
   test_typeAliasCannotReferenceItself_typeVariableBounds() async {
     return super.test_typeAliasCannotReferenceItself_typeVariableBounds();
@@ -351,6 +3270,90 @@
 
   @override
   @failingTest
+  test_typeArgumentNotMatchingBounds_const() async {
+    // Expected 1 errors of type CompileTimeErrorCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_const();
+  }
+
+  @override
+  @failingTest
+  test_undefinedClass_const() async {
+    // Bad state: No type information for A at 21
+    await super.test_undefinedClass_const();
+  }
+
+  @override
+  @failingTest
+  test_undefinedConstructorInInitializer_explicit_named() async {
+    // Expected 1 errors of type CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER, found 0
+    await super.test_undefinedConstructorInInitializer_explicit_named();
+  }
+
+  @override
+  @failingTest
+  test_undefinedConstructorInInitializer_explicit_unnamed() async {
+    // Expected 1 errors of type CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT, found 0
+    await super.test_undefinedConstructorInInitializer_explicit_unnamed();
+  }
+
+  @override
+  @failingTest
+  test_undefinedConstructorInInitializer_implicit() async {
+    // Expected 1 errors of type CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT, found 0
+    await super.test_undefinedConstructorInInitializer_implicit();
+  }
+
+  @override
+  @failingTest
+  test_undefinedNamedParameter() async {
+    // Bad state: No type information for A at 42
+    await super.test_undefinedNamedParameter();
+  }
+
+  @override
+  @failingTest
+  test_uriDoesNotExist_export() async {
+    // Expected 1 errors of type CompileTimeErrorCode.URI_DOES_NOT_EXIST, found 0
+    await super.test_uriDoesNotExist_export();
+  }
+
+  @override
+  @failingTest
+  test_uriDoesNotExist_import() async {
+    // Expected 1 errors of type CompileTimeErrorCode.URI_DOES_NOT_EXIST, found 0
+    await super.test_uriDoesNotExist_import();
+  }
+
+  @override
+  @failingTest
+  test_uriDoesNotExist_import_appears_after_deleting_target() async {
+    // Expected 1 errors of type CompileTimeErrorCode.URI_DOES_NOT_EXIST, found 0
+    await super.test_uriDoesNotExist_import_appears_after_deleting_target();
+  }
+
+  @override
+  @failingTest
+  test_uriDoesNotExist_import_disappears_when_fixed() async {
+    // Expected 1 errors of type CompileTimeErrorCode.URI_DOES_NOT_EXIST, found 0
+    await super.test_uriDoesNotExist_import_disappears_when_fixed();
+  }
+
+  @override
+  @failingTest
+  test_uriDoesNotExist_part() async {
+    // Expected 1 errors of type CompileTimeErrorCode.URI_DOES_NOT_EXIST, found 0
+    await super.test_uriDoesNotExist_part();
+  }
+
+  @override
+  @failingTest
+  test_uriWithInterpolation_constant() async {
+    // Expected 1 errors of type StaticWarningCode.UNDEFINED_IDENTIFIER, found 0
+    await super.test_uriWithInterpolation_constant();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/30984')
   test_uriWithInterpolation_nonConstant() async {
     return super.test_uriWithInterpolation_nonConstant();
@@ -358,6 +3361,27 @@
 
   @override
   @failingTest
+  test_wrongNumberOfParametersForOperator1() async {
+    // Expected 1 errors of type CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR, found 0
+    await super.test_wrongNumberOfParametersForOperator1();
+  }
+
+  @override
+  @failingTest
+  test_wrongNumberOfParametersForOperator_minus() async {
+    // Expected 1 errors of type CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS, found 0
+    await super.test_wrongNumberOfParametersForOperator_minus();
+  }
+
+  @override
+  @failingTest
+  test_wrongNumberOfParametersForOperator_tilde() async {
+    // Expected 1 errors of type CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR, found 0
+    await super.test_wrongNumberOfParametersForOperator_tilde();
+  }
+
+  @override
+  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/31096')
   test_wrongNumberOfParametersForSetter_function_named() async {
     return super.test_wrongNumberOfParametersForSetter_function_named();
@@ -411,6 +3435,12 @@
   test_wrongNumberOfParametersForSetter_method_tooMany() async {
     return super.test_wrongNumberOfParametersForSetter_method_tooMany();
   }
+
+  @override
+  test_yieldInNonGenerator_async() async {
+    // Test passes, even though if fails in the superclass
+    await super.test_yieldInNonGenerator_async();
+  }
 }
 
 /// Tests marked with this annotation fail because of a Fasta problem.
diff --git a/pkg/analyzer/test/generated/compile_time_error_code_test.dart b/pkg/analyzer/test/generated/compile_time_error_code_test.dart
index fea5b07..7dc9b41 100644
--- a/pkg/analyzer/test/generated/compile_time_error_code_test.dart
+++ b/pkg/analyzer/test/generated/compile_time_error_code_test.dart
@@ -98,169 +98,6 @@
   AnalysisOptions get defaultAnalysisOptions =>
       new AnalysisOptionsImpl()..strongMode = true;
 
-  fail_awaitInWrongContext_sync() async {
-    // This test requires better error recovery than we currently have. In
-    // particular, we need to be able to distinguish between an await expression
-    // in the wrong context, and the use of 'await' as an identifier.
-    Source source = addSource(r'''
-f(x) {
-  return await x;
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [CompileTimeErrorCode.AWAIT_IN_WRONG_CONTEXT]);
-    verify([source]);
-  }
-
-  fail_awaitInWrongContext_syncStar() async {
-    // This test requires better error recovery than we currently have. In
-    // particular, we need to be able to distinguish between an await expression
-    // in the wrong context, and the use of 'await' as an identifier.
-    Source source = addSource(r'''
-f(x) sync* {
-  yield await x;
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [CompileTimeErrorCode.AWAIT_IN_WRONG_CONTEXT]);
-    verify([source]);
-  }
-
-  fail_constEvalThrowsException() async {
-    Source source = addSource(r'''
-class C {
-  const C();
-}
-f() { return const C(); }''');
-    await computeAnalysisResult(source);
-    assertErrors(
-        source, [CompileTimeErrorCode.CONST_CONSTRUCTOR_THROWS_EXCEPTION]);
-    verify([source]);
-  }
-
-  fail_invalidIdentifierInAsync_async() async {
-    // TODO(brianwilkerson) Report this error.
-    Source source = addSource(r'''
-class A {
-  m() async {
-    int async;
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [CompileTimeErrorCode.INVALID_IDENTIFIER_IN_ASYNC]);
-    verify([source]);
-  }
-
-  fail_invalidIdentifierInAsync_await() async {
-    // TODO(brianwilkerson) Report this error.
-    Source source = addSource(r'''
-class A {
-  m() async {
-    int await;
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [CompileTimeErrorCode.INVALID_IDENTIFIER_IN_ASYNC]);
-    verify([source]);
-  }
-
-  fail_invalidIdentifierInAsync_yield() async {
-    // TODO(brianwilkerson) Report this error.
-    Source source = addSource(r'''
-class A {
-  m() async {
-    int yield;
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [CompileTimeErrorCode.INVALID_IDENTIFIER_IN_ASYNC]);
-    verify([source]);
-  }
-
-  fail_mixinDeclaresConstructor() async {
-    Source source = addSource(r'''
-class A {
-  A() {}
-}
-class B extends Object mixin A {}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [CompileTimeErrorCode.MIXIN_DECLARES_CONSTRUCTOR]);
-    verify([source]);
-  }
-
-  fail_mixinOfNonClass() async {
-    // TODO(brianwilkerson) Compare with MIXIN_WITH_NON_CLASS_SUPERCLASS.
-    Source source = addSource(r'''
-var A;
-class B extends Object mixin A {}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_NON_CLASS]);
-    verify([source]);
-  }
-
-  fail_objectCannotExtendAnotherClass() async {
-    Source source = addSource(r'''
-''');
-    await computeAnalysisResult(source);
-    assertErrors(
-        source, [CompileTimeErrorCode.OBJECT_CANNOT_EXTEND_ANOTHER_CLASS]);
-    verify([source]);
-  }
-
-  fail_superInitializerInObject() async {
-    Source source = addSource(r'''
-''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [CompileTimeErrorCode.SUPER_INITIALIZER_IN_OBJECT]);
-    verify([source]);
-  }
-
-  fail_yieldEachInNonGenerator_async() async {
-    // TODO(brianwilkerson) We are currently parsing the yield statement as a
-    // binary expression.
-    Source source = addSource(r'''
-f() async {
-  yield* 0;
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [CompileTimeErrorCode.YIELD_EACH_IN_NON_GENERATOR]);
-    verify([source]);
-  }
-
-  fail_yieldEachInNonGenerator_sync() async {
-    // TODO(brianwilkerson) We are currently parsing the yield statement as a
-    // binary expression.
-    Source source = addSource(r'''
-f() {
-  yield* 0;
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [CompileTimeErrorCode.YIELD_IN_NON_GENERATOR]);
-    verify([source]);
-  }
-
-  fail_yieldInNonGenerator_async() async {
-    // TODO(brianwilkerson) We are currently trying to parse the yield statement
-    // as a binary expression.
-    Source source = addSource(r'''
-f() async {
-  yield 0;
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [CompileTimeErrorCode.YIELD_IN_NON_GENERATOR]);
-    verify([source]);
-  }
-
-  fail_yieldInNonGenerator_sync() async {
-    // TODO(brianwilkerson) We are currently trying to parse the yield statement
-    // as a binary expression.
-    Source source = addSource(r'''
-f() {
-  yield 0;
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [CompileTimeErrorCode.YIELD_EACH_IN_NON_GENERATOR]);
-    verify([source]);
-  }
-
   test_accessPrivateEnumField() async {
     Source source = addSource(r'''
 enum E { ONE }
@@ -659,6 +496,34 @@
     verify([source]);
   }
 
+  @failingTest
+  test_awaitInWrongContext_sync() async {
+    // This test requires better error recovery than we currently have. In
+    // particular, we need to be able to distinguish between an await expression
+    // in the wrong context, and the use of 'await' as an identifier.
+    Source source = addSource(r'''
+f(x) {
+  return await x;
+}''');
+    await computeAnalysisResult(source);
+    assertErrors(source, [CompileTimeErrorCode.AWAIT_IN_WRONG_CONTEXT]);
+    verify([source]);
+  }
+
+  @failingTest
+  test_awaitInWrongContext_syncStar() async {
+    // This test requires better error recovery than we currently have. In
+    // particular, we need to be able to distinguish between an await expression
+    // in the wrong context, and the use of 'await' as an identifier.
+    Source source = addSource(r'''
+f(x) sync* {
+  yield await x;
+}''');
+    await computeAnalysisResult(source);
+    assertErrors(source, [CompileTimeErrorCode.AWAIT_IN_WRONG_CONTEXT]);
+    verify([source]);
+  }
+
   test_bug_23176() async {
     Source source = addSource('''
 class A {
@@ -1191,6 +1056,19 @@
     verify([source]);
   }
 
+  @failingTest
+  test_constEvalThrowsException() async {
+    Source source = addSource(r'''
+class C {
+  const C();
+}
+f() { return const C(); }''');
+    await computeAnalysisResult(source);
+    assertErrors(
+        source, [CompileTimeErrorCode.CONST_CONSTRUCTOR_THROWS_EXCEPTION]);
+    verify([source]);
+  }
+
   test_constEvalThrowsException_binaryMinus_null() async {
     await _check_constEvalThrowsException_binary_null("null - 5", false);
     await _check_constEvalThrowsException_binary_null("5 - null", true);
@@ -3440,6 +3318,48 @@
     // no verify() call, "B" is not resolved
   }
 
+  @failingTest
+  test_invalidIdentifierInAsync_async() async {
+    // TODO(brianwilkerson) Report this error.
+    Source source = addSource(r'''
+class A {
+  m() async {
+    int async;
+  }
+}''');
+    await computeAnalysisResult(source);
+    assertErrors(source, [CompileTimeErrorCode.INVALID_IDENTIFIER_IN_ASYNC]);
+    verify([source]);
+  }
+
+  @failingTest
+  test_invalidIdentifierInAsync_await() async {
+    // TODO(brianwilkerson) Report this error.
+    Source source = addSource(r'''
+class A {
+  m() async {
+    int await;
+  }
+}''');
+    await computeAnalysisResult(source);
+    assertErrors(source, [CompileTimeErrorCode.INVALID_IDENTIFIER_IN_ASYNC]);
+    verify([source]);
+  }
+
+  @failingTest
+  test_invalidIdentifierInAsync_yield() async {
+    // TODO(brianwilkerson) Report this error.
+    Source source = addSource(r'''
+class A {
+  m() async {
+    int yield;
+  }
+}''');
+    await computeAnalysisResult(source);
+    assertErrors(source, [CompileTimeErrorCode.INVALID_IDENTIFIER_IN_ASYNC]);
+    verify([source]);
+  }
+
   test_invalidModifierOnConstructor_async() async {
     Source source = addSource(r'''
 class A {
@@ -3760,6 +3680,18 @@
     verify([source]);
   }
 
+  @failingTest
+  test_mixinDeclaresConstructor() async {
+    Source source = addSource(r'''
+class A {
+  A() {}
+}
+class B extends Object mixin A {}''');
+    await computeAnalysisResult(source);
+    assertErrors(source, [CompileTimeErrorCode.MIXIN_DECLARES_CONSTRUCTOR]);
+    verify([source]);
+  }
+
   test_mixinDeclaresConstructor_classDeclaration() async {
     Source source = addSource(r'''
 class A {
@@ -4043,6 +3975,17 @@
     verify([source]);
   }
 
+  @failingTest
+  test_mixinOfNonClass() async {
+    // TODO(brianwilkerson) Compare with MIXIN_WITH_NON_CLASS_SUPERCLASS.
+    Source source = addSource(r'''
+var A;
+class B extends Object mixin A {}''');
+    await computeAnalysisResult(source);
+    assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_NON_CLASS]);
+    verify([source]);
+  }
+
   test_mixinOfNonClass_class() async {
     Source source = addSource(r'''
 int A;
@@ -5019,6 +4962,16 @@
     verify([source]);
   }
 
+  @failingTest
+  test_objectCannotExtendAnotherClass() async {
+    Source source = addSource(r'''
+''');
+    await computeAnalysisResult(source);
+    assertErrors(
+        source, [CompileTimeErrorCode.OBJECT_CANNOT_EXTEND_ANOTHER_CLASS]);
+    verify([source]);
+  }
+
   test_optionalParameterInOperator_named() async {
     Source source = addSource(r'''
 class A {
@@ -5958,6 +5911,17 @@
     assertErrors(source, [CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION]);
   }
 
+  test_referencedBeforeDeclaration_hideInBlock_comment() async {
+    Source source = addSource(r'''
+main() {
+  /// [v] is a variable.
+  var v = 2;
+}
+print(x) {}''');
+    await computeAnalysisResult(source);
+    assertNoErrors(source);
+  }
+
   test_rethrowOutsideCatch() async {
     Source source = addSource(r'''
 f() {
@@ -6121,6 +6085,15 @@
     // no verify(), 'super.y' is not resolved
   }
 
+  @failingTest
+  test_superInitializerInObject() async {
+    Source source = addSource(r'''
+''');
+    await computeAnalysisResult(source);
+    assertErrors(source, [CompileTimeErrorCode.SUPER_INITIALIZER_IN_OBJECT]);
+    verify([source]);
+  }
+
   test_superInRedirectingConstructor_redirectionSuper() async {
     Source source = addSource(r'''
 class A {}
@@ -6615,6 +6588,58 @@
     verify([source]);
   }
 
+  @failingTest
+  test_yieldEachInNonGenerator_async() async {
+    // TODO(brianwilkerson) We are currently parsing the yield statement as a
+    // binary expression.
+    Source source = addSource(r'''
+f() async {
+  yield* 0;
+}''');
+    await computeAnalysisResult(source);
+    assertErrors(source, [CompileTimeErrorCode.YIELD_EACH_IN_NON_GENERATOR]);
+    verify([source]);
+  }
+
+  @failingTest
+  test_yieldEachInNonGenerator_sync() async {
+    // TODO(brianwilkerson) We are currently parsing the yield statement as a
+    // binary expression.
+    Source source = addSource(r'''
+f() {
+  yield* 0;
+}''');
+    await computeAnalysisResult(source);
+    assertErrors(source, [CompileTimeErrorCode.YIELD_IN_NON_GENERATOR]);
+    verify([source]);
+  }
+
+  @failingTest
+  test_yieldInNonGenerator_async() async {
+    // TODO(brianwilkerson) We are currently trying to parse the yield statement
+    // as a binary expression.
+    Source source = addSource(r'''
+f() async {
+  yield 0;
+}''');
+    await computeAnalysisResult(source);
+    assertErrors(source, [CompileTimeErrorCode.YIELD_IN_NON_GENERATOR]);
+    verify([source]);
+  }
+
+  @failingTest
+  test_yieldInNonGenerator_sync() async {
+    // TODO(brianwilkerson) We are currently trying to parse the yield statement
+    // as a binary expression.
+    Source source = addSource(r'''
+f() {
+  yield 0;
+}''');
+    await computeAnalysisResult(source);
+    assertErrors(source, [CompileTimeErrorCode.YIELD_EACH_IN_NON_GENERATOR]);
+    verify([source]);
+  }
+
   Future<Null> _check_constEvalThrowsException_binary_null(
       String expr, bool resolved) async {
     Source source = addSource("const C = $expr;");
diff --git a/pkg/analyzer/test/generated/error_suppression_kernel_test.dart b/pkg/analyzer/test/generated/error_suppression_kernel_test.dart
index 7babab5..87134ae 100644
--- a/pkg/analyzer/test/generated/error_suppression_kernel_test.dart
+++ b/pkg/analyzer/test/generated/error_suppression_kernel_test.dart
@@ -16,4 +16,122 @@
 class ErrorSuppressionTest_Kernel extends ErrorSuppressionTest_Driver {
   @override
   bool get enableKernelDriver => true;
+
+  @override
+  bool get previewDart2 => true;
+
+  @override
+  @failingTest
+  test_error_code_mismatch() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0;
+    //          1 errors of type CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, found 0
+    await super.test_error_code_mismatch();
+  }
+
+  @override
+  @failingTest
+  test_ignore_first() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, found 0
+    await super.test_ignore_first();
+  }
+
+  @override
+  @failingTest
+  test_ignore_first_trailing() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, found 0
+    await super.test_ignore_first_trailing();
+  }
+
+  @override
+  @failingTest
+  test_ignore_for_file() async {
+    // Expected 1 errors of type CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, found 0
+    await super.test_ignore_for_file();
+  }
+
+  @override
+  @failingTest
+  test_ignore_second() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0
+    await super.test_ignore_second();
+  }
+
+  @override
+  @failingTest
+  test_ignore_second_trailing() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0
+    await super.test_ignore_second_trailing();
+  }
+
+  @override
+  @failingTest
+  test_invalid_error_code() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0;
+    //          1 errors of type CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, found 0
+    await super.test_invalid_error_code();
+  }
+
+  @override
+  @failingTest
+  test_missing_error_codes() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t1 = #lib1::x in let ...
+    await super.test_missing_error_codes();
+  }
+
+  @override
+  @failingTest
+  test_missing_metadata_suffix() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0
+    await super.test_missing_metadata_suffix();
+  }
+
+  @override
+  @failingTest
+  test_multiple_comments() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0
+    await super.test_multiple_comments();
+  }
+
+  @override
+  @failingTest
+  test_multiple_ignores() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t2 = #lib2::x in let ...
+    await super.test_multiple_ignores();
+  }
+
+  @override
+  @failingTest
+  test_multiple_ignores_traling() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t3 = #lib3::x in let ...
+    await super.test_multiple_ignores_traling();
+  }
+
+  @override
+  @failingTest
+  test_multiple_ignores_whitespace_variant_1() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t4 = #lib4::x in let ...
+    await super.test_multiple_ignores_whitespace_variant_1();
+  }
+
+  @override
+  @failingTest
+  test_multiple_ignores_whitespace_variant_2() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t5 = #lib5::x in let ...
+    await super.test_multiple_ignores_whitespace_variant_2();
+  }
+
+  @override
+  @failingTest
+  test_multiple_ignores_whitespace_variant_3() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t6 = #lib6::x in let ...
+    await super.test_multiple_ignores_whitespace_variant_3();
+  }
+
+  @override
+  @failingTest
+  test_no_ignores() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0;
+    //          1 errors of type CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, found 0
+    await super.test_no_ignores();
+  }
 }
diff --git a/pkg/analyzer/test/generated/hint_code_kernel_test.dart b/pkg/analyzer/test/generated/hint_code_kernel_test.dart
index aaf7f2e..7bbdb16 100644
--- a/pkg/analyzer/test/generated/hint_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/hint_code_kernel_test.dart
@@ -18,17 +18,185 @@
   bool get enableKernelDriver => true;
 
   @override
+  bool get previewDart2 => true;
+
+  @failingTest
+  @override
+  test_abstractSuperMemberReference_getter() async {
+    // Expected 1 errors of type HintCode.ABSTRACT_SUPER_MEMBER_REFERENCE, found 0
+    return super.test_abstractSuperMemberReference_getter();
+  }
+
+  @failingTest
+  @override
+  test_abstractSuperMemberReference_method_invocation() async {
+    // Expected 1 errors of type HintCode.ABSTRACT_SUPER_MEMBER_REFERENCE, found 0
+    return super.test_abstractSuperMemberReference_method_invocation();
+  }
+
+  @failingTest
+  @override
+  test_abstractSuperMemberReference_method_reference() async {
+    // Expected 1 errors of type HintCode.ABSTRACT_SUPER_MEMBER_REFERENCE, found 0
+    return super.test_abstractSuperMemberReference_method_reference();
+  }
+
+  @failingTest
+  @override
+  test_argumentTypeNotAssignable_functionType() async {
+    // Expected 1 errors of type HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0
+    return super.test_argumentTypeNotAssignable_functionType();
+  }
+
+  @failingTest
+  @override
+  test_argumentTypeNotAssignable_type() async {
+    // Expected 1 errors of type HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0
+    return super.test_argumentTypeNotAssignable_type();
+  }
+
+  @failingTest
+  @override
+  test_deadCode_deadBlock_else() async {
+    // Expected 1 errors of type HintCode.DEAD_CODE, found 0
+    return super.test_deadCode_deadBlock_else();
+  }
+
+  @failingTest
+  @override
+  test_deadCode_deadBlock_else_nested() async {
+    // Expected 1 errors of type HintCode.DEAD_CODE, found 0
+    return super.test_deadCode_deadBlock_else_nested();
+  }
+
+  @failingTest
+  @override
+  test_deadCode_deadBlock_if() async {
+    // Expected 1 errors of type HintCode.DEAD_CODE, found 0
+    return super.test_deadCode_deadBlock_if();
+  }
+
+  @failingTest
+  @override
+  test_deadCode_deadBlock_if_nested() async {
+    // Expected 1 errors of type HintCode.DEAD_CODE, found 0
+    return super.test_deadCode_deadBlock_if_nested();
+  }
+
+  @failingTest
+  @override
+  test_deadCode_deadFinalStatementInCase() async {
+    // Expected 1 errors of type StaticWarningCode.CASE_BLOCK_NOT_TERMINATED, found 0
+    return super.test_deadCode_deadFinalStatementInCase();
+  }
+
+  @failingTest
+  @override
+  test_deprecatedAnnotationUse_Deprecated() async {
+    // Expected 1 errors of type HintCode.DEPRECATED_MEMBER_USE, found 0
+    return super.test_deprecatedAnnotationUse_Deprecated();
+  }
+
+  @override
   @failingTest
   test_deprecatedAnnotationUse_named() async {
     return super.test_deprecatedAnnotationUse_named();
   }
 
-  @override
   @failingTest
+  @override
   test_deprecatedAnnotationUse_positional() async {
     return super.test_deprecatedAnnotationUse_positional();
   }
 
+  @failingTest
+  @override
+  test_deprecatedFunction_class() async {
+    // Expected 1 errors of type HintCode.DEPRECATED_FUNCTION_CLASS_DECLARATION, found 0
+    return super.test_deprecatedFunction_class();
+  }
+
+  @failingTest
+  @override
+  test_deprecatedFunction_extends() async {
+    // Expected 1 errors of type HintCode.DEPRECATED_EXTENDS_FUNCTION, found 0;
+    //          1 errors of type StaticWarningCode.FUNCTION_WITHOUT_CALL, found 0
+    return super.test_deprecatedFunction_extends();
+  }
+
+  @failingTest
+  @override
+  test_deprecatedFunction_extends2() async {
+    // Expected 1 errors of type HintCode.DEPRECATED_FUNCTION_CLASS_DECLARATION, found 0;
+    //          1 errors of type HintCode.DEPRECATED_EXTENDS_FUNCTION, found 0
+    return super.test_deprecatedFunction_extends2();
+  }
+
+  @failingTest
+  @override
+  test_deprecatedFunction_mixin() async {
+    // Expected 1 errors of type HintCode.DEPRECATED_MIXIN_FUNCTION, found 0;
+    //          1 errors of type StaticWarningCode.FUNCTION_WITHOUT_CALL, found 0
+    return super.test_deprecatedFunction_mixin();
+  }
+
+  @failingTest
+  @override
+  test_deprecatedFunction_mixin2() async {
+    // Expected 1 errors of type HintCode.DEPRECATED_FUNCTION_CLASS_DECLARATION, found 0;
+    //          1 errors of type HintCode.DEPRECATED_MIXIN_FUNCTION, found 0
+    return super.test_deprecatedFunction_mixin2();
+  }
+
+  @failingTest
+  @override
+  test_divisionOptimization_propagatedType() async {
+    // Expected 1 errors of type HintCode.DIVISION_OPTIMIZATION, found 0
+    return super.test_divisionOptimization_propagatedType();
+  }
+
+  @failingTest
+  @override
+  test_duplicateImport3() async {
+    // Expected 0 errors of type HintCode.UNUSED_IMPORT, found 2 (18, 57)
+    return super.test_duplicateImport3();
+  }
+
+  @failingTest
+  @override
+  test_importDeferredLibraryWithLoadFunction() async {
+    // ad state: Expected element reference for analyzer offset 60; got one for kernel offset 65
+    return super.test_importDeferredLibraryWithLoadFunction();
+  }
+
+  @failingTest
+  @override
+  test_invalidAssignment_instanceVariable() async {
+    // Expected 1 errors of type HintCode.INVALID_ASSIGNMENT, found 0
+    return super.test_invalidAssignment_instanceVariable();
+  }
+
+  @failingTest
+  @override
+  test_invalidAssignment_localVariable() async {
+    // Expected 1 errors of type HintCode.INVALID_ASSIGNMENT, found 0
+    return super.test_invalidAssignment_localVariable();
+  }
+
+  @failingTest
+  @override
+  test_invalidAssignment_staticVariable() async {
+    // Expected 1 errors of type HintCode.INVALID_ASSIGNMENT, found 0
+    return super.test_invalidAssignment_staticVariable();
+  }
+
+  @failingTest
+  @override
+  test_invalidAssignment_variableDeclaration() async {
+    // UnimplementedError: Multiple field
+    return super.test_invalidAssignment_variableDeclaration();
+  }
+
   @override
   @failingTest
   test_invalidRequiredParam_on_named_parameter_with_default() async {
@@ -60,6 +228,69 @@
     return super.test_invalidRequiredParam_valid();
   }
 
+  @failingTest
+  @override
+  test_js_lib_OK() async {
+    // Bad state: Expected element reference for analyzer offset 51; got one for kernel offset 1
+    return super.test_js_lib_OK();
+  }
+
+  @failingTest
+  @override
+  test_missingJsLibAnnotation_class() async {
+    // Expected 1 errors of type HintCode.MISSING_JS_LIB_ANNOTATION, found 0;
+    //          0 errors of type HintCode.UNUSED_IMPORT, found 1 (21)
+    return super.test_missingJsLibAnnotation_class();
+  }
+
+  @failingTest
+  @override
+  test_missingJsLibAnnotation_externalField() async {
+    // Expected 1 errors of type ParserErrorCode.EXTERNAL_FIELD, found 0;
+    //          1 errors of type HintCode.MISSING_JS_LIB_ANNOTATION, found 0;
+    //          0 errors of type ParserErrorCode.EXTRANEOUS_MODIFIER, found 1 (36);
+    //          0 errors of type HintCode.UNUSED_IMPORT, found 1 (7)
+    return super.test_missingJsLibAnnotation_externalField();
+  }
+
+  @failingTest
+  @override
+  test_missingJsLibAnnotation_function() async {
+    // Expected 1 errors of type HintCode.MISSING_JS_LIB_ANNOTATION, found 0;
+    //          0 errors of type HintCode.UNUSED_IMPORT, found 1 (21)
+    return super.test_missingJsLibAnnotation_function();
+  }
+
+  @failingTest
+  @override
+  test_missingJsLibAnnotation_method() async {
+    // Expected 1 errors of type HintCode.MISSING_JS_LIB_ANNOTATION, found 0;
+    //          0 errors of type HintCode.UNUSED_IMPORT, found 1 (21)
+    return super.test_missingJsLibAnnotation_method();
+  }
+
+  @failingTest
+  @override
+  test_missingJsLibAnnotation_variable() async {
+    // Expected 1 errors of type HintCode.MISSING_JS_LIB_ANNOTATION, found 0;
+    //          0 errors of type HintCode.UNUSED_IMPORT, found 1 (7)
+    return super.test_missingJsLibAnnotation_variable();
+  }
+
+  @failingTest
+  @override
+  test_mustCallSuper() async {
+    // Expected 1 errors of type HintCode.MUST_CALL_SUPER, found 0
+    return super.test_mustCallSuper();
+  }
+
+  @failingTest
+  @override
+  test_mustCallSuper_indirect() async {
+    // Expected 1 errors of type HintCode.MUST_CALL_SUPER, found 0
+    return super.test_mustCallSuper_indirect();
+  }
+
   @override
   @failingTest
   test_required_constructor_param() async {
@@ -119,4 +350,133 @@
   test_required_typedef_function_param() async {
     return super.test_required_typedef_function_param();
   }
+
+  @failingTest
+  @override
+  test_strongMode_downCastCompositeHint() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_DOWN_CAST_COMPOSITE, found 0
+    return super.test_strongMode_downCastCompositeHint();
+  }
+
+  @failingTest
+  @override
+  test_strongMode_downCastCompositeWarn() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_DOWN_CAST_COMPOSITE, found 0
+    return super.test_strongMode_downCastCompositeWarn();
+  }
+
+  @failingTest
+  @override
+  test_undefinedGetter() async {
+    // Expected 1 errors of type HintCode.UNDEFINED_GETTER, found 0
+    return super.test_undefinedGetter();
+  }
+
+  @failingTest
+  @override
+  test_undefinedMethod() async {
+    // Expected 1 errors of type HintCode.UNDEFINED_METHOD, found 0
+    return super.test_undefinedMethod();
+  }
+
+  @failingTest
+  @override
+  test_undefinedMethod_assignmentExpression() async {
+    // Expected 1 errors of type HintCode.UNDEFINED_METHOD, found 0
+    return super.test_undefinedMethod_assignmentExpression();
+  }
+
+  @failingTest
+  @override
+  test_undefinedOperator_binaryExpression() async {
+    // Expected 1 errors of type HintCode.UNDEFINED_OPERATOR, found 0
+    return super.test_undefinedOperator_binaryExpression();
+  }
+
+  @failingTest
+  @override
+  test_undefinedOperator_indexBoth() async {
+    // Expected 1 errors of type HintCode.UNDEFINED_OPERATOR, found 0
+    return super.test_undefinedOperator_indexBoth();
+  }
+
+  @failingTest
+  @override
+  test_undefinedOperator_indexGetter() async {
+    // Expected 1 errors of type HintCode.UNDEFINED_OPERATOR, found 0
+    return super.test_undefinedOperator_indexGetter();
+  }
+
+  @failingTest
+  @override
+  test_undefinedOperator_indexSetter() async {
+    // Expected 1 errors of type HintCode.UNDEFINED_OPERATOR, found 0
+    return super.test_undefinedOperator_indexSetter();
+  }
+
+  @failingTest
+  @override
+  test_undefinedOperator_postfixExpression() async {
+    // Expected 1 errors of type HintCode.UNDEFINED_OPERATOR, found 0
+    return super.test_undefinedOperator_postfixExpression();
+  }
+
+  @failingTest
+  @override
+  test_undefinedOperator_prefixExpression() async {
+    // Expected 1 errors of type HintCode.UNDEFINED_OPERATOR, found 0
+    return super.test_undefinedOperator_prefixExpression();
+  }
+
+  @failingTest
+  @override
+  test_undefinedSetter() async {
+    // Expected 1 errors of type HintCode.UNDEFINED_SETTER, found 0
+    return super.test_undefinedSetter();
+  }
+
+  @failingTest
+  @override
+  test_unusedImport_as() async {
+    // Failed to resolve 2 nodes:
+    //   one (/test.dart : 53)
+    //   one (/test.dart : 58)
+    return super.test_unusedImport_as();
+  }
+
+  @failingTest
+  @override
+  test_unusedImport_inComment_libraryDirective() async {
+    // Expected 0 errors of type HintCode.UNUSED_IMPORT, found 1 (42)
+    return super.test_unusedImport_inComment_libraryDirective();
+  }
+
+  @failingTest
+  @override
+  test_unusedShownName() async {
+    // Expected 1 errors of type HintCode.UNUSED_SHOWN_NAME, found 0
+    return super.test_unusedShownName();
+  }
+
+  @failingTest
+  @override
+  test_unusedShownName_as() async {
+    // Expected 1 errors of type HintCode.UNUSED_SHOWN_NAME, found 0;
+    //          0 errors of type HintCode.UNUSED_IMPORT, found 1 (18)
+    return super.test_unusedShownName_as();
+  }
+
+  @failingTest
+  @override
+  test_unusedShownName_duplicates() async {
+    // Expected 2 errors of type HintCode.UNUSED_SHOWN_NAME, found 0
+    return super.test_unusedShownName_duplicates();
+  }
+
+  @failingTest
+  @override
+  test_unusedShownName_topLevelVariable() async {
+    // Expected 1 errors of type HintCode.UNUSED_SHOWN_NAME, found 0
+    return super.test_unusedShownName_topLevelVariable();
+  }
 }
diff --git a/pkg/analyzer/test/generated/hint_code_test.dart b/pkg/analyzer/test/generated/hint_code_test.dart
index 5f063e9..9a12693 100644
--- a/pkg/analyzer/test/generated/hint_code_test.dart
+++ b/pkg/analyzer/test/generated/hint_code_test.dart
@@ -38,10 +38,7 @@
 const _MustCallSuper mustCallSuper = const _MustCallSuper();
 const _Protected protected = const _Protected();
 const Required required = const Required();
-class Required {
-  final String reason;
-  const Required([this.reason]);
-}
+const _VisibleForTesting visibleForTesting = const _VisibleForTesting();
 
 class Immutable {
   final String reason;
@@ -62,9 +59,12 @@
 class _Protected {
   const _Protected();
 }
-class _Required {
+class Required {
   final String reason;
-  const _Required([this.reason]);
+  const Required([this.reason]);
+}
+class _VisibleForTesting {
+  const _VisibleForTesting();
 }
 '''
       ],
@@ -1923,6 +1923,141 @@
     verify([source]);
   }
 
+  test_invalidUseOfVisibleForTestingMember_method() async {
+    Source source = addNamedSource('/lib1.dart', r'''
+import 'package:meta/meta.dart';
+class A {
+  @visibleForTesting
+  void a(){ }
+}
+''');
+    Source source2 = addNamedSource('/lib2.dart', r'''
+import 'lib1.dart';
+
+class B {
+  void b() => new A().a();
+}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertErrors(source2, [HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER]);
+    verify([source, source2]);
+  }
+
+  test_invalidUseOfVisibleForTestingMember_method_OK() async {
+    Source source = addNamedSource('/lib1.dart', r'''
+import 'package:meta/meta.dart';
+class A {
+  @visibleForTesting
+  void a(){ }
+}
+''');
+    Source source2 = addNamedSource('/test/test1.dart', r'''
+import '../lib1.dart';
+
+class B {
+  void b() => new A().a();
+}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertNoErrors(source2);
+    verify([source, source2]);
+  }
+
+  test_invalidUseProtectedAndForTesting_method_OK() async {
+    Source source = addNamedSource('/lib1.dart', r'''
+import 'package:meta/meta.dart';
+class A {
+  @protected
+  @visibleForTesting
+  void a(){ }
+}
+''');
+    Source source2 = addNamedSource('/lib2.dart', r'''
+import 'lib1.dart';
+
+class B extends A {
+  void b() => new A().a();
+}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertNoErrors(source2);
+    verify([source, source2]);
+  }
+
+  test_invalidUseOfVisibleForTestingMember_propertyAccess() async {
+    Source source = addNamedSource('/lib1.dart', r'''
+import 'package:meta/meta.dart';
+class A {
+  @visibleForTesting
+  int get a => 7;
+
+  @visibleForTesting
+  set b(_) => 7;
+}
+''');
+    Source source2 = addNamedSource('/lib2.dart', r'''
+import 'lib1.dart';
+
+void main() {
+  new A().a;
+  new A().b = 6;
+}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertErrors(source2, [
+      HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER,
+      HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER
+    ]);
+    verify([source, source2]);
+  }
+
+  test_invalidUseOfVisibleForTestingMember_constructor() async {
+    Source source = addNamedSource('/lib1.dart', r'''
+import 'package:meta/meta.dart';
+class A {
+  int _x;
+
+  @visibleForTesting
+  A.forTesting(this._x);
+}
+''');
+    Source source2 = addNamedSource('/lib2.dart', r'''
+import 'lib1.dart';
+
+void main() {
+  new A.forTesting(0);
+}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertErrors(source2, [HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER]);
+    verify([source, source2]);
+  }
+
+  test_invalidUseOfVisibleForTestingMember_topLevelFunction() async {
+    Source source = addNamedSource('/lib1.dart', r'''
+import 'package:meta/meta.dart';
+
+@visibleForTesting
+int fn0() => 1;
+''');
+    Source source2 = addNamedSource('/lib2.dart', r'''
+import 'lib1.dart';
+
+void main() {
+  fn0();
+}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertErrors(source2, [HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER]);
+    verify([source, source2]);
+  }
+
   test_isDouble() async {
     AnalysisOptionsImpl options = new AnalysisOptionsImpl();
     options.dart2jsHint = true;
diff --git a/pkg/analyzer/test/generated/invalid_code_kernel_test.dart b/pkg/analyzer/test/generated/invalid_code_kernel_test.dart
index 750740e..cacac44 100644
--- a/pkg/analyzer/test/generated/invalid_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/invalid_code_kernel_test.dart
@@ -20,6 +20,9 @@
   @override
   bool get enableNewAnalysisDriver => true;
 
+  @override
+  bool get previewDart2 => true;
+
   @failingTest
   @override
   test_constructorAndMethodNameCollision() async {
diff --git a/pkg/analyzer/test/generated/non_error_resolver_kernel_test.dart b/pkg/analyzer/test/generated/non_error_resolver_kernel_test.dart
index c10d1c1..6b1c577 100644
--- a/pkg/analyzer/test/generated/non_error_resolver_kernel_test.dart
+++ b/pkg/analyzer/test/generated/non_error_resolver_kernel_test.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:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'non_error_resolver_driver_test.dart';
@@ -32,14 +31,7 @@
 
   @override
   @failingTest
-  @potentialAnalyzerProblem
-  test_abstractSuperMemberReference_superHasNoSuchMethod() async {
-    return super.test_abstractSuperMemberReference_superHasNoSuchMethod();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
+  @FastaProblem('https://github.com/dart-lang/sdk/issues/31625')
   test_ambiguousImport_showCombinator() async {
     return super.test_ambiguousImport_showCombinator();
   }
@@ -53,77 +45,70 @@
 
   @override
   @failingTest
-  @potentialAnalyzerProblem
-  test_async_flattened() async {
-    return super.test_async_flattened();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
+  @FastaProblem('https://github.com/dart-lang/sdk/issues/31604')
   test_commentReference_beforeConstructor() async {
     return super.test_commentReference_beforeConstructor();
   }
 
   @override
   @failingTest
-  @potentialAnalyzerProblem
+  @FastaProblem('https://github.com/dart-lang/sdk/issues/31604')
   test_commentReference_beforeEnum() async {
     return super.test_commentReference_beforeEnum();
   }
 
   @override
   @failingTest
-  @potentialAnalyzerProblem
+  @FastaProblem('https://github.com/dart-lang/sdk/issues/31604')
   test_commentReference_beforeFunction_blockBody() async {
     return super.test_commentReference_beforeFunction_blockBody();
   }
 
   @override
   @failingTest
-  @potentialAnalyzerProblem
+  @FastaProblem('https://github.com/dart-lang/sdk/issues/31604')
   test_commentReference_beforeFunction_expressionBody() async {
     return super.test_commentReference_beforeFunction_expressionBody();
   }
 
   @override
   @failingTest
-  @potentialAnalyzerProblem
+  @FastaProblem('https://github.com/dart-lang/sdk/issues/31604')
   test_commentReference_beforeFunctionTypeAlias() async {
     return super.test_commentReference_beforeFunctionTypeAlias();
   }
 
   @override
   @failingTest
-  @potentialAnalyzerProblem
+  @FastaProblem('https://github.com/dart-lang/sdk/issues/31604')
   test_commentReference_beforeGenericTypeAlias() async {
     return super.test_commentReference_beforeGenericTypeAlias();
   }
 
   @override
   @failingTest
-  @potentialAnalyzerProblem
+  @FastaProblem('https://github.com/dart-lang/sdk/issues/31604')
   test_commentReference_beforeGetter() async {
     return super.test_commentReference_beforeGetter();
   }
 
   @override
   @failingTest
-  @potentialAnalyzerProblem
+  @FastaProblem('https://github.com/dart-lang/sdk/issues/31604')
   test_commentReference_beforeMethod() async {
     return super.test_commentReference_beforeMethod();
   }
 
   @override
   @failingTest
-  @potentialAnalyzerProblem
+  @FastaProblem('https://github.com/dart-lang/sdk/issues/31604')
   test_commentReference_class() async {
     return super.test_commentReference_class();
   }
 
   @override
   @failingTest
-  @potentialAnalyzerProblem
+  @FastaProblem('https://github.com/dart-lang/sdk/issues/31604')
   test_commentReference_setter() async {
     return super.test_commentReference_setter();
   }
@@ -131,27 +116,6 @@
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_const_constructor_with_named_generic_parameter() async {
-    return super.test_const_constructor_with_named_generic_parameter();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_const_dynamic() async {
-    return super.test_const_dynamic();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_constConstructorWithNonConstSuper_redirectingFactory() async {
-    return super.test_constConstructorWithNonConstSuper_redirectingFactory();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
   test_constConstructorWithNonConstSuper_unresolved() async {
     return super.test_constConstructorWithNonConstSuper_unresolved();
   }
@@ -179,20 +143,6 @@
 
   @override
   @failingTest
-  @potentialAnalyzerProblem
-  test_constEval_propertyExtraction_methodStatic_targetType() async {
-    return super.test_constEval_propertyExtraction_methodStatic_targetType();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_constRedirectSkipsSupertype() async {
-    return super.test_constRedirectSkipsSupertype();
-  }
-
-  @override
-  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/28434')
   test_constructorDeclaration_scope_signature() async {
     return super.test_constructorDeclaration_scope_signature();
@@ -201,41 +151,6 @@
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_dynamicIdentifier() async {
-    return super.test_dynamicIdentifier();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_fieldFormalParameter_functionTyped_named() async {
-    return super.test_fieldFormalParameter_functionTyped_named();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_fieldFormalParameter_genericFunctionTyped() async {
-    return super.test_fieldFormalParameter_genericFunctionTyped();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_fieldFormalParameter_genericFunctionTyped_named() async {
-    return super.test_fieldFormalParameter_genericFunctionTyped_named();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_finalNotInitialized_functionTypedFieldFormal() async {
-    return super.test_finalNotInitialized_functionTypedFieldFormal();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
   test_finalNotInitialized_hasNativeClause_hasConstructor() async {
     return super.test_finalNotInitialized_hasNativeClause_hasConstructor();
   }
@@ -328,7 +243,7 @@
 
   @override
   @failingTest
-  @potentialAnalyzerProblem
+  @FastaProblem('https://github.com/dart-lang/sdk/issues/31641')
   test_invalidAnnotation_constantVariable_field() async {
     return super.test_invalidAnnotation_constantVariable_field();
   }
@@ -367,31 +282,6 @@
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_invocationOfNonFunction_dynamic() async {
-    // TODO(scheglov) This test fails only in checked mode.
-    fail('This test fails only in checked mode');
-    return super.test_invocationOfNonFunction_dynamic();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_invocationOfNonFunction_functionTypeTypeParameter() async {
-    return super.test_invocationOfNonFunction_functionTypeTypeParameter();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_invocationOfNonFunction_getter() async {
-    // TODO(scheglov) This test fails only in checked mode.
-    fail('This test fails only in checked mode');
-    return super.test_invocationOfNonFunction_getter();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
   test_loadLibraryDefined() async {
     return super.test_loadLibraryDefined();
   }
@@ -419,14 +309,14 @@
 
   @override
   @failingTest
-  @potentialAnalyzerProblem
+  @FastaProblem('https://github.com/dart-lang/sdk/issues/31628')
   test_nonConstCaseExpression_constField() async {
     return super.test_nonConstCaseExpression_constField();
   }
 
   @override
   @failingTest
-  @potentialAnalyzerProblem
+  @FastaProblem('https://github.com/dart-lang/sdk/issues/31627')
   test_nonConstMapKey_constField() async {
     return super.test_nonConstMapKey_constField();
   }
@@ -434,27 +324,6 @@
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_nonConstValueInInitializer_binary_dynamic() async {
-    return super.test_nonConstValueInInitializer_binary_dynamic();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_nonConstValueInInitializer_redirecting() async {
-    return super.test_nonConstValueInInitializer_redirecting();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_null_callMethod() async {
-    return super.test_null_callMethod();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
   test_prefixCollidesWithTopLevelMembers() async {
     return super.test_prefixCollidesWithTopLevelMembers();
   }
@@ -462,41 +331,6 @@
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_recursiveConstructorRedirect() async {
-    return super.test_recursiveConstructorRedirect();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_recursiveFactoryRedirect() async {
-    return super.test_recursiveFactoryRedirect();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_redirectToInvalidFunctionType() async {
-    return super.test_redirectToInvalidFunctionType();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_redirectToNonConstConstructor() async {
-    return super.test_redirectToNonConstConstructor();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_referencedBeforeDeclaration_cascade() async {
-    return super.test_referencedBeforeDeclaration_cascade();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
   test_returnOfInvalidType_typeParameter_18468() async {
     return super.test_returnOfInvalidType_typeParameter_18468();
   }
@@ -518,13 +352,6 @@
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_staticAccessToInstanceMember_method() async {
-    return super.test_staticAccessToInstanceMember_method();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
   test_typeType_class_prefixed() async {
     return super.test_typeType_class_prefixed();
   }
@@ -539,20 +366,6 @@
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_undefinedConstructorInInitializer_redirecting() async {
-    return super.test_undefinedConstructorInInitializer_redirecting();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_undefinedGetter_static_conditionalAccess() async {
-    return super.test_undefinedGetter_static_conditionalAccess();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
   test_undefinedIdentifier_synthetic_whenExpression() async {
     return super.test_undefinedIdentifier_synthetic_whenExpression();
   }
@@ -584,11 +397,4 @@
   test_undefinedSetter_importWithPrefix() async {
     return super.test_undefinedSetter_importWithPrefix();
   }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_undefinedSetter_static_conditionalAccess() async {
-    return super.test_undefinedSetter_static_conditionalAccess();
-  }
 }
diff --git a/pkg/analyzer/test/generated/non_hint_code_kernel_test.dart b/pkg/analyzer/test/generated/non_hint_code_kernel_test.dart
index 31f2266..9f45d2e 100644
--- a/pkg/analyzer/test/generated/non_hint_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/non_hint_code_kernel_test.dart
@@ -2,6 +2,8 @@
 // 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/dart/error/hint_codes.dart';
+import 'package:analyzer/src/generated/source.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'non_hint_code_driver_test.dart';
@@ -20,4 +22,87 @@
 class NonHintCodeTest_Kernel extends NonHintCodeTest_Driver {
   @override
   bool get enableKernelDriver => true;
+
+  @override
+  bool get previewDart2 => true;
+
+  @failingTest
+  @override
+  @potentialAnalyzerProblem
+  test_deadCode_deadBlock_if_debugConst_propertyAccessor() async {
+    // Appears to be an issue with resolution of import prefixes.
+    await super.test_deadCode_deadBlock_if_debugConst_propertyAccessor();
+  }
+
+  @failingTest
+  @override
+  @potentialAnalyzerProblem
+  test_deprecatedMemberUse_inDeprecatedLibrary() async {
+    // LibraryAnalyzer is not applying resolution data to annotations on
+    // directives.
+    await super.test_deprecatedMemberUse_inDeprecatedLibrary();
+  }
+
+  @failingTest
+  @override
+  @potentialAnalyzerProblem
+  test_duplicateImport_as() async {
+    // Expected 0 errors of type HintCode.UNUSED_IMPORT, found 1 (38)
+    // Appears to be an issue with resolution of import prefixes.
+    await super.test_duplicateImport_as();
+  }
+
+  @failingTest
+  @override
+  @potentialAnalyzerProblem
+  test_importDeferredLibraryWithLoadFunction() async {
+    // Appears to be an issue with resolution of import prefixes.
+    await super.test_importDeferredLibraryWithLoadFunction();
+  }
+
+  @override
+  test_unnecessaryCast_generics() async {
+    // dartbug.com/18953
+    // Overridden because type inference now produces more information and there
+    // should now be a hint, where there wasn't one before.
+    Source source = addSource(r'''
+import 'dart:async';
+Future<int> f() => new Future.value(0);
+void g(bool c) {
+  (c ? f(): new Future.value(0) as Future<int>).then((int value) {});
+}''');
+    await computeAnalysisResult(source);
+    assertErrors(source, [HintCode.UNNECESSARY_CAST]);
+    verify([source]);
+  }
+
+  @failingTest
+  @override
+  @potentialAnalyzerProblem
+  test_unusedImport_as_equalPrefixes() async {
+    await super.test_unusedImport_as_equalPrefixes();
+  }
+
+  @failingTest
+  @override
+  @potentialAnalyzerProblem
+  test_unusedImport_metadata() async {
+    await super.test_unusedImport_metadata();
+  }
+
+  @failingTest
+  @override
+  @potentialAnalyzerProblem
+  test_unusedImport_prefix_topLevelFunction() async {
+    // Appears to be an issue with resolution of import prefixes.
+    await super.test_unusedImport_prefix_topLevelFunction();
+  }
+
+  @failingTest
+  @override
+  @potentialAnalyzerProblem
+  test_unusedImport_prefix_topLevelFunction2() async {
+    // Appears to be an issue with resolution of import prefixes.
+    await super.test_unusedImport_prefix_topLevelFunction2();
+  }
 }
diff --git a/pkg/analyzer/test/generated/non_hint_code_test.dart b/pkg/analyzer/test/generated/non_hint_code_test.dart
index 40cc6b2..677da10 100644
--- a/pkg/analyzer/test/generated/non_hint_code_test.dart
+++ b/pkg/analyzer/test/generated/non_hint_code_test.dart
@@ -461,6 +461,23 @@
     verify([source]);
   }
 
+  test_missingReturn_alwaysThrows() async {
+    Source source = addSource(r'''
+import 'package:meta/meta.dart';
+
+@alwaysThrows
+void a() {
+  throw 'msg';
+}
+
+int f() {
+  a();
+}''');
+    await computeAnalysisResult(source);
+    assertNoErrors(source);
+    verify([source]);
+  }
+
   test_missingReturn_emptyFunctionBody() async {
     Source source = addSource(r'''
 abstract class A {
@@ -492,23 +509,6 @@
     verify([source]);
   }
 
-  test_missingReturn_alwaysThrows() async {
-    Source source = addSource(r'''
-import 'package:meta/meta.dart';
-
-@alwaysThrows
-void a() {
-  throw 'msg';
-}
-
-int f() {
-  a();
-}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
   test_nullAwareInCondition_for_noCondition() async {
     Source source = addSource(r'''
 m(x) {
diff --git a/pkg/analyzer/test/generated/parser_fasta_test.dart b/pkg/analyzer/test/generated/parser_fasta_test.dart
index 929c31b..1bc90f2 100644
--- a/pkg/analyzer/test/generated/parser_fasta_test.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_test.dart
@@ -1447,14 +1447,6 @@
 
   @override
   @failingTest
-  void test_positionalParameterOutsideGroup() {
-    // TODO(brianwilkerson) Wrong errors:
-    // Expected 1 errors of type ParserErrorCode.POSITIONAL_PARAMETER_OUTSIDE_GROUP, found 0
-    super.test_positionalParameterOutsideGroup();
-  }
-
-  @override
-  @failingTest
   void test_redirectingConstructorWithBody_named() {
     // TODO(brianwilkerson) Wrong errors:
     // Expected 1 errors of type ParserErrorCode.REDIRECTING_CONSTRUCTOR_WITH_BODY, found 0
@@ -1471,22 +1463,6 @@
 
   @override
   @failingTest
-  void test_redirectionInNonFactoryConstructor() {
-    // TODO(brianwilkerson) Does not recover.
-    //   type '_RedirectingFactoryBody' is not a subtype of type 'FunctionBody' of 'body' where
-    //   _RedirectingFactoryBody is from package:analyzer/src/fasta/ast_builder.dart
-    //   FunctionBody is from package:analyzer/dart/ast/ast.dart
-    //
-    //   package:analyzer/src/fasta/ast_builder.dart 1613:25                AstBuilder.endMethod
-    //   test/generated/parser_fasta_listener.dart 926:14                   ForwardingTestListener.endMethod
-    //   package:front_end/src/fasta/parser/parser.dart 2433:14             Parser.parseMethod
-    //   package:front_end/src/fasta/parser/parser.dart 2323:11             Parser.parseMember
-    //   test/generated/parser_fasta_test.dart 3766:39                      ParserProxy._run
-    super.test_redirectionInNonFactoryConstructor();
-  }
-
-  @override
-  @failingTest
   void test_setterInFunction_block() {
     // TODO(brianwilkerson) Wrong errors:
     // Expected 1 errors of type ParserErrorCode.SETTER_IN_FUNCTION, found 0
@@ -2707,13 +2683,6 @@
 
   @override
   @failingTest
-  void test_incompleteField_var() {
-    // TODO(brianwilkerson) reportUnrecoverableErrorWithToken
-    super.test_incompleteField_var();
-  }
-
-  @override
-  @failingTest
   void test_incompleteForEach() {
     // TODO(brianwilkerson) reportUnrecoverableErrorWithToken
     super.test_incompleteForEach();
@@ -2742,13 +2711,6 @@
 
   @override
   @failingTest
-  void test_incompleteTypeParameters() {
-    // TODO(brianwilkerson) reportUnrecoverableErrorWithToken
-    super.test_incompleteTypeParameters();
-  }
-
-  @override
-  @failingTest
   void test_isExpression_noType() {
     // TODO(brianwilkerson) reportUnrecoverableErrorWithToken
     super.test_isExpression_noType();
diff --git a/pkg/analyzer/test/generated/parser_test.dart b/pkg/analyzer/test/generated/parser_test.dart
index aec9b4c..62153fb 100644
--- a/pkg/analyzer/test/generated/parser_test.dart
+++ b/pkg/analyzer/test/generated/parser_test.dart
@@ -4461,11 +4461,15 @@
     createParser('(a, b = 0)');
     FormalParameterList list = parser.parseFormalParameterList();
     expectNotNullIfNoErrors(list);
-    listener.assertErrors([
-      expectedError(ParserErrorCode.POSITIONAL_PARAMETER_OUTSIDE_GROUP, 4, 1)
-    ]);
+    listener.assertErrors(usingFastaParser
+        ? [expectedError(ParserErrorCode.NAMED_PARAMETER_OUTSIDE_GROUP, 6, 1)]
+        : [
+            expectedError(
+                ParserErrorCode.POSITIONAL_PARAMETER_OUTSIDE_GROUP, 4, 1)
+          ]);
     expect(list.parameters[0].kind, ParameterKind.REQUIRED);
-    expect(list.parameters[1].kind, ParameterKind.POSITIONAL);
+    expect(list.parameters[1].kind,
+        usingFastaParser ? ParameterKind.NAMED : ParameterKind.POSITIONAL);
   }
 
   void test_redirectingConstructorWithBody_named() {
@@ -7233,7 +7237,9 @@
     expect(
         interpolation.elements[1], new isInstanceOf<InterpolationExpression>());
     InterpolationExpression element1 = interpolation.elements[1];
+    expect(element1.leftBracket.lexeme, '\$');
     expect(element1.expression, new isInstanceOf<SimpleIdentifier>());
+    expect(element1.rightBracket, isNull);
     expect(interpolation.elements[2], new isInstanceOf<InterpolationString>());
     InterpolationString element2 = interpolation.elements[2];
     expect(element2.value, '');
@@ -7252,6 +7258,10 @@
     expect(elements[2] is InterpolationString, isTrue);
     expect(elements[3] is InterpolationExpression, isTrue);
     expect(elements[4] is InterpolationString, isTrue);
+    expect((elements[1] as InterpolationExpression).leftBracket.lexeme, '\${');
+    expect((elements[1] as InterpolationExpression).rightBracket.lexeme, '}');
+    expect((elements[3] as InterpolationExpression).leftBracket.lexeme, '\$');
+    expect((elements[3] as InterpolationExpression).rightBracket, isNull);
   }
 
   void test_parseStringLiteral_multiline_encodedSpace() {
@@ -10308,6 +10318,34 @@
     expect(field.name.isSynthetic, isTrue);
   }
 
+  void test_incompleteField_type() {
+    CompilationUnit unit = parseCompilationUnit(r'''
+class C {
+  A
+}''', codes: [
+      ParserErrorCode.MISSING_IDENTIFIER,
+      ParserErrorCode.EXPECTED_TOKEN
+    ]);
+    NodeList<CompilationUnitMember> declarations = unit.declarations;
+    expect(declarations, hasLength(1));
+    CompilationUnitMember unitMember = declarations[0];
+    EngineTestCase.assertInstanceOf(
+        (obj) => obj is ClassDeclaration, ClassDeclaration, unitMember);
+    NodeList<ClassMember> members = (unitMember as ClassDeclaration).members;
+    expect(members, hasLength(1));
+    ClassMember classMember = members[0];
+    EngineTestCase.assertInstanceOf(
+        (obj) => obj is FieldDeclaration, FieldDeclaration, classMember);
+    VariableDeclarationList fieldList =
+        (classMember as FieldDeclaration).fields;
+    TypeName type = fieldList.type;
+    expect(type.name.name, 'A');
+    NodeList<VariableDeclaration> fields = fieldList.variables;
+    expect(fields, hasLength(1));
+    VariableDeclaration field = fields[0];
+    expect(field.name.isSynthetic, isTrue);
+  }
+
   void test_incompleteField_var() {
     CompilationUnit unit = parseCompilationUnit(r'''
 class C {
@@ -10433,7 +10471,24 @@
   void test_incompleteTypeParameters() {
     CompilationUnit unit = parseCompilationUnit(r'''
 class C<K {
-}''', codes: [ParserErrorCode.EXPECTED_TOKEN]);
+}''', errors: [expectedError(ParserErrorCode.EXPECTED_TOKEN, 10, 1)]);
+    // one class
+    List<CompilationUnitMember> declarations = unit.declarations;
+    expect(declarations, hasLength(1));
+    ClassDeclaration classDecl = declarations[0] as ClassDeclaration;
+    // validate the type parameters
+    TypeParameterList typeParameters = classDecl.typeParameters;
+    expect(typeParameters.typeParameters, hasLength(1));
+    // synthetic '>'
+    Token token = typeParameters.endToken;
+    expect(token.type, TokenType.GT);
+    expect(token.isSynthetic, isTrue);
+  }
+
+  void test_incompleteTypeParameters2() {
+    CompilationUnit unit = parseCompilationUnit(r'''
+class C<K extends L<T> {
+}''', errors: [expectedError(ParserErrorCode.EXPECTED_TOKEN, 23, 1)]);
     // one class
     List<CompilationUnitMember> declarations = unit.declarations;
     expect(declarations, hasLength(1));
@@ -10452,6 +10507,38 @@
         codes: [ParserErrorCode.MISSING_STAR_AFTER_SYNC]);
   }
 
+  void test_invalidTypeParameters() {
+    CompilationUnit unit = parseCompilationUnit(r'''
+class C {
+  G<int double> g;
+}''',
+        errors: usingFastaParser
+            ? [
+                expectedError(ParserErrorCode.EXPECTED_TOKEN, 18, 6),
+                expectedError(ParserErrorCode.EXTRANEOUS_MODIFIER, 18, 6)
+              ]
+            : [
+                expectedError(ParserErrorCode.EXPECTED_TOKEN, 18, 6),
+                expectedError(ParserErrorCode.EXPECTED_TOKEN, 18, 6),
+                expectedError(ParserErrorCode.EXPECTED_CLASS_MEMBER, 24, 1),
+                expectedError(ParserErrorCode.UNEXPECTED_TOKEN, 24, 1),
+                expectedError(
+                    ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE, 26, 1)
+              ]);
+    // one class
+    List<CompilationUnitMember> declarations = unit.declarations;
+    expect(declarations, hasLength(1));
+    ClassDeclaration classDecl = declarations[0] as ClassDeclaration;
+    // validate members
+    if (usingFastaParser) {
+      expect(classDecl.members, hasLength(1));
+      FieldDeclaration fields = classDecl.members.first;
+      expect(fields.fields.variables, hasLength(1));
+      VariableDeclaration field = fields.fields.variables.first;
+      expect(field.name.name, 'g');
+    }
+  }
+
   void test_isExpression_noType() {
     CompilationUnit unit = parseCompilationUnit(
         "class Bar<T extends Foo> {m(x){if (x is ) return;if (x is !)}}",
@@ -10781,6 +10868,25 @@
     expect(expression, new isInstanceOf<SimpleIdentifier>());
   }
 
+  void test_propertyAccess_missing_LHS_RHS() {
+    Expression result = parseExpression(".", codes: [
+      ParserErrorCode.MISSING_IDENTIFIER,
+      ParserErrorCode.MISSING_IDENTIFIER
+    ]);
+    if (usingFastaParser) {
+      PrefixedIdentifier expression = result;
+      expect(expression.prefix.isSynthetic, isTrue);
+      expect(expression.period.lexeme, '.');
+      expect(expression.identifier.isSynthetic, isTrue);
+    } else {
+      PropertyAccess expression = result;
+      SimpleIdentifier target = expression.target;
+      expect(target.isSynthetic, isTrue);
+      expect(expression.operator.lexeme, '.');
+      expect(expression.propertyName.isSynthetic, isTrue);
+    }
+  }
+
   void test_relationalExpression_missing_LHS() {
     IsExpression expression =
         parseExpression("is y", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
diff --git a/pkg/analyzer/test/generated/resolver_kernel_test.dart b/pkg/analyzer/test/generated/resolver_kernel_test.dart
index 1a87a9c..9d1b053 100644
--- a/pkg/analyzer/test/generated/resolver_kernel_test.dart
+++ b/pkg/analyzer/test/generated/resolver_kernel_test.dart
@@ -17,10 +17,398 @@
 class StrictModeTest_Kernel extends StrictModeTest_Driver {
   @override
   bool get enableKernelDriver => true;
+
+  @override
+  bool get previewDart2 => true;
+
+  @override
+  @failingTest
+  test_assert_is() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_OPERATOR, found 0
+    await super.test_assert_is();
+  }
+
+  @override
+  @failingTest
+  test_conditional_isNot() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_OPERATOR, found 0
+    await super.test_conditional_isNot();
+  }
+
+  @override
+  @failingTest
+  test_conditional_or_is() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_OPERATOR, found 0
+    await super.test_conditional_or_is();
+  }
+
+  @override
+  @failingTest
+  test_forEach() async {
+    // 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart': Failed assertion: line 441 pos 16: 'identical(combiner.arguments.positional[0], rhs)': is not true.
+    await super.test_forEach();
+  }
+
+  @override
+  @failingTest
+  test_if_isNot() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_OPERATOR, found 0
+    await super.test_if_isNot();
+  }
+
+  @override
+  @failingTest
+  test_if_isNot_abrupt() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_OPERATOR, found 0
+    await super.test_if_isNot_abrupt();
+  }
+
+  @override
+  @failingTest
+  test_if_or_is() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_OPERATOR, found 0
+    await super.test_if_or_is();
+  }
+
+  @override
+  @failingTest
+  test_localVar() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_OPERATOR, found 0
+    await super.test_localVar();
+  }
 }
 
 @reflectiveTest
 class TypePropagationTest_Kernel extends TypePropagationTest_Driver {
   @override
   bool get enableKernelDriver => true;
+
+  @override
+  bool get previewDart2 => true;
+
+  @override
+  @failingTest
+  test_as() async {
+    // Expected: same instance as InterfaceTypeImpl:<A>
+    await super.test_as();
+  }
+
+  @override
+  @failingTest
+  test_assert() async {
+    // Expected: same instance as InterfaceTypeImpl:<A>
+    await super.test_assert();
+  }
+
+  @override
+  @failingTest
+  test_assignment() async {
+    // Expected: InterfaceTypeImpl:<int>
+    await super.test_assignment();
+  }
+
+  @override
+  @failingTest
+  test_assignment_afterInitializer() async {
+    // Expected: InterfaceTypeImpl:<double>
+    await super.test_assignment_afterInitializer();
+  }
+
+  @override
+  @failingTest
+  test_assignment_throwExpression() async {
+    // Bad state: Expected element reference for analyzer offset 25; got one for kernel offset 21
+    await super.test_assignment_throwExpression();
+  }
+
+  @override
+  @failingTest
+  test_CanvasElement_getContext() async {
+    // NoSuchMethodError: The getter 'name' was called on null.
+    await super.test_CanvasElement_getContext();
+  }
+
+  @override
+  @failingTest
+  test_forEach() async {
+    // Expected: InterfaceTypeImpl:<String>
+    await super.test_forEach();
+  }
+
+  @override
+  @failingTest
+  test_forEach_async() async {
+    // Expected: InterfaceTypeImpl:<String>
+    await super.test_forEach_async();
+  }
+
+  @override
+  @failingTest
+  test_forEach_async_inheritedStream() async {
+    // Expected: InterfaceTypeImpl:<List<String>>
+    await super.test_forEach_async_inheritedStream();
+  }
+
+  @override
+  @failingTest
+  test_functionExpression_asInvocationArgument() async {
+    // Expected: InterfaceTypeImpl:<int>
+    await super.test_functionExpression_asInvocationArgument();
+  }
+
+  @override
+  @failingTest
+  test_functionExpression_asInvocationArgument_fromInferredInvocation() async {
+    // Expected: InterfaceTypeImpl:<int>
+    await super
+        .test_functionExpression_asInvocationArgument_fromInferredInvocation();
+  }
+
+  @override
+  @failingTest
+  test_functionExpression_asInvocationArgument_functionExpressionInvocation() async {
+    // Bad state: Expected a type for v at 43; got one for kernel offset 32
+    await super
+        .test_functionExpression_asInvocationArgument_functionExpressionInvocation();
+  }
+
+  @override
+  @failingTest
+  test_functionExpression_asInvocationArgument_notSubtypeOfStaticType() async {
+    // Expected 1 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0
+    await super
+        .test_functionExpression_asInvocationArgument_notSubtypeOfStaticType();
+  }
+
+  @override
+  @failingTest
+  test_functionExpression_asInvocationArgument_replaceIfMoreSpecific() async {
+    // Expected: InterfaceTypeImpl:<String>
+    await super
+        .test_functionExpression_asInvocationArgument_replaceIfMoreSpecific();
+  }
+
+  @override
+  @failingTest
+  test_Future_then() async {
+    // Expected: InterfaceTypeImpl:<int>
+    await super.test_Future_then();
+  }
+
+  @override
+  @failingTest
+  test_initializer() async {
+    // Expected: DynamicTypeImpl:<dynamic>
+    await super.test_initializer();
+  }
+
+  @override
+  @failingTest
+  test_initializer_dereference() async {
+    // Expected: InterfaceTypeImpl:<String>
+    await super.test_initializer_dereference();
+  }
+
+  @override
+  @failingTest
+  test_invocation_target_prefixed() async {
+    // Bad state: Expected element reference for analyzer offset 43; got one for kernel offset 50
+    await super.test_invocation_target_prefixed();
+  }
+
+  @override
+  @failingTest
+  test_is_conditional() async {
+    // Expected: same instance as InterfaceTypeImpl:<A>
+    await super.test_is_conditional();
+  }
+
+  @override
+  @failingTest
+  test_is_if() async {
+    // type 'ParenthesizedExpressionImpl' is not a subtype of type 'IsExpression' of 'isExpression' where
+    await super.test_is_if();
+  }
+
+  @override
+  @failingTest
+  test_is_if_logicalAnd() async {
+    // Expected: same instance as InterfaceTypeImpl:<A>
+    await super.test_is_if_logicalAnd();
+  }
+
+  @override
+  @failingTest
+  test_is_postConditional() async {
+    // Expected: same instance as InterfaceTypeImpl:<A>
+    await super.test_is_postConditional();
+  }
+
+  @override
+  @failingTest
+  test_is_postIf() async {
+    // Expected: same instance as InterfaceTypeImpl:<A>
+    await super.test_is_postIf();
+  }
+
+  @override
+  @failingTest
+  test_is_while() async {
+    // Expected: same instance as InterfaceTypeImpl:<A>
+    await super.test_is_while();
+  }
+
+  @override
+  @failingTest
+  test_isNot_conditional() async {
+    // Expected: same instance as InterfaceTypeImpl:<A>
+    await super.test_isNot_conditional();
+  }
+
+  @override
+  @failingTest
+  test_isNot_if() async {
+    // Expected: same instance as InterfaceTypeImpl:<A>
+    await super.test_isNot_if();
+  }
+
+  @override
+  @failingTest
+  test_isNot_if_logicalOr() async {
+    // Expected: same instance as InterfaceTypeImpl:<A>
+    await super.test_isNot_if_logicalOr();
+  }
+
+  @override
+  @failingTest
+  test_isNot_postConditional() async {
+    // Expected: same instance as InterfaceTypeImpl:<A>
+    await super.test_isNot_postConditional();
+  }
+
+  @override
+  @failingTest
+  test_isNot_postIf() async {
+    // Expected: same instance as InterfaceTypeImpl:<A>
+    await super.test_isNot_postIf();
+  }
+
+  @override
+  @failingTest
+  test_listLiteral_same() async {
+    // NoSuchMethodError: The getter 'element' was called on null.
+    await super.test_listLiteral_same();
+  }
+
+  @override
+  @failingTest
+  test_mapLiteral_different() async {
+    // NoSuchMethodError: The getter 'element' was called on null.
+    await super.test_mapLiteral_different();
+  }
+
+  @override
+  @failingTest
+  test_mapLiteral_same() async {
+    // NoSuchMethodError: The getter 'element' was called on null.
+    await super.test_mapLiteral_same();
+  }
+
+  @override
+  @failingTest
+  test_mergePropagatedTypes_afterIfThen_different() async {
+    // Expected: InterfaceTypeImpl:<String>
+    await super.test_mergePropagatedTypes_afterIfThen_different();
+  }
+
+  @override
+  @failingTest
+  test_mergePropagatedTypes_afterIfThen_same() async {
+    // Expected: InterfaceTypeImpl:<int>
+    await super.test_mergePropagatedTypes_afterIfThen_same();
+  }
+
+  @override
+  @failingTest
+  test_mergePropagatedTypes_afterIfThenElse_same() async {
+    // Expected: InterfaceTypeImpl:<int>
+    await super.test_mergePropagatedTypes_afterIfThenElse_same();
+  }
+
+  @override
+  @failingTest
+  test_mergePropagatedTypesAtJoinPoint_4() async {
+    // Expected: InterfaceTypeImpl:<int>
+    await super.test_mergePropagatedTypesAtJoinPoint_4();
+  }
+
+  @override
+  @failingTest
+  test_objectAccessInference_disabled_for_library_prefix() async {
+    // Bad state: Expected element reference for analyzer offset 43; got one for kernel offset 50
+    await super.test_objectAccessInference_disabled_for_library_prefix();
+  }
+
+  @override
+  @failingTest
+  test_objectAccessInference_enabled_for_cascades() async {
+    // Expected: DynamicTypeImpl:<dynamic>
+    await super.test_objectAccessInference_enabled_for_cascades();
+  }
+
+  @override
+  @failingTest
+  test_objectMethodInference_disabled_for_library_prefix() async {
+    // Bad state: Expected element reference for analyzer offset 43; got one for kernel offset 50
+    await super.test_objectMethodInference_disabled_for_library_prefix();
+  }
+
+  @override
+  @failingTest
+  test_objectMethodInference_enabled_for_cascades() async {
+    // Expected: DynamicTypeImpl:<dynamic>
+    await super.test_objectMethodInference_enabled_for_cascades();
+  }
+
+  @override
+  @failingTest
+  test_objectMethodOnDynamicExpression_doubleEquals() async {
+    // Expected: InterfaceTypeImpl:<bool>
+    await super.test_objectMethodOnDynamicExpression_doubleEquals();
+  }
+
+  @override
+  @failingTest
+  test_objectMethodOnDynamicExpression_hashCode() async {
+    // Expected: InterfaceTypeImpl:<int>
+    await super.test_objectMethodOnDynamicExpression_hashCode();
+  }
+
+  @override
+  @failingTest
+  test_objectMethodOnDynamicExpression_runtimeType() async {
+    // Expected: InterfaceTypeImpl:<Type>
+    await super.test_objectMethodOnDynamicExpression_runtimeType();
+  }
+
+  @override
+  @failingTest
+  test_objectMethodOnDynamicExpression_toString() async {
+    // Expected: InterfaceTypeImpl:<String>
+    await super.test_objectMethodOnDynamicExpression_toString();
+  }
+
+  @override
+  @failingTest
+  test_propagatedReturnType_localFunction() async {
+    // Expected: DynamicTypeImpl:<dynamic>
+    await super.test_propagatedReturnType_localFunction();
+  }
+
+  @override
+  @failingTest
+  test_query() async {
+    // NoSuchMethodError: The getter 'name' was called on null.
+    await super.test_query();
+  }
 }
diff --git a/pkg/analyzer/test/generated/resolver_test_case.dart b/pkg/analyzer/test/generated/resolver_test_case.dart
index 139df0c..49548e5 100644
--- a/pkg/analyzer/test/generated/resolver_test_case.dart
+++ b/pkg/analyzer/test/generated/resolver_test_case.dart
@@ -667,7 +667,9 @@
     options ??= defaultAnalysisOptions;
     if (enableNewAnalysisDriver) {
       if (previewDart2) {
-        (options as AnalysisOptionsImpl).useFastaParser = true;
+        (options as AnalysisOptionsImpl)
+          ..strongMode = true
+          ..useFastaParser = true;
       }
       DartSdk sdk = new MockSdk(resourceProvider: resourceProvider)
         ..context.analysisOptions = options;
diff --git a/pkg/analyzer/test/generated/static_type_analyzer_kernel_test.dart b/pkg/analyzer/test/generated/static_type_analyzer_kernel_test.dart
index 08a3bc0..5d997c0 100644
--- a/pkg/analyzer/test/generated/static_type_analyzer_kernel_test.dart
+++ b/pkg/analyzer/test/generated/static_type_analyzer_kernel_test.dart
@@ -16,4 +16,42 @@
 class StaticTypeAnalyzer2Test_Kernel extends StaticTypeAnalyzer2Test_Driver {
   @override
   bool get enableKernelDriver => true;
+
+  @override
+  bool get previewDart2 => true;
+
+  @override
+  @failingTest
+  test_FunctionExpressionInvocation_block() async {
+    // Bad state: No reference information for (() {return 1;})() at 21
+    await super.test_FunctionExpressionInvocation_block();
+  }
+
+  @override
+  @failingTest
+  test_FunctionExpressionInvocation_curried() async {
+    // Bad state: No reference information for f()() at 53
+    await super.test_FunctionExpressionInvocation_curried();
+  }
+
+  @override
+  @failingTest
+  test_FunctionExpressionInvocation_expression() async {
+    // Bad state: No reference information for (() => 1)() at 21
+    await super.test_FunctionExpressionInvocation_expression();
+  }
+
+  @override
+  @failingTest
+  test_MethodInvocation_nameType_parameter_propagatedType() async {
+    // Expected: DynamicTypeImpl:<dynamic>
+    await super.test_MethodInvocation_nameType_parameter_propagatedType();
+  }
+
+  @override
+  @failingTest
+  test_staticMethods_classTypeParameters_genericMethod() async {
+    // Expected: '(dynamic) → void'
+    await super.test_staticMethods_classTypeParameters_genericMethod();
+  }
 }
diff --git a/pkg/analyzer/test/generated/static_type_warning_code_kernel_test.dart b/pkg/analyzer/test/generated/static_type_warning_code_kernel_test.dart
index 61cafa2..7260957 100644
--- a/pkg/analyzer/test/generated/static_type_warning_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/static_type_warning_code_kernel_test.dart
@@ -23,6 +23,1308 @@
     extends StaticTypeWarningCodeTest_Driver {
   @override
   bool get enableKernelDriver => true;
+
+  @override
+  bool get previewDart2 => true;
+
+  @override
+  @failingTest
+  test_ambiguousImport_function() async {
+    // Bad state: No reference information for f at 53
+    await super.test_ambiguousImport_function();
+  }
+
+  @override
+  @failingTest
+  test_assert_message_suppresses_type_promotion() async {
+    // Bad state: No reference information for () {x = new C(); return 'msg';}() at 89
+    await super.test_assert_message_suppresses_type_promotion();
+  }
+
+  @override
+  @failingTest
+  test_await_flattened() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0
+    await super.test_await_flattened();
+  }
+
+  @override
+  @failingTest
+  test_await_simple() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0
+    await super.test_await_simple();
+  }
+
+  @override
+  @failingTest
+  test_awaitForIn_declaredVariableWrongType() async {
+    // Expected 1 errors of type StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE, found 0
+    await super.test_awaitForIn_declaredVariableWrongType();
+  }
+
+  @override
+  @failingTest
+  test_awaitForIn_existingVariableWrongType() async {
+    // Expected 1 errors of type StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE, found 0
+    await super.test_awaitForIn_existingVariableWrongType();
+  }
+
+  @override
+  @failingTest
+  test_awaitForIn_notStream() async {
+    // Expected 1 errors of type StaticTypeWarningCode.FOR_IN_OF_INVALID_TYPE, found 0
+    await super.test_awaitForIn_notStream();
+  }
+
+  @override
+  @failingTest
+  test_bug21912() async {
+    // Expected 2 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0
+    await super.test_bug21912();
+  }
+
+  @override
+  @failingTest
+  test_expectedOneListTypeArgument() async {
+    // Bad state: Found 1 argument types for 2 type arguments
+    await super.test_expectedOneListTypeArgument();
+  }
+
+  @override
+  @failingTest
+  test_expectedTwoMapTypeArguments_one() async {
+    // Bad state: Found 2 argument types for 1 type arguments
+    await super.test_expectedTwoMapTypeArguments_one();
+  }
+
+  @override
+  @failingTest
+  test_expectedTwoMapTypeArguments_three() async {
+    // Bad state: Found 2 argument types for 3 type arguments
+    await super.test_expectedTwoMapTypeArguments_three();
+  }
+
+  @override
+  @failingTest
+  test_forIn_declaredVariableWrongType() async {
+    // Expected 1 errors of type StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE, found 0
+    await super.test_forIn_declaredVariableWrongType();
+  }
+
+  @override
+  @failingTest
+  test_forIn_existingVariableWrongType() async {
+    // Expected 1 errors of type StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE, found 0
+    await super.test_forIn_existingVariableWrongType();
+  }
+
+  @override
+  @failingTest
+  test_forIn_notIterable() async {
+    // Expected 1 errors of type StaticTypeWarningCode.FOR_IN_OF_INVALID_TYPE, found 0
+    await super.test_forIn_notIterable();
+  }
+
+  @override
+  @failingTest
+  test_forIn_typeBoundBad() async {
+    // Expected 1 errors of type StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE, found 0
+    await super.test_forIn_typeBoundBad();
+  }
+
+  @override
+  @failingTest
+  test_illegalAsyncGeneratorReturnType_function_nonStream() async {
+    // Expected 1 errors of type StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE, found 0
+    await super.test_illegalAsyncGeneratorReturnType_function_nonStream();
+  }
+
+  @override
+  @failingTest
+  test_illegalAsyncGeneratorReturnType_function_subtypeOfStream() async {
+    // Expected 1 errors of type StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE, found 0
+    await super.test_illegalAsyncGeneratorReturnType_function_subtypeOfStream();
+  }
+
+  @override
+  @failingTest
+  test_illegalAsyncGeneratorReturnType_method_nonStream() async {
+    // Expected 1 errors of type StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE, found 0
+    await super.test_illegalAsyncGeneratorReturnType_method_nonStream();
+  }
+
+  @override
+  @failingTest
+  test_illegalAsyncGeneratorReturnType_method_subtypeOfStream() async {
+    // Expected 1 errors of type StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE, found 0
+    await super.test_illegalAsyncGeneratorReturnType_method_subtypeOfStream();
+  }
+
+  @override
+  @failingTest
+  test_illegalAsyncReturnType_function_nonFuture() async {
+    // Expected 1 errors of type StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE, found 0
+    await super.test_illegalAsyncReturnType_function_nonFuture();
+  }
+
+  @override
+  @failingTest
+  test_illegalAsyncReturnType_function_subtypeOfFuture() async {
+    // Expected 1 errors of type StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE, found 0
+    await super.test_illegalAsyncReturnType_function_subtypeOfFuture();
+  }
+
+  @override
+  @failingTest
+  test_illegalAsyncReturnType_method_nonFuture() async {
+    // Expected 1 errors of type StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE, found 0
+    await super.test_illegalAsyncReturnType_method_nonFuture();
+  }
+
+  @override
+  @failingTest
+  test_illegalAsyncReturnType_method_subtypeOfFuture() async {
+    // Expected 1 errors of type StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE, found 0
+    await super.test_illegalAsyncReturnType_method_subtypeOfFuture();
+  }
+
+  @override
+  @failingTest
+  test_illegalSyncGeneratorReturnType_function_nonIterator() async {
+    // Expected 1 errors of type StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE, found 0
+    await super.test_illegalSyncGeneratorReturnType_function_nonIterator();
+  }
+
+  @override
+  @failingTest
+  test_illegalSyncGeneratorReturnType_function_subclassOfIterator() async {
+    // Expected 1 errors of type StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE, found 0
+    await super
+        .test_illegalSyncGeneratorReturnType_function_subclassOfIterator();
+  }
+
+  @override
+  @failingTest
+  test_illegalSyncGeneratorReturnType_method_nonIterator() async {
+    // Expected 1 errors of type StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE, found 0
+    await super.test_illegalSyncGeneratorReturnType_method_nonIterator();
+  }
+
+  @override
+  @failingTest
+  test_illegalSyncGeneratorReturnType_method_subclassOfIterator() async {
+    // Expected 1 errors of type StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE, found 0
+    await super.test_illegalSyncGeneratorReturnType_method_subclassOfIterator();
+  }
+
+  @override
+  @failingTest
+  test_inconsistentMethodInheritance_paramCount() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE, found 0
+    await super.test_inconsistentMethodInheritance_paramCount();
+  }
+
+  @override
+  @failingTest
+  test_inconsistentMethodInheritance_paramType() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE, found 0
+    await super.test_inconsistentMethodInheritance_paramType();
+  }
+
+  @override
+  @failingTest
+  test_inconsistentMethodInheritance_returnType() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE, found 0
+    await super.test_inconsistentMethodInheritance_returnType();
+  }
+
+  @override
+  @failingTest
+  test_instanceAccessToStaticMember_method_invocation() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER, found 0
+    await super.test_instanceAccessToStaticMember_method_invocation();
+  }
+
+  @override
+  @failingTest
+  test_instanceAccessToStaticMember_method_reference() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER, found 0
+    await super.test_instanceAccessToStaticMember_method_reference();
+  }
+
+  @override
+  @failingTest
+  test_instanceAccessToStaticMember_propertyAccess_field() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER, found 0
+    await super.test_instanceAccessToStaticMember_propertyAccess_field();
+  }
+
+  @override
+  @failingTest
+  test_instanceAccessToStaticMember_propertyAccess_getter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER, found 0
+    await super.test_instanceAccessToStaticMember_propertyAccess_getter();
+  }
+
+  @override
+  @failingTest
+  test_instanceAccessToStaticMember_propertyAccess_setter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER, found 0
+    await super.test_instanceAccessToStaticMember_propertyAccess_setter();
+  }
+
+  @override
+  @failingTest
+  test_invalidAssignment_compoundAssignment() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0
+    await super.test_invalidAssignment_compoundAssignment();
+  }
+
+  @override
+  @failingTest
+  test_invalidAssignment_defaultValue_named() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t1 = 0 in let ...
+    await super.test_invalidAssignment_defaultValue_named();
+  }
+
+  @override
+  @failingTest
+  test_invalidAssignment_defaultValue_optional() async {
+    // UnimplementedError: kernel: (Let) let final dynamic #t2 = 0 in let ...
+    await super.test_invalidAssignment_defaultValue_optional();
+  }
+
+  @override
+  @failingTest
+  test_invalidAssignment_dynamic() async {
+    // Bad state: No reference information for dynamic at 11
+    await super.test_invalidAssignment_dynamic();
+  }
+
+  @override
+  @failingTest
+  test_invalidAssignment_functionExpressionInvocation() async {
+    // Bad state: No reference information for (() => 5)() at 22
+    await super.test_invalidAssignment_functionExpressionInvocation();
+  }
+
+  @override
+  @failingTest
+  test_invalidAssignment_ifNullAssignment() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0
+    await super.test_invalidAssignment_ifNullAssignment();
+  }
+
+  @override
+  @failingTest
+  test_invalidAssignment_instanceVariable() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0
+    await super.test_invalidAssignment_instanceVariable();
+  }
+
+  @override
+  @failingTest
+  test_invalidAssignment_localVariable() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0
+    await super.test_invalidAssignment_localVariable();
+  }
+
+  @override
+  @failingTest
+  test_invalidAssignment_regressionInIssue18468Fix() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0
+    await super.test_invalidAssignment_regressionInIssue18468Fix();
+  }
+
+  @override
+  @failingTest
+  test_invalidAssignment_staticVariable() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0
+    await super.test_invalidAssignment_staticVariable();
+  }
+
+  @override
+  @failingTest
+  test_invalidAssignment_topLevelVariableDeclaration() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0
+    await super.test_invalidAssignment_topLevelVariableDeclaration();
+  }
+
+  @override
+  @failingTest
+  test_invalidAssignment_typeParameter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0
+    await super.test_invalidAssignment_typeParameter();
+  }
+
+  @override
+  @failingTest
+  test_invalidAssignment_variableDeclaration() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVALID_ASSIGNMENT, found 0
+    await super.test_invalidAssignment_variableDeclaration();
+  }
+
+  @override
+  @failingTest
+  test_invocationOfNonFunction_class() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION, found 0
+    await super.test_invocationOfNonFunction_class();
+  }
+
+  @override
+  @failingTest
+  test_invocationOfNonFunction_localGenericFunction() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION, found 0
+    await super.test_invocationOfNonFunction_localGenericFunction();
+  }
+
+  @override
+  @failingTest
+  test_invocationOfNonFunction_localObject() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION, found 0
+    await super.test_invocationOfNonFunction_localObject();
+  }
+
+  @override
+  @failingTest
+  test_invocationOfNonFunction_localVariable() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION, found 0
+    await super.test_invocationOfNonFunction_localVariable();
+  }
+
+  @override
+  @failingTest
+  test_invocationOfNonFunction_ordinaryInvocation() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION, found 0
+    await super.test_invocationOfNonFunction_ordinaryInvocation();
+  }
+
+  @override
+  @failingTest
+  test_invocationOfNonFunction_staticInvocation() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION, found 0
+    await super.test_invocationOfNonFunction_staticInvocation();
+  }
+
+  @override
+  @failingTest
+  test_invocationOfNonFunction_superExpression() async {
+    // Expected 1 errors of type StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION, found 0
+    await super.test_invocationOfNonFunction_superExpression();
+  }
+
+  @override
+  @failingTest
+  test_invocationOfNonFunctionExpression_literal() async {
+    // Bad state: Expected a type for 5 at 10; got one for kernel offset 9
+    await super.test_invocationOfNonFunctionExpression_literal();
+  }
+
+  @override
+  @failingTest
+  test_nonBoolCondition_conditional() async {
+    // Expected 1 errors of type StaticTypeWarningCode.NON_BOOL_CONDITION, found 0
+    await super.test_nonBoolCondition_conditional();
+  }
+
+  @override
+  @failingTest
+  test_nonBoolCondition_do() async {
+    // Expected 1 errors of type StaticTypeWarningCode.NON_BOOL_CONDITION, found 0
+    await super.test_nonBoolCondition_do();
+  }
+
+  @override
+  @failingTest
+  test_nonBoolCondition_for() async {
+    // Expected 1 errors of type StaticTypeWarningCode.NON_BOOL_CONDITION, found 0
+    await super.test_nonBoolCondition_for();
+  }
+
+  @override
+  @failingTest
+  test_nonBoolCondition_if() async {
+    // Expected 1 errors of type StaticTypeWarningCode.NON_BOOL_CONDITION, found 0
+    await super.test_nonBoolCondition_if();
+  }
+
+  @override
+  @failingTest
+  test_nonBoolCondition_while() async {
+    // Expected 1 errors of type StaticTypeWarningCode.NON_BOOL_CONDITION, found 0
+    await super.test_nonBoolCondition_while();
+  }
+
+  @override
+  @failingTest
+  test_nonBoolExpression_functionType() async {
+    // Expected 1 errors of type StaticTypeWarningCode.NON_BOOL_EXPRESSION, found 0
+    await super.test_nonBoolExpression_functionType();
+  }
+
+  @override
+  @failingTest
+  test_nonBoolExpression_interfaceType() async {
+    // Expected 1 errors of type StaticTypeWarningCode.NON_BOOL_EXPRESSION, found 0
+    await super.test_nonBoolExpression_interfaceType();
+  }
+
+  @override
+  @failingTest
+  test_nonBoolNegationExpression() async {
+    // Expected 1 errors of type StaticTypeWarningCode.NON_BOOL_NEGATION_EXPRESSION, found 0
+    await super.test_nonBoolNegationExpression();
+  }
+
+  @override
+  @failingTest
+  test_nonBoolOperand_and_left() async {
+    // Expected 1 errors of type StaticTypeWarningCode.NON_BOOL_OPERAND, found 0
+    await super.test_nonBoolOperand_and_left();
+  }
+
+  @override
+  @failingTest
+  test_nonBoolOperand_and_right() async {
+    // Expected 1 errors of type StaticTypeWarningCode.NON_BOOL_OPERAND, found 0
+    await super.test_nonBoolOperand_and_right();
+  }
+
+  @override
+  @failingTest
+  test_nonBoolOperand_or_left() async {
+    // Expected 1 errors of type StaticTypeWarningCode.NON_BOOL_OPERAND, found 0
+    await super.test_nonBoolOperand_or_left();
+  }
+
+  @override
+  @failingTest
+  test_nonBoolOperand_or_right() async {
+    // Expected 1 errors of type StaticTypeWarningCode.NON_BOOL_OPERAND, found 0
+    await super.test_nonBoolOperand_or_right();
+  }
+
+  @override
+  @failingTest
+  test_nonTypeAsTypeArgument_notAType() async {
+    // Expected 1 errors of type StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT, found 0
+    await super.test_nonTypeAsTypeArgument_notAType();
+  }
+
+  @override
+  @failingTest
+  test_nonTypeAsTypeArgument_undefinedIdentifier() async {
+    // Expected 1 errors of type StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT, found 0
+    await super.test_nonTypeAsTypeArgument_undefinedIdentifier();
+  }
+
+  @override
+  @failingTest
+  test_returnOfInvalidType_async_future_int_mismatches_future_string() async {
+    // Expected 1 errors of type StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, found 0
+    await super
+        .test_returnOfInvalidType_async_future_int_mismatches_future_string();
+  }
+
+  @override
+  @failingTest
+  test_returnOfInvalidType_async_future_int_mismatches_int() async {
+    // Expected 1 errors of type StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, found 0;
+    //          1 errors of type StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE, found 0
+    await super.test_returnOfInvalidType_async_future_int_mismatches_int();
+  }
+
+  @override
+  @failingTest
+  test_returnOfInvalidType_expressionFunctionBody_function() async {
+    // Expected 1 errors of type StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, found 0
+    await super.test_returnOfInvalidType_expressionFunctionBody_function();
+  }
+
+  @override
+  @failingTest
+  test_returnOfInvalidType_expressionFunctionBody_getter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, found 0
+    await super.test_returnOfInvalidType_expressionFunctionBody_getter();
+  }
+
+  @override
+  @failingTest
+  test_returnOfInvalidType_expressionFunctionBody_localFunction() async {
+    // Expected 1 errors of type StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, found 0
+    await super.test_returnOfInvalidType_expressionFunctionBody_localFunction();
+  }
+
+  @override
+  @failingTest
+  test_returnOfInvalidType_expressionFunctionBody_method() async {
+    // Expected 1 errors of type StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, found 0
+    await super.test_returnOfInvalidType_expressionFunctionBody_method();
+  }
+
+  @override
+  @failingTest
+  test_returnOfInvalidType_function() async {
+    // Expected 1 errors of type StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, found 0
+    await super.test_returnOfInvalidType_function();
+  }
+
+  @override
+  @failingTest
+  test_returnOfInvalidType_getter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, found 0
+    await super.test_returnOfInvalidType_getter();
+  }
+
+  @override
+  @failingTest
+  test_returnOfInvalidType_localFunction() async {
+    // Expected 1 errors of type StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, found 0
+    await super.test_returnOfInvalidType_localFunction();
+  }
+
+  @override
+  @failingTest
+  test_returnOfInvalidType_method() async {
+    // Expected 1 errors of type StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, found 0
+    await super.test_returnOfInvalidType_method();
+  }
+
+  @override
+  @failingTest
+  test_returnOfInvalidType_void() async {
+    // Expected 1 errors of type StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, found 0
+    await super.test_returnOfInvalidType_void();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_classTypeAlias() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_classTypeAlias();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_extends() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_extends();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_extends_regressionInIssue18468Fix() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super
+        .test_typeArgumentNotMatchingBounds_extends_regressionInIssue18468Fix();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_fieldFormalParameter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_fieldFormalParameter();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_functionReturnType() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_functionReturnType();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_functionTypeAlias() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_functionTypeAlias();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_functionTypedFormalParameter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super
+        .test_typeArgumentNotMatchingBounds_functionTypedFormalParameter();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_implements() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_implements();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_is() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_is();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_methodInvocation_localFunction() async {
+    // 'package:analyzer/src/fasta/resolution_applier.dart': Failed assertion: line 236 pos 18: 'typeParameter.bound == null': is not true.
+    await super
+        .test_typeArgumentNotMatchingBounds_methodInvocation_localFunction();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_methodInvocation_method() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_methodInvocation_method();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_methodInvocation_topLevelFunction() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super
+        .test_typeArgumentNotMatchingBounds_methodInvocation_topLevelFunction();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_methodReturnType() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_methodReturnType();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_new() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_new();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_new_superTypeOfUpperBound() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_new_superTypeOfUpperBound();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_parameter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_parameter();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_redirectingConstructor() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0;
+    //          1 errors of type StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE, found 0
+    await super.test_typeArgumentNotMatchingBounds_redirectingConstructor();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_typeArgumentList() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_typeArgumentList();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_typeParameter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_typeParameter();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_variableDeclaration() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_variableDeclaration();
+  }
+
+  @override
+  @failingTest
+  test_typeArgumentNotMatchingBounds_with() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, found 0
+    await super.test_typeArgumentNotMatchingBounds_with();
+  }
+
+  @override
+  @failingTest
+  test_typeParameterSupertypeOfItsBound() async {
+    // Expected 1 errors of type StaticTypeWarningCode.TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND, found 0
+    await super.test_typeParameterSupertypeOfItsBound();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_booleanAnd_useInRight_accessedInClosureRight_mutated() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super
+        .test_typePromotion_booleanAnd_useInRight_accessedInClosureRight_mutated();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_booleanAnd_useInRight_mutatedInLeft() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_typePromotion_booleanAnd_useInRight_mutatedInLeft();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_booleanAnd_useInRight_mutatedInRight() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_typePromotion_booleanAnd_useInRight_mutatedInRight();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_conditional_useInThen_accessedInClosure_hasAssignment_after() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super
+        .test_typePromotion_conditional_useInThen_accessedInClosure_hasAssignment_after();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_conditional_useInThen_accessedInClosure_hasAssignment_before() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super
+        .test_typePromotion_conditional_useInThen_accessedInClosure_hasAssignment_before();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_conditional_useInThen_hasAssignment() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_typePromotion_conditional_useInThen_hasAssignment();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_if_accessedInClosure_hasAssignment() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_typePromotion_if_accessedInClosure_hasAssignment();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_if_and_right_hasAssignment() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_typePromotion_if_and_right_hasAssignment();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_if_extends_notMoreSpecific_dynamic() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_typePromotion_if_extends_notMoreSpecific_dynamic();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_if_extends_notMoreSpecific_notMoreSpecificTypeArg() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super
+        .test_typePromotion_if_extends_notMoreSpecific_notMoreSpecificTypeArg();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_if_hasAssignment_after() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_typePromotion_if_hasAssignment_after();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_if_hasAssignment_before() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_typePromotion_if_hasAssignment_before();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_if_hasAssignment_inClosure_anonymous_after() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_typePromotion_if_hasAssignment_inClosure_anonymous_after();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_if_hasAssignment_inClosure_anonymous_before() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super
+        .test_typePromotion_if_hasAssignment_inClosure_anonymous_before();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_if_hasAssignment_inClosure_function_after() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_typePromotion_if_hasAssignment_inClosure_function_after();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_if_hasAssignment_inClosure_function_before() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_typePromotion_if_hasAssignment_inClosure_function_before();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_if_implements_notMoreSpecific_dynamic() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_typePromotion_if_implements_notMoreSpecific_dynamic();
+  }
+
+  @override
+  @failingTest
+  test_typePromotion_if_with_notMoreSpecific_dynamic() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_typePromotion_if_with_notMoreSpecific_dynamic();
+  }
+
+  @override
+  @failingTest
+  test_undefinedFunction() async {
+    // Bad state: No reference information for g at 13
+    await super.test_undefinedFunction();
+  }
+
+  @override
+  @failingTest
+  test_undefinedFunction_inCatch() async {
+    // Bad state: No reference information for g at 39
+    await super.test_undefinedFunction_inCatch();
+  }
+
+  @override
+  @failingTest
+  test_undefinedFunction_inImportedLib() async {
+    // Bad state: No reference information for f at 40
+    await super.test_undefinedFunction_inImportedLib();
+  }
+
+  @override
+  @failingTest
+  test_undefinedGetter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_undefinedGetter();
+  }
+
+  @override
+  @failingTest
+  test_undefinedGetter_generic_function_call() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_undefinedGetter_generic_function_call();
+  }
+
+  @override
+  @failingTest
+  test_undefinedGetter_object_call() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_undefinedGetter_object_call();
+  }
+
+  @override
+  @failingTest
+  test_undefinedGetter_proxy_annotation_fakeProxy() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_undefinedGetter_proxy_annotation_fakeProxy();
+  }
+
+  @override
+  @failingTest
+  test_undefinedGetter_static() async {
+    // Bad state: No reference information for A at 19
+    await super.test_undefinedGetter_static();
+  }
+
+  @override
+  @failingTest
+  test_undefinedGetter_typeLiteral_cascadeTarget() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_undefinedGetter_typeLiteral_cascadeTarget();
+  }
+
+  @override
+  @failingTest
+  test_undefinedGetter_typeLiteral_conditionalAccess() async {
+    // Bad state: No reference information for A at 18
+    await super.test_undefinedGetter_typeLiteral_conditionalAccess();
+  }
+
+  @override
+  @failingTest
+  test_undefinedGetter_void() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 0
+    await super.test_undefinedGetter_void();
+  }
+
+  @override
+  @failingTest
+  test_undefinedGetter_wrongNumberOfTypeArguments_tooLittle() async {
+    // AnalysisException: Element mismatch in /test.dart at main(A<dynamic, dynamic> a) → dynamic
+    await super.test_undefinedGetter_wrongNumberOfTypeArguments_tooLittle();
+  }
+
+  @override
+  @failingTest
+  test_undefinedGetter_wrongNumberOfTypeArguments_tooMany() async {
+    // AnalysisException: Element mismatch in /test.dart at main(A<dynamic> a) → dynamic
+    await super.test_undefinedGetter_wrongNumberOfTypeArguments_tooMany();
+  }
+
+  @override
+  @failingTest
+  test_undefinedGetter_wrongOfTypeArgument() async {
+    // Expected 1 errors of type StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT, found 0
+    await super.test_undefinedGetter_wrongOfTypeArgument();
+  }
+
+  @override
+  @failingTest
+  test_undefinedMethod() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0
+    await super.test_undefinedMethod();
+  }
+
+  @override
+  @failingTest
+  test_undefinedMethod_assignmentExpression() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0
+    await super.test_undefinedMethod_assignmentExpression();
+  }
+
+  @override
+  @failingTest
+  test_undefinedMethod_generic_function_call() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0
+    await super.test_undefinedMethod_generic_function_call();
+  }
+
+  @override
+  @failingTest
+  test_undefinedMethod_ignoreTypePropagation() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0
+    await super.test_undefinedMethod_ignoreTypePropagation();
+  }
+
+  @override
+  @failingTest
+  test_undefinedMethod_leastUpperBoundWithNull() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0
+    await super.test_undefinedMethod_leastUpperBoundWithNull();
+  }
+
+  @override
+  @failingTest
+  test_undefinedMethod_object_call() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0
+    await super.test_undefinedMethod_object_call();
+  }
+
+  @override
+  @failingTest
+  test_undefinedMethod_ofNull() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0
+    await super.test_undefinedMethod_ofNull();
+  }
+
+  @override
+  @failingTest
+  test_undefinedMethod_private() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0
+    await super.test_undefinedMethod_private();
+  }
+
+  @override
+  @failingTest
+  test_undefinedMethod_proxy_annotation_fakeProxy() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0
+    await super.test_undefinedMethod_proxy_annotation_fakeProxy();
+  }
+
+  @override
+  @failingTest
+  test_undefinedMethod_typeLiteral_cascadeTarget() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0
+    await super.test_undefinedMethod_typeLiteral_cascadeTarget();
+  }
+
+  @override
+  @failingTest
+  test_undefinedMethod_typeLiteral_conditionalAccess() async {
+    // Bad state: No reference information for A at 18
+    await super.test_undefinedMethod_typeLiteral_conditionalAccess();
+  }
+
+  @override
+  @failingTest
+  test_undefinedMethodWithConstructor() async {
+    // Bad state: No reference information for C at 35
+    await super.test_undefinedMethodWithConstructor();
+  }
+
+  @override
+  @failingTest
+  test_undefinedOperator_indexBoth() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_OPERATOR, found 0
+    await super.test_undefinedOperator_indexBoth();
+  }
+
+  @override
+  @failingTest
+  test_undefinedOperator_indexGetter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_OPERATOR, found 0
+    await super.test_undefinedOperator_indexGetter();
+  }
+
+  @override
+  @failingTest
+  test_undefinedOperator_indexSetter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_OPERATOR, found 0
+    await super.test_undefinedOperator_indexSetter();
+  }
+
+  @override
+  @failingTest
+  test_undefinedOperator_plus() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_OPERATOR, found 0
+    await super.test_undefinedOperator_plus();
+  }
+
+  @override
+  @failingTest
+  test_undefinedOperator_postfixExpression() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_OPERATOR, found 0
+    await super.test_undefinedOperator_postfixExpression();
+  }
+
+  @override
+  @failingTest
+  test_undefinedOperator_prefixExpression() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_OPERATOR, found 0
+    await super.test_undefinedOperator_prefixExpression();
+  }
+
+  @override
+  @failingTest
+  test_undefinedSetter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_SETTER, found 0
+    await super.test_undefinedSetter();
+  }
+
+  @override
+  @failingTest
+  test_undefinedSetter_static() async {
+    // Bad state: No reference information for A at 17
+    await super.test_undefinedSetter_static();
+  }
+
+  @override
+  @failingTest
+  test_undefinedSetter_typeLiteral_cascadeTarget() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_SETTER, found 0
+    await super.test_undefinedSetter_typeLiteral_cascadeTarget();
+  }
+
+  @override
+  @failingTest
+  test_undefinedSetter_void() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_SETTER, found 0
+    await super.test_undefinedSetter_void();
+  }
+
+  @override
+  @failingTest
+  test_undefinedSuperGetter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_SUPER_GETTER, found 0
+    await super.test_undefinedSuperGetter();
+  }
+
+  @override
+  @failingTest
+  test_undefinedSuperMethod() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_SUPER_METHOD, found 0
+    await super.test_undefinedSuperMethod();
+  }
+
+  @override
+  @failingTest
+  test_undefinedSuperOperator_binaryExpression() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR, found 0
+    await super.test_undefinedSuperOperator_binaryExpression();
+  }
+
+  @override
+  @failingTest
+  test_undefinedSuperOperator_indexBoth() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR, found 0
+    await super.test_undefinedSuperOperator_indexBoth();
+  }
+
+  @override
+  @failingTest
+  test_undefinedSuperOperator_indexGetter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR, found 0
+    await super.test_undefinedSuperOperator_indexGetter();
+  }
+
+  @override
+  @failingTest
+  test_undefinedSuperOperator_indexSetter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR, found 0
+    await super.test_undefinedSuperOperator_indexSetter();
+  }
+
+  @override
+  @failingTest
+  test_undefinedSuperSetter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_SUPER_SETTER, found 0
+    await super.test_undefinedSuperSetter();
+  }
+
+  @override
+  @failingTest
+  test_unqualifiedReferenceToNonLocalStaticMember_getter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER, found 0
+    await super.test_unqualifiedReferenceToNonLocalStaticMember_getter();
+  }
+
+  @override
+  @failingTest
+  test_unqualifiedReferenceToNonLocalStaticMember_getter_invokeTarget() async {
+    // Bad state: No reference information for foo at 72
+    await super
+        .test_unqualifiedReferenceToNonLocalStaticMember_getter_invokeTarget();
+  }
+
+  @override
+  @failingTest
+  test_unqualifiedReferenceToNonLocalStaticMember_method() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER, found 0
+    await super.test_unqualifiedReferenceToNonLocalStaticMember_method();
+  }
+
+  @override
+  @failingTest
+  test_unqualifiedReferenceToNonLocalStaticMember_setter() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER, found 0
+    await super.test_unqualifiedReferenceToNonLocalStaticMember_setter();
+  }
+
+  @override
+  @failingTest
+  test_wrongNumberOfTypeArguments_classAlias() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_wrongNumberOfTypeArguments_classAlias();
+  }
+
+  @override
+  @failingTest
+  test_wrongNumberOfTypeArguments_tooFew() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_wrongNumberOfTypeArguments_tooFew();
+  }
+
+  @override
+  @failingTest
+  test_wrongNumberOfTypeArguments_tooMany() async {
+    // AnalysisException: Element mismatch in /test.dart at /test.dart
+    await super.test_wrongNumberOfTypeArguments_tooMany();
+  }
+
+  @override
+  @failingTest
+  test_wrongNumberOfTypeArguments_typeTest_tooFew() async {
+    // Bad state: Found 2 argument types for 1 type arguments
+    await super.test_wrongNumberOfTypeArguments_typeTest_tooFew();
+  }
+
+  @override
+  @failingTest
+  test_wrongNumberOfTypeArguments_typeTest_tooMany() async {
+    // Bad state: Found 1 argument types for 2 type arguments
+    await super.test_wrongNumberOfTypeArguments_typeTest_tooMany();
+  }
+
+  @override
+  @failingTest
+  test_yield_async_to_basic_type() async {
+    // Expected 1 errors of type StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, found 0;
+    //          1 errors of type StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE, found 0
+    await super.test_yield_async_to_basic_type();
+  }
+
+  @override
+  @failingTest
+  test_yield_async_to_iterable() async {
+    // Expected 1 errors of type StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, found 0;
+    //          1 errors of type StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE, found 0
+    await super.test_yield_async_to_iterable();
+  }
+
+  @override
+  @failingTest
+  test_yield_async_to_mistyped_stream() async {
+    // Expected 1 errors of type StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, found 0
+    await super.test_yield_async_to_mistyped_stream();
+  }
+
+  @override
+  @failingTest
+  test_yield_each_async_non_stream() async {
+    // Expected 1 errors of type StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, found 0
+    await super.test_yield_each_async_non_stream();
+  }
+
+  @override
+  @failingTest
+  test_yield_each_async_to_mistyped_stream() async {
+    // Expected 1 errors of type StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, found 0
+    await super.test_yield_each_async_to_mistyped_stream();
+  }
+
+  @override
+  @failingTest
+  test_yield_each_sync_non_iterable() async {
+    // Expected 1 errors of type StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, found 0
+    await super.test_yield_each_sync_non_iterable();
+  }
+
+  @override
+  @failingTest
+  test_yield_each_sync_to_mistyped_iterable() async {
+    // Expected 1 errors of type StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, found 0
+    await super.test_yield_each_sync_to_mistyped_iterable();
+  }
+
+  @override
+  @failingTest
+  test_yield_sync_to_basic_type() async {
+    // Expected 1 errors of type StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, found 0;
+    //          1 errors of type StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE, found 0
+    await super.test_yield_sync_to_basic_type();
+  }
+
+  @override
+  @failingTest
+  test_yield_sync_to_mistyped_iterable() async {
+    // Expected 1 errors of type StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, found 0
+    await super.test_yield_sync_to_mistyped_iterable();
+  }
+
+  @override
+  @failingTest
+  test_yield_sync_to_stream() async {
+    // Expected 1 errors of type StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, found 0;
+    //          1 errors of type StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE, found 0
+    await super.test_yield_sync_to_stream();
+  }
 }
 
 @reflectiveTest
@@ -30,4 +1332,14 @@
     extends StrongModeStaticTypeWarningCodeTest_Driver {
   @override
   bool get enableKernelDriver => true;
+
+  @override
+  bool get previewDart2 => true;
+
+  @override
+  @failingTest
+  test_genericMethodWrongNumberOfTypeArguments() async {
+    // Bad state: Found 0 argument types for 1 type arguments
+    await super.test_genericMethodWrongNumberOfTypeArguments();
+  }
 }
diff --git a/pkg/analyzer/test/generated/static_warning_code_kernel_test.dart b/pkg/analyzer/test/generated/static_warning_code_kernel_test.dart
index 0875808..aa9081d 100644
--- a/pkg/analyzer/test/generated/static_warning_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/static_warning_code_kernel_test.dart
@@ -376,71 +376,71 @@
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_assignmentToFinal_localVariable() async {
-    return super.test_assignmentToFinal_localVariable();
+  test_assignmentToFinalLocal_localVariable() async {
+    return super.test_assignmentToFinalLocal_localVariable();
   }
 
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_assignmentToFinal_localVariable_plusEq() async {
-    return super.test_assignmentToFinal_localVariable_plusEq();
+  test_assignmentToFinalLocal_localVariable_plusEq() async {
+    return super.test_assignmentToFinalLocal_localVariable_plusEq();
   }
 
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_assignmentToFinal_parameter() async {
-    return super.test_assignmentToFinal_parameter();
+  test_assignmentToFinalLocal_parameter() async {
+    return super.test_assignmentToFinalLocal_parameter();
   }
 
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_assignmentToFinal_postfixMinusMinus() async {
-    return super.test_assignmentToFinal_postfixMinusMinus();
+  test_assignmentToFinalLocal_postfixMinusMinus() async {
+    return super.test_assignmentToFinalLocal_postfixMinusMinus();
   }
 
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_assignmentToFinal_postfixPlusPlus() async {
-    return super.test_assignmentToFinal_postfixPlusPlus();
+  test_assignmentToFinalLocal_postfixPlusPlus() async {
+    return super.test_assignmentToFinalLocal_postfixPlusPlus();
   }
 
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_assignmentToFinal_prefixMinusMinus() async {
-    return super.test_assignmentToFinal_prefixMinusMinus();
+  test_assignmentToFinalLocal_prefixMinusMinus() async {
+    return super.test_assignmentToFinalLocal_prefixMinusMinus();
   }
 
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_assignmentToFinal_prefixPlusPlus() async {
-    return super.test_assignmentToFinal_prefixPlusPlus();
+  test_assignmentToFinalLocal_prefixPlusPlus() async {
+    return super.test_assignmentToFinalLocal_prefixPlusPlus();
   }
 
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_assignmentToFinal_suffixMinusMinus() async {
-    return super.test_assignmentToFinal_suffixMinusMinus();
+  test_assignmentToFinalLocal_suffixMinusMinus() async {
+    return super.test_assignmentToFinalLocal_suffixMinusMinus();
   }
 
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_assignmentToFinal_suffixPlusPlus() async {
-    return super.test_assignmentToFinal_suffixPlusPlus();
+  test_assignmentToFinalLocal_suffixPlusPlus() async {
+    return super.test_assignmentToFinalLocal_suffixPlusPlus();
   }
 
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_assignmentToFinal_topLevelVariable() async {
-    return super.test_assignmentToFinal_topLevelVariable();
+  test_assignmentToFinalLocal_topLevelVariable() async {
+    return super.test_assignmentToFinalLocal_topLevelVariable();
   }
 
   @override
@@ -1740,27 +1740,6 @@
   @override
   @failingTest
   @potentialAnalyzerProblem
-  test_typeAnnotationGenericFunctionParameter_localFunction() async {
-    return super.test_typeAnnotationGenericFunctionParameter_localFunction();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_typeAnnotationGenericFunctionParameter_method() async {
-    return super.test_typeAnnotationGenericFunctionParameter_method();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
-  test_typeAnnotationGenericFunctionParameter_topLevelFunction() async {
-    return super.test_typeAnnotationGenericFunctionParameter_topLevelFunction();
-  }
-
-  @override
-  @failingTest
-  @potentialAnalyzerProblem
   test_typeParameterReferencedByStatic_field() async {
     return super.test_typeParameterReferencedByStatic_field();
   }
diff --git a/pkg/analyzer/test/generated/static_warning_code_test.dart b/pkg/analyzer/test/generated/static_warning_code_test.dart
index ae7719f..5454994 100644
--- a/pkg/analyzer/test/generated/static_warning_code_test.dart
+++ b/pkg/analyzer/test/generated/static_warning_code_test.dart
@@ -716,110 +716,110 @@
     verify([source]);
   }
 
-  test_assignmentToFinal_localVariable() async {
+  test_assignmentToFinalLocal_localVariable() async {
     Source source = addSource(r'''
 f() {
   final x = 0;
   x = 1;
 }''');
     await computeAnalysisResult(source);
-    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
+    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL]);
     verify([source]);
   }
 
-  test_assignmentToFinal_localVariable_plusEq() async {
+  test_assignmentToFinalLocal_localVariable_plusEq() async {
     Source source = addSource(r'''
 f() {
   final x = 0;
   x += 1;
 }''');
     await computeAnalysisResult(source);
-    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
+    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL]);
     verify([source]);
   }
 
-  test_assignmentToFinal_parameter() async {
+  test_assignmentToFinalLocal_parameter() async {
     Source source = addSource(r'''
 f(final x) {
   x = 1;
 }''');
     await computeAnalysisResult(source);
-    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
+    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL]);
     verify([source]);
   }
 
-  test_assignmentToFinal_postfixMinusMinus() async {
+  test_assignmentToFinalLocal_postfixMinusMinus() async {
     Source source = addSource(r'''
 f() {
   final x = 0;
   x--;
 }''');
     await computeAnalysisResult(source);
-    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
+    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL]);
     verify([source]);
   }
 
-  test_assignmentToFinal_postfixPlusPlus() async {
+  test_assignmentToFinalLocal_postfixPlusPlus() async {
     Source source = addSource(r'''
 f() {
   final x = 0;
   x++;
 }''');
     await computeAnalysisResult(source);
-    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
+    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL]);
     verify([source]);
   }
 
-  test_assignmentToFinal_prefixMinusMinus() async {
+  test_assignmentToFinalLocal_prefixMinusMinus() async {
     Source source = addSource(r'''
 f() {
   final x = 0;
   --x;
 }''');
     await computeAnalysisResult(source);
-    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
+    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL]);
     verify([source]);
   }
 
-  test_assignmentToFinal_prefixPlusPlus() async {
+  test_assignmentToFinalLocal_prefixPlusPlus() async {
     Source source = addSource(r'''
 f() {
   final x = 0;
   ++x;
 }''');
     await computeAnalysisResult(source);
-    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
+    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL]);
     verify([source]);
   }
 
-  test_assignmentToFinal_suffixMinusMinus() async {
+  test_assignmentToFinalLocal_suffixMinusMinus() async {
     Source source = addSource(r'''
 f() {
   final x = 0;
   x--;
 }''');
     await computeAnalysisResult(source);
-    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
+    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL]);
     verify([source]);
   }
 
-  test_assignmentToFinal_suffixPlusPlus() async {
+  test_assignmentToFinalLocal_suffixPlusPlus() async {
     Source source = addSource(r'''
 f() {
   final x = 0;
   x++;
 }''');
     await computeAnalysisResult(source);
-    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
+    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL]);
     verify([source]);
   }
 
-  test_assignmentToFinal_topLevelVariable() async {
+  test_assignmentToFinalLocal_topLevelVariable() async {
     Source source = addSource(r'''
 final x = 0;
 f() { x = 1; }''');
     await computeAnalysisResult(source);
-    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
+    assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL]);
     verify([source]);
   }
 
@@ -3389,45 +3389,6 @@
     ]);
   }
 
-  test_typeAnnotationGenericFunctionParameter_localFunction() async {
-    Source source = addSource(r'''
-class A {
-  void method() {
-    T local<T>(Object t) {
-      return (t is T) ? t : null;
-    }
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(
-        source, [StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER]);
-    verify([source]);
-  }
-
-  test_typeAnnotationGenericFunctionParameter_method() async {
-    Source source = addSource(r'''
-class A {
-  T method<T>(Object t) {
-    return (t is T) ? t : null;
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(
-        source, [StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER]);
-    verify([source]);
-  }
-
-  test_typeAnnotationGenericFunctionParameter_topLevelFunction() async {
-    Source source = addSource(r'''
-T function<T>(Object t) {
-  return (t is T) ? t : null;
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(
-        source, [StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER]);
-    verify([source]);
-  }
-
   test_typeParameterReferencedByStatic_field() async {
     Source source = addSource(r'''
 class A<K> {
diff --git a/pkg/analyzer/test/generated/strong_mode_kernel_test.dart b/pkg/analyzer/test/generated/strong_mode_kernel_test.dart
index a0a5a93..8112f42 100644
--- a/pkg/analyzer/test/generated/strong_mode_kernel_test.dart
+++ b/pkg/analyzer/test/generated/strong_mode_kernel_test.dart
@@ -2,6 +2,7 @@
 // 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:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'strong_mode_test.dart';
@@ -30,6 +31,334 @@
 
   @override
   bool get enableNewAnalysisDriver => true;
+
+  @override
+  bool get previewDart2 => true;
+
+  @override
+  @failingTest
+  test_async_star_method_propagation() async {
+    // Bad state: No type information for Stream at 124
+    await super.test_async_star_method_propagation();
+  }
+
+  @override
+  @failingTest
+  test_async_star_propagation() async {
+    // Bad state: No type information for Stream at 105
+    await super.test_async_star_propagation();
+  }
+
+  @override
+  @failingTest
+  test_constrainedByBounds2() async {
+    // Expected: InterfaceTypeImpl:<int>
+    await super.test_constrainedByBounds2();
+  }
+
+  @override
+  @failingTest
+  test_constrainedByBounds3() async {
+    // Expected: InterfaceTypeImpl:<int>
+    await super.test_constrainedByBounds3();
+  }
+
+  @override
+  @failingTest
+  test_constrainedByBounds4() async {
+    // Bad state: Expected a type for 4 at 119; got one for kernel offset 118
+    await super.test_constrainedByBounds4();
+  }
+
+  @override
+  @failingTest
+  test_constrainedByBounds5() async {
+    // Bad state: Expected a type for 4 at 119; got one for kernel offset 118
+    await super.test_constrainedByBounds5();
+  }
+
+  @override
+  @failingTest
+  test_covarianceChecks() async {
+    // NoSuchMethodError: The method 'toList' was called on null.
+    await super.test_covarianceChecks();
+  }
+
+  @override
+  @failingTest
+  test_covarianceChecks_genericMethods() async {
+    // NoSuchMethodError: The method 'toList' was called on null.
+    await super.test_covarianceChecks_genericMethods();
+  }
+
+  @override
+  @failingTest
+  test_covarianceChecks_returnFunction() async {
+    // AnalysisException: Element mismatch in /test.dart at class C<T>
+    await super.test_covarianceChecks_returnFunction();
+  }
+
+  @override
+  @failingTest
+  test_covarianceChecks_superclass() async {
+    // NoSuchMethodError: The method 'toList' was called on null.
+    await super.test_covarianceChecks_superclass();
+  }
+
+  @override
+  @failingTest
+  test_functionLiteral_assignment_typedArguments() async {
+    // Expected: InterfaceTypeImpl:<String>
+    await super.test_functionLiteral_assignment_typedArguments();
+  }
+
+  @override
+  @failingTest
+  test_functionLiteral_assignment_unTypedArguments() async {
+    // Expected: InterfaceTypeImpl:<String>
+    await super.test_functionLiteral_assignment_unTypedArguments();
+  }
+
+  @override
+  @failingTest
+  test_functionLiteral_functionExpressionInvocation_typedArguments() async {
+    // Bad state: Expected a type for null at 154; got one for kernel offset 142
+    await super
+        .test_functionLiteral_functionExpressionInvocation_typedArguments();
+  }
+
+  @override
+  @failingTest
+  test_functionLiteral_functionExpressionInvocation_unTypedArguments() async {
+    // Bad state: Expected a type for null at 150; got one for kernel offset 142
+    await super
+        .test_functionLiteral_functionExpressionInvocation_unTypedArguments();
+  }
+
+  @override
+  @failingTest
+  test_functionLiteral_functionInvocation_typedArguments() async {
+    // Expected: InterfaceTypeImpl:<String>
+    await super.test_functionLiteral_functionInvocation_typedArguments();
+  }
+
+  @override
+  @failingTest
+  test_functionLiteral_functionInvocation_unTypedArguments() async {
+    // Expected: InterfaceTypeImpl:<String>
+    await super.test_functionLiteral_functionInvocation_unTypedArguments();
+  }
+
+  @override
+  @failingTest
+  test_functionLiteral_methodInvocation_typedArguments() async {
+    // Expected: InterfaceTypeImpl:<String>
+    await super.test_functionLiteral_methodInvocation_typedArguments();
+  }
+
+  @override
+  @failingTest
+  test_functionLiteral_methodInvocation_unTypedArguments() async {
+    // Expected: InterfaceTypeImpl:<String>
+    await super.test_functionLiteral_methodInvocation_unTypedArguments();
+  }
+
+  @override
+  @failingTest
+  test_futureOr_downwards8() async {
+    // type 'BottomTypeImpl' is not a subtype of type 'InterfaceType' in type cast where
+    await super.test_futureOr_downwards8();
+  }
+
+  @override
+  @failingTest
+  test_futureOr_methods2() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0
+    await super.test_futureOr_methods2();
+  }
+
+  @override
+  @failingTest
+  test_futureOr_methods3() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0
+    await super.test_futureOr_methods3();
+  }
+
+  @override
+  @failingTest
+  test_futureOr_methods4() async {
+    // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0
+    await super.test_futureOr_methods4();
+  }
+
+  @override
+  @failingTest
+  test_futureOr_no_return() async {
+    // Expected: InterfaceTypeImpl:<Null>
+    await super.test_futureOr_no_return();
+  }
+
+  @override
+  @failingTest
+  test_futureOr_no_return_value() async {
+    // Expected: InterfaceTypeImpl:<Null>
+    await super.test_futureOr_no_return_value();
+  }
+
+  @override
+  @failingTest
+  test_futureOr_return_null() async {
+    // Expected: InterfaceTypeImpl:<Null>
+    await super.test_futureOr_return_null();
+  }
+
+  @override
+  @failingTest
+  test_futureOr_upwards2() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_COULD_NOT_INFER, found 0
+    await super.test_futureOr_upwards2();
+  }
+
+  @override
+  @failingTest
+  test_futureOrNull_no_return() async {
+    // Bad state: Found 2 argument types for 1 type arguments
+    await super.test_futureOrNull_no_return();
+  }
+
+  @override
+  @failingTest
+  test_futureOrNull_no_return_value() async {
+    // Bad state: Found 2 argument types for 1 type arguments
+    await super.test_futureOrNull_no_return_value();
+  }
+
+  @override
+  @failingTest
+  test_futureOrNull_return_null() async {
+    // Bad state: Found 2 argument types for 1 type arguments
+    await super.test_futureOrNull_return_null();
+  }
+
+  @override
+  @failingTest
+  test_generic_partial() async {
+    // AnalysisException: Element mismatch in /test.dart at class A<T>
+    await super.test_generic_partial();
+  }
+
+  @override
+  @failingTest
+  test_inference_error_arguments() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_COULD_NOT_INFER, found 0;
+    //          1 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0
+    await super.test_inference_error_arguments();
+  }
+
+  @override
+  @failingTest
+  test_inference_error_arguments2() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_COULD_NOT_INFER, found 0;
+    //          2 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0
+    await super.test_inference_error_arguments2();
+  }
+
+  @override
+  @failingTest
+  test_inference_error_extendsFromReturn() async {
+    // Expected 2 errors of type StrongModeCode.STRONG_MODE_INVALID_CAST_LITERAL, found 0
+    await super.test_inference_error_extendsFromReturn();
+  }
+
+  @override
+  @failingTest
+  test_inference_error_extendsFromReturn2() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_COULD_NOT_INFER, found 0
+    await super.test_inference_error_extendsFromReturn2();
+  }
+
+  @override
+  @failingTest
+  test_inference_error_genericFunction() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_COULD_NOT_INFER, found 0;
+    //          1 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0
+    await super.test_inference_error_genericFunction();
+  }
+
+  @override
+  @failingTest
+  test_inference_error_returnContext() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_COULD_NOT_INFER, found 0
+    await super.test_inference_error_returnContext();
+  }
+
+  @override
+  @failingTest
+  test_inference_simplePolymorphicRecursion_function() async {
+    // Expected: 'T'
+    await super.test_inference_simplePolymorphicRecursion_function();
+  }
+
+  @override
+  @failingTest
+  test_inference_simplePolymorphicRecursion_interface() async {
+    // Expected: 'T'
+    await super.test_inference_simplePolymorphicRecursion_interface();
+  }
+
+  @override
+  @failingTest
+  test_inference_simplePolymorphicRecursion_simple() async {
+    // RangeError (index): Invalid value: Valid value range is empty: 0
+    await super.test_inference_simplePolymorphicRecursion_simple();
+  }
+
+  @override
+  @failingTest
+  test_inferGenericInstantiation2() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_COULD_NOT_INFER, found 0;
+    //          1 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0
+    await super.test_inferGenericInstantiation2();
+  }
+
+  @override
+  @failingTest
+  test_inferredFieldDeclaration_propagation() async {
+    // Expected: InterfaceTypeImpl:<int>
+    await super.test_inferredFieldDeclaration_propagation();
+  }
+
+  @override
+  @failingTest
+  test_instanceCreation() async {
+    // AnalysisException: Element mismatch in /test.dart at class A<S, T>
+    await super.test_instanceCreation();
+    // TODO(brianwilkerson) This test fails as expected when run as part of a
+    // larger group of tests, but does not fail when run individually (such as
+    // on the bots).
+    fail('Flaky test');
+  }
+
+  @override
+  @failingTest
+  test_pinning_multipleConstraints1() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_INVALID_CAST_LITERAL, found 0
+    await super.test_pinning_multipleConstraints1();
+  }
+
+  @override
+  @failingTest
+  test_pinning_multipleConstraints3() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_INVALID_CAST_LITERAL, found 0
+    await super.test_pinning_multipleConstraints3();
+  }
+
+  @override
+  @failingTest
+  test_redirectingConstructor_propagation() async {
+    // AnalysisException: Element mismatch in /test.dart at class A
+    await super.test_redirectingConstructor_propagation();
+  }
 }
 
 @reflectiveTest
@@ -42,6 +371,127 @@
   bool get enableNewAnalysisDriver => true;
 
   @override
+  bool get previewDart2 => true;
+
+  @override
+  test_futureOr_promotion3() async {
+    // Test passes even though the overridden method fails.
+    await super.test_futureOr_promotion3();
+  }
+
+  @override
+  @failingTest
+  test_genericFunction_parameter() async {
+    // Failed to resolve 1 nodes:
+    await super.test_genericFunction_parameter();
+  }
+
+  @override
+  @failingTest
+  test_genericMethod_explicitTypeParams() async {
+    // Bad state: Found 2 argument types for 1 type arguments
+    await super.test_genericMethod_explicitTypeParams();
+  }
+
+  @override
+  @failingTest
+  test_genericMethod_functionExpressionInvocation_explicit() async {
+    // Bad state: Expected element declaration for analyzer offset 230; got one for kernel offset 233
+    await super.test_genericMethod_functionExpressionInvocation_explicit();
+  }
+
+  @override
+  @failingTest
+  test_genericMethod_functionExpressionInvocation_inferred() async {
+    // Bad state: Expected element declaration for analyzer offset 230; got one for kernel offset 233
+    await super.test_genericMethod_functionExpressionInvocation_inferred();
+  }
+
+  @override
+  @failingTest
+  test_genericMethod_functionInvocation_explicit() async {
+    // Failed to resolve 1 nodes:
+    await super.test_genericMethod_functionInvocation_explicit();
+  }
+
+  @override
+  @failingTest
+  test_genericMethod_functionInvocation_inferred() async {
+    // Failed to resolve 1 nodes:
+    await super.test_genericMethod_functionInvocation_inferred();
+  }
+
+  @override
+  @failingTest
+  test_genericMethod_implicitDynamic() async {
+    // Expected: '<T>((dynamic) → T) → T'
+    await super.test_genericMethod_implicitDynamic();
+  }
+
+  @override
+  @failingTest
+  test_genericMethod_max_doubleDouble_prefixed() async {
+    // Bad state: Expected element reference for analyzer offset 49; got one for kernel offset 54
+    await super.test_genericMethod_max_doubleDouble_prefixed();
+  }
+
+  @override
+  @failingTest
+  test_genericMethod_nestedCapture() async {
+    // Bad state: Found 2 argument types for 1 type arguments
+    await super.test_genericMethod_nestedCapture();
+  }
+
+  @override
+  @failingTest
+  test_genericMethod_override_invalidReturnType() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_INVALID_METHOD_OVERRIDE, found 0
+    await super.test_genericMethod_override_invalidReturnType();
+  }
+
+  @override
+  @failingTest
+  test_genericMethod_override_invalidTypeParamBounds() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_INVALID_METHOD_OVERRIDE, found 0
+    await super.test_genericMethod_override_invalidTypeParamBounds();
+  }
+
+  @override
+  @failingTest
+  test_genericMethod_override_invalidTypeParamCount() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_INVALID_METHOD_OVERRIDE, found 0
+    await super.test_genericMethod_override_invalidTypeParamCount();
+  }
+
+  @override
+  @failingTest
+  test_genericMethod_partiallyAppliedErrorWithBound() async {
+    // Bad state: Found 0 argument types for 1 type arguments
+    await super.test_genericMethod_partiallyAppliedErrorWithBound();
+  }
+
+  @override
+  @failingTest
+  test_genericMethod_tearoff() async {
+    // Failed to resolve 1 nodes:
+    await super.test_genericMethod_tearoff();
+  }
+
+  @override
+  @failingTest
+  test_genericMethod_then_prefixed() async {
+    // Expected 0 errors of type HintCode.UNUSED_IMPORT, found 1 (7)
+    await super.test_genericMethod_then_prefixed();
+  }
+
+  @override
+  @failingTest
+  test_implicitBounds() async {
+    // Expected: 'B<num>'
+    await super.test_implicitBounds();
+  }
+
+  @override
   @failingTest
   @potentialAnalyzerProblem
   test_instantiateToBounds_class_error_recursion() async {
@@ -103,6 +553,76 @@
   test_instantiateToBounds_class_ok_referenceOther_multi() async {
     return super.test_instantiateToBounds_class_ok_referenceOther_multi();
   }
+
+  @override
+  @failingTest
+  test_instantiateToBounds_class_ok_simpleBounds() async {
+    // Expected: 'B<num>'
+    await super.test_instantiateToBounds_class_ok_simpleBounds();
+  }
+
+  @override
+  @failingTest
+  test_notInstantiatedBound_direct_class_class() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0
+    await super.test_notInstantiatedBound_direct_class_class();
+  }
+
+  @override
+  @failingTest
+  test_notInstantiatedBound_direct_class_typedef() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0
+    await super.test_notInstantiatedBound_direct_class_typedef();
+  }
+
+  @override
+  @failingTest
+  test_notInstantiatedBound_direct_typedef_class() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0
+    await super.test_notInstantiatedBound_direct_typedef_class();
+  }
+
+  @override
+  @failingTest
+  test_notInstantiatedBound_functionType() async {
+    // Expected 2 errors of type StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0
+    await super.test_notInstantiatedBound_functionType();
+  }
+
+  @override
+  @failingTest
+  test_notInstantiatedBound_indirect_class_class() async {
+    // Expected 1 errors of type StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0
+    await super.test_notInstantiatedBound_indirect_class_class();
+  }
+
+  @override
+  @failingTest
+  test_notInstantiatedBound_indirect_class_class2() async {
+    // Expected 2 errors of type StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0
+    await super.test_notInstantiatedBound_indirect_class_class2();
+  }
+
+  @override
+  @failingTest
+  test_setterWithDynamicTypeIsError() async {
+    // Expected 2 errors of type StaticWarningCode.NON_VOID_RETURN_FOR_SETTER, found 0
+    await super.test_setterWithDynamicTypeIsError();
+  }
+
+  @override
+  @failingTest
+  test_setterWithNoVoidType() async {
+    // Expected 1 errors of type StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, found 0
+    await super.test_setterWithNoVoidType();
+  }
+
+  @override
+  @failingTest
+  test_setterWithOtherTypeIsError() async {
+    // Expected 2 errors of type StaticWarningCode.NON_VOID_RETURN_FOR_SETTER, found 0
+    await super.test_setterWithOtherTypeIsError();
+  }
 }
 
 @reflectiveTest
@@ -113,4 +633,7 @@
 
   @override
   bool get enableNewAnalysisDriver => true;
+
+  @override
+  bool get previewDart2 => true;
 }
diff --git a/pkg/analyzer/test/generated/strong_mode_test.dart b/pkg/analyzer/test/generated/strong_mode_test.dart
index 80f5c2b..d508efa 100644
--- a/pkg/analyzer/test/generated/strong_mode_test.dart
+++ b/pkg/analyzer/test/generated/strong_mode_test.dart
@@ -2747,50 +2747,6 @@
     expect(invocation.staticInvokeType.toString(), type);
   }
 
-  fail_futureOr_promotion4() async {
-    // Test that promotion from FutureOr<T> to T works for type
-    // parameters T
-    // TODO(leafp): When the restriction on is checks for generic methods
-    // goes away this should pass.
-    String code = r'''
-    import "dart:async";
-    dynamic test<T extends num>(FutureOr<T> x) => (x is T) &&
-                                                  (x.abs() == 0);
-   ''';
-    await resolveTestUnit(code);
-  }
-
-  fail_genericMethod_tearoff_instantiated() async {
-    await resolveTestUnit(r'''
-class C<E> {
-  T f<T>(E e) => null;
-  static T g<T>(T e) => null;
-  static final h = g;
-}
-
-T topF<T>(T e) => null;
-var topG = topF;
-void test<S>(T pf<T>(T e)) {
-  var c = new C<int>();
-  T lf<T>(T e) => null;
-  var methodTearOffInst = c.f<int>;
-  var staticTearOffInst = C.g<int>;
-  var staticFieldTearOffInst = C.h<int>;
-  var topFunTearOffInst = topF<int>;
-  var topFieldTearOffInst = topG<int>;
-  var localTearOffInst = lf<int>;
-  var paramTearOffInst = pf<int>;
-}
-''');
-    expectIdentifierType('methodTearOffInst', "(int) → int");
-    expectIdentifierType('staticTearOffInst', "(int) → int");
-    expectIdentifierType('staticFieldTearOffInst', "(int) → int");
-    expectIdentifierType('topFunTearOffInst', "(int) → int");
-    expectIdentifierType('topFieldTearOffInst', "(int) → int");
-    expectIdentifierType('localTearOffInst', "(int) → int");
-    expectIdentifierType('paramTearOffInst', "(int) → int");
-  }
-
   void setUp() {
     super.setUp();
     AnalysisOptionsImpl options = new AnalysisOptionsImpl();
@@ -2840,6 +2796,17 @@
     await resolveTestUnit(code);
   }
 
+  test_futureOr_promotion3() async {
+    // Test that promotion from FutureOr<T> to T works for type
+    // parameters T
+    String code = r'''
+    import "dart:async";
+    dynamic test<T extends num>(FutureOr<T> x) => (x is T) &&
+                                                  (x.abs() == 0);
+   ''';
+    await resolveTestUnit(code);
+  }
+
   test_futureOr_promotion4() async {
     // Test that promotion from FutureOr<T> to Future<T> works for type
     // parameters T
@@ -3387,6 +3354,22 @@
     verify([source]);
   }
 
+  test_genericMethod_partiallyAppliedErrorWithBound() async {
+    await resolveTestUnit(r'''
+void f<X extends List, Y>() => null;
+
+void test() {
+  f<int>();
+}
+''', noErrors: false);
+    assertErrors(testSource, [
+      // Make sure to catch both the missing parameter:
+      StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD,
+      // And the incorrect parameter:
+      StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
+    ]);
+  }
+
   test_genericMethod_propagatedType_promotion() async {
     // Regression test for:
     // https://github.com/dart-lang/sdk/issues/25340
@@ -3441,20 +3424,36 @@
     expectIdentifierType('paramTearOff', "<T>(T) → T");
   }
 
-  test_genericMethod_partiallyAppliedErrorWithBound() async {
+  @failingTest
+  test_genericMethod_tearoff_instantiated() async {
     await resolveTestUnit(r'''
-void f<X extends List, Y>() => null;
-
-void test() {
-  f<int>();
+class C<E> {
+  T f<T>(E e) => null;
+  static T g<T>(T e) => null;
+  static final h = g;
 }
-''', noErrors: false);
-    assertErrors(testSource, [
-      // Make sure to catch both the missing parameter:
-      StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD,
-      // And the incorrect parameter:
-      StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
-    ]);
+
+T topF<T>(T e) => null;
+var topG = topF;
+void test<S>(T pf<T>(T e)) {
+  var c = new C<int>();
+  T lf<T>(T e) => null;
+  var methodTearOffInst = c.f<int>;
+  var staticTearOffInst = C.g<int>;
+  var staticFieldTearOffInst = C.h<int>;
+  var topFunTearOffInst = topF<int>;
+  var topFieldTearOffInst = topG<int>;
+  var localTearOffInst = lf<int>;
+  var paramTearOffInst = pf<int>;
+}
+''');
+    expectIdentifierType('methodTearOffInst', "(int) → int");
+    expectIdentifierType('staticTearOffInst', "(int) → int");
+    expectIdentifierType('staticFieldTearOffInst', "(int) → int");
+    expectIdentifierType('topFunTearOffInst', "(int) → int");
+    expectIdentifierType('topFieldTearOffInst', "(int) → int");
+    expectIdentifierType('localTearOffInst', "(int) → int");
+    expectIdentifierType('paramTearOffInst', "(int) → int");
   }
 
   test_genericMethod_then() async {
diff --git a/pkg/analyzer/test/src/context/mock_sdk.dart b/pkg/analyzer/test/src/context/mock_sdk.dart
index 9599777..f95bd63 100644
--- a/pkg/analyzer/test/src/context/mock_sdk.dart
+++ b/pkg/analyzer/test/src/context/mock_sdk.dart
@@ -81,6 +81,8 @@
   factory Stream.fromIterable(Iterable<T> data) => null;
 }
 
+abstract class StreamIterator<T> {}
+
 abstract class StreamSubscription<T> {
   Future cancel();
   void onData(void handleData(T data));
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_kernel_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_kernel_test.dart
index 17ccb8b..7dd81a7 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_kernel_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_kernel_test.dart
@@ -23,9 +23,9 @@
   @override
   bool get previewDart2 => true;
 
+  @override
   @failingTest
   @potentialAnalyzerProblem
-  @override
   test_annotation_constructor_withNestedConstructorInvocation() async {
     // This test is failing because analyzer and kernel disagree about how to
     // resolve annotations and constructors. Kernel is consistent between
@@ -34,6 +34,13 @@
     // resolution of the constructor name's element.
     await super.test_annotation_constructor_withNestedConstructorInvocation();
   }
+
+  @override
+  @failingTest
+  @FastaProblem('https://github.com/dart-lang/sdk/issues/31605')
+  test_constructor_redirected_generic() async {
+    await super.test_constructor_redirected_generic();
+  }
 }
 
 @reflectiveTest
@@ -81,13 +88,6 @@
   @failingTest
   @potentialAnalyzerProblem
   @override
-  test_const_circular_reference() async {
-    await super.test_const_circular_reference();
-  }
-
-  @failingTest
-  @potentialAnalyzerProblem
-  @override
   test_const_externalConstFactory() async {
     await super.test_const_externalConstFactory();
   }
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index c2c3313..ac4e176 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -102,7 +102,7 @@
 @myAnnotation
 class C {
   @myAnnotation
-  int field = 2;
+  int field1 = 2, field2 = 3;
 
   @myAnnotation
   C() {}
@@ -112,7 +112,7 @@
 }
 
 @myAnnotation
-int topLevelVariable = 3;
+int topLevelVariable1 = 4, topLevelVariable2 = 5;
 
 @myAnnotation
 void topLevelFunction() {}
@@ -1122,49 +1122,104 @@
   items.forEach((item) {
     item;
   });
+  items.forEach((item) {
+    item;
+  });
 }
 ''');
     AnalysisResult result = await driver.getResult(testFile);
     var typeProvider = result.unit.element.context.typeProvider;
 
-    List<Statement> mainStatements = _getMainStatements(result);
+    FunctionDeclaration mainDeclaration = result.unit.declarations[0];
+    FunctionElement mainElement = mainDeclaration.element;
+    BlockFunctionBody mainBody = mainDeclaration.functionExpression.body;
+    List<Statement> mainStatements = mainBody.block.statements;
 
     VariableDeclarationStatement itemsStatement = mainStatements[0];
     var itemsElement = itemsStatement.variables.variables[0].element;
 
-    ExpressionStatement forStatement = mainStatements[1];
-    MethodInvocation forInvocation = forStatement.expression;
+    // First closure.
+    ParameterElement itemElement1;
+    {
+      ExpressionStatement forStatement = mainStatements[1];
+      MethodInvocation forInvocation = forStatement.expression;
 
-    SimpleIdentifier forTarget = forInvocation.target;
-    expect(forTarget.staticElement, itemsElement);
+      SimpleIdentifier forTarget = forInvocation.target;
+      expect(forTarget.staticElement, itemsElement);
 
-    var closureTypeStr = '(int) → Null';
-    FunctionExpression closure = forInvocation.argumentList.arguments[0];
-    FunctionElement closureElement = closure.element;
-    ParameterElement itemElement = closureElement.parameters[0];
+      var closureTypeStr = '(int) → Null';
+      FunctionExpression closure = forInvocation.argumentList.arguments[0];
 
-    expect(closureElement.returnType, typeProvider.nullType);
-    expect(closureElement.type.element, same(closureElement));
-    expect(closureElement.type.toString(), closureTypeStr);
-    expect(closure.staticType, same(closureElement.type));
+      FunctionElementImpl closureElement = closure.element;
+      expect(closureElement.enclosingElement, same(mainElement));
 
-    List<FormalParameter> closureParameters = closure.parameters.parameters;
-    expect(closureParameters, hasLength(1));
+      ParameterElement itemElement = closureElement.parameters[0];
+      itemElement1 = itemElement;
 
-    SimpleFormalParameter itemNode = closureParameters[0];
-    _assertSimpleParameter(itemNode, itemElement,
-        name: 'item',
-        offset: 56,
-        kind: ParameterKind.REQUIRED,
-        type: typeProvider.intType);
+      expect(closureElement.returnType, typeProvider.nullType);
+      expect(closureElement.type.element, same(closureElement));
+      expect(closureElement.type.toString(), closureTypeStr);
+      expect(closure.staticType, same(closureElement.type));
 
-    BlockFunctionBody closureBody = closure.body;
-    List<Statement> closureStatements = closureBody.block.statements;
+      List<FormalParameter> closureParameters = closure.parameters.parameters;
+      expect(closureParameters, hasLength(1));
 
-    ExpressionStatement itemStatement = closureStatements[0];
-    SimpleIdentifier itemIdentifier = itemStatement.expression;
-    expect(itemIdentifier.staticElement, itemElement);
-    expect(itemIdentifier.staticType, typeProvider.intType);
+      SimpleFormalParameter itemNode = closureParameters[0];
+      _assertSimpleParameter(itemNode, itemElement,
+          name: 'item',
+          offset: 56,
+          kind: ParameterKind.REQUIRED,
+          type: typeProvider.intType);
+
+      BlockFunctionBody closureBody = closure.body;
+      List<Statement> closureStatements = closureBody.block.statements;
+
+      ExpressionStatement itemStatement = closureStatements[0];
+      SimpleIdentifier itemIdentifier = itemStatement.expression;
+      expect(itemIdentifier.staticElement, itemElement);
+      expect(itemIdentifier.staticType, typeProvider.intType);
+    }
+
+    // Second closure, same names, different elements.
+    {
+      ExpressionStatement forStatement = mainStatements[2];
+      MethodInvocation forInvocation = forStatement.expression;
+
+      SimpleIdentifier forTarget = forInvocation.target;
+      expect(forTarget.staticElement, itemsElement);
+
+      var closureTypeStr = '(int) → Null';
+      FunctionExpression closure = forInvocation.argumentList.arguments[0];
+
+      FunctionElementImpl closureElement = closure.element;
+      expect(closureElement.enclosingElement, same(mainElement));
+
+      ParameterElement itemElement = closureElement.parameters[0];
+      expect(itemElement, isNot(same(itemElement1)));
+
+      expect(closureElement.returnType, typeProvider.nullType);
+      expect(closureElement.type.element, same(closureElement));
+      expect(closureElement.type.toString(), closureTypeStr);
+      expect(closure.staticType, same(closureElement.type));
+
+      List<FormalParameter> closureParameters = closure.parameters.parameters;
+      expect(closureParameters, hasLength(1));
+
+      SimpleFormalParameter itemNode = closureParameters[0];
+      _assertSimpleParameter(itemNode, itemElement,
+          name: 'item',
+          offset: 97,
+          kind: ParameterKind.REQUIRED,
+          type: typeProvider.intType);
+
+      BlockFunctionBody closureBody = closure.body;
+      List<Statement> closureStatements = closureBody.block.statements;
+
+      ExpressionStatement itemStatement = closureStatements[0];
+      SimpleIdentifier itemIdentifier = itemStatement.expression;
+      expect(itemIdentifier.staticElement, itemElement);
+      expect(itemIdentifier.staticType, typeProvider.intType);
+    }
   }
 
   test_conditionalExpression() async {
@@ -1276,6 +1331,195 @@
     }
   }
 
+  test_constructor_initializer_this() async {
+    addTestFile(r'''
+class C {
+  C(int a, [int b]);
+  C.named(int a, {int b});
+  C.one(int p) : this(1, 2);
+  C.two(int p) : this.named(3, b: 4);
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+
+    ClassDeclaration cNode = result.unit.declarations[0];
+    ClassElement cElement = cNode.element;
+
+    {
+      var unnamedConstructor = cElement.constructors[0];
+
+      ConstructorDeclaration constructor = cNode.members[2];
+      RedirectingConstructorInvocation initializer =
+          constructor.initializers[0];
+      expect(initializer.staticElement, same(unnamedConstructor));
+      expect(initializer.constructorName, isNull);
+
+      List<Expression> arguments = initializer.argumentList.arguments;
+
+      Expression aArgument = arguments[0];
+      ParameterElement aElement = unnamedConstructor.parameters[0];
+      expect(aArgument.staticParameterElement, same(aElement));
+
+      Expression bArgument = arguments[1];
+      ParameterElement bElement = unnamedConstructor.parameters[1];
+      expect(bArgument.staticParameterElement, same(bElement));
+    }
+
+    {
+      var namedConstructor = cElement.constructors[1];
+
+      ConstructorDeclaration constructor = cNode.members[3];
+      RedirectingConstructorInvocation initializer =
+          constructor.initializers[0];
+      expect(initializer.staticElement, same(namedConstructor));
+
+      var constructorName = initializer.constructorName;
+      expect(constructorName.staticElement, same(namedConstructor));
+      expect(constructorName.staticType, isNull);
+
+      List<Expression> arguments = initializer.argumentList.arguments;
+
+      Expression aArgument = arguments[0];
+      ParameterElement aElement = namedConstructor.parameters[0];
+      expect(aArgument.staticParameterElement, same(aElement));
+
+      NamedExpression bArgument = arguments[1];
+      ParameterElement bElement = namedConstructor.parameters[1];
+      expect(bArgument.name.label.staticElement, same(bElement));
+      expect(bArgument.staticParameterElement, same(bElement));
+    }
+  }
+
+  test_constructor_redirected() async {
+    addTestFile(r'''
+class A implements B {
+  A(int a);
+  A.named(double a);
+}
+class B {
+  factory B.one(int b) = A;
+  factory B.two(double b) = A.named;
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+    expect(result.errors, isEmpty);
+
+    ClassDeclaration aNode = result.unit.declarations[0];
+    ClassElement aElement = aNode.element;
+
+    ClassDeclaration bNode = result.unit.declarations[1];
+
+    {
+      ConstructorElement aUnnamed = aElement.constructors[0];
+
+      ConstructorDeclaration constructor = bNode.members[0];
+      ConstructorElement element = constructor.element;
+      expect(element.redirectedConstructor, same(aUnnamed));
+
+      var constructorName = constructor.redirectedConstructor;
+      expect(constructorName.staticElement, same(aUnnamed));
+
+      TypeName typeName = constructorName.type;
+      expect(typeName.type, aElement.type);
+
+      SimpleIdentifier identifier = typeName.name;
+      expect(identifier.staticElement, same(aElement));
+      expect(identifier.staticType, aElement.type);
+
+      expect(constructorName.name, isNull);
+    }
+
+    {
+      ConstructorElement aNamed = aElement.constructors[1];
+
+      ConstructorDeclaration constructor = bNode.members[1];
+      ConstructorElement element = constructor.element;
+      expect(element.redirectedConstructor, same(aNamed));
+
+      var constructorName = constructor.redirectedConstructor;
+      expect(constructorName.staticElement, same(aNamed));
+
+      TypeName typeName = constructorName.type;
+      expect(typeName.type, aElement.type);
+
+      SimpleIdentifier identifier = typeName.name;
+      expect(identifier.staticElement, same(aElement));
+      expect(identifier.staticType, aElement.type);
+
+      expect(constructorName.name.staticElement, aNamed);
+      expect(constructorName.name.staticType, isNull);
+    }
+  }
+
+  test_constructor_redirected_generic() async {
+    addTestFile(r'''
+class A<T> implements B<T> {
+  A(int a);
+  A.named(double a);
+}
+class B<U> {
+  factory B.one(int b) = A<U>;
+  factory B.two(double b) = A<U>.named;
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+    expect(result.errors, isEmpty);
+
+    ClassDeclaration aNode = result.unit.declarations[0];
+    ClassElement aElement = aNode.element;
+
+    ClassDeclaration bNode = result.unit.declarations[1];
+    TypeParameterType uType = bNode.element.typeParameters[0].type;
+    InterfaceType auType = aElement.type.instantiate([uType]);
+
+    {
+      ConstructorElement expectedElement = aElement.constructors[0];
+
+      ConstructorDeclaration constructor = bNode.members[0];
+      ConstructorElement element = constructor.element;
+
+      ConstructorMember actualMember = element.redirectedConstructor;
+      expect(actualMember.baseElement, same(expectedElement));
+      expect(actualMember.definingType, auType);
+
+      var constructorName = constructor.redirectedConstructor;
+      expect(constructorName.staticElement, same(actualMember));
+
+      TypeName typeName = constructorName.type;
+      expect(typeName.type, auType);
+
+      SimpleIdentifier identifier = typeName.name;
+      expect(identifier.staticElement, same(aElement));
+      expect(identifier.staticType, auType);
+
+      expect(constructorName.name, isNull);
+    }
+
+    {
+      ConstructorElement expectedElement = aElement.constructors[1];
+
+      ConstructorDeclaration constructor = bNode.members[1];
+      ConstructorElement element = constructor.element;
+
+      ConstructorMember actualMember = element.redirectedConstructor;
+      expect(actualMember.baseElement, same(expectedElement));
+      expect(actualMember.definingType, auType);
+
+      var constructorName = constructor.redirectedConstructor;
+      expect(constructorName.staticElement, same(actualMember));
+
+      TypeName typeName = constructorName.type;
+      expect(typeName.type, auType);
+
+      SimpleIdentifier identifier = typeName.name;
+      expect(identifier.staticElement, same(aElement));
+      expect(identifier.staticType, auType);
+
+      expect(constructorName.name.staticElement, same(actualMember));
+      expect(constructorName.name.staticType, isNull);
+    }
+  }
+
   test_error_unresolvedTypeAnnotation() async {
     String content = r'''
 main() {
@@ -1321,6 +1565,147 @@
     expect(fElement.type, typeProvider.listType.instantiate([tElement.type]));
   }
 
+  test_formalParameter_functionTyped() async {
+    addTestFile(r'''
+class A {
+  A(String p(int a));
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+    var typeProvider = result.unit.element.context.typeProvider;
+
+    ClassDeclaration clazz = result.unit.declarations[0];
+    ConstructorDeclaration constructor = clazz.members[0];
+    List<FormalParameter> parameters = constructor.parameters.parameters;
+
+    FunctionTypedFormalParameter p = parameters[0];
+    expect(p.element, same(constructor.element.parameters[0]));
+
+    {
+      FunctionType type = p.identifier.staticType;
+      expect(type.returnType, typeProvider.stringType);
+
+      expect(type.parameters, hasLength(1));
+      expect(type.parameters[0].type, typeProvider.intType);
+    }
+
+    _assertTypeNameSimple(p.returnType, typeProvider.stringType);
+
+    {
+      SimpleFormalParameter a = p.parameters.parameters[0];
+      _assertTypeNameSimple(a.type, typeProvider.intType);
+      expect(a.identifier.staticType, typeProvider.intType);
+    }
+  }
+
+  test_formalParameter_functionTyped_fieldFormal_typed() async {
+    // TODO(scheglov) Add "untyped" version with precise type in field.
+    addTestFile(r'''
+class A {
+  Function f;
+  A(String this.f(int a));
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+    var typeProvider = result.unit.element.context.typeProvider;
+
+    ClassDeclaration clazz = result.unit.declarations[0];
+
+    FieldDeclaration fDeclaration = clazz.members[0];
+    VariableDeclaration fNode = fDeclaration.fields.variables[0];
+    FieldElement fElement = fNode.element;
+
+    ConstructorDeclaration constructor = clazz.members[1];
+
+    FieldFormalParameterElement pElement = constructor.element.parameters[0];
+    expect(pElement.field, same(fElement));
+
+    List<FormalParameter> parameters = constructor.parameters.parameters;
+    FieldFormalParameter p = parameters[0];
+    expect(p.element, same(pElement));
+
+    expect(p.identifier.staticElement, same(pElement));
+    expect(p.identifier.staticType.toString(), '(int) → String');
+
+    {
+      FunctionType type = p.identifier.staticType;
+      expect(type.returnType, typeProvider.stringType);
+
+      expect(type.parameters, hasLength(1));
+      expect(type.parameters[0].type, typeProvider.intType);
+    }
+
+    _assertTypeNameSimple(p.type, typeProvider.stringType);
+
+    {
+      SimpleFormalParameter a = p.parameters.parameters[0];
+      _assertTypeNameSimple(a.type, typeProvider.intType);
+      expect(a.identifier.staticType, typeProvider.intType);
+    }
+  }
+
+  test_formalParameter_simple_fieldFormal() async {
+    addTestFile(r'''
+class A {
+  int f;
+  A(this.f);
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+    var typeProvider = result.unit.element.context.typeProvider;
+
+    ClassDeclaration clazz = result.unit.declarations[0];
+
+    FieldDeclaration fDeclaration = clazz.members[0];
+    VariableDeclaration fNode = fDeclaration.fields.variables[0];
+    FieldElement fElement = fNode.element;
+
+    ConstructorDeclaration constructor = clazz.members[1];
+    List<FormalParameter> parameters = constructor.parameters.parameters;
+
+    FieldFormalParameterElement parameterElement =
+        constructor.element.parameters[0];
+    expect(parameterElement.field, same(fElement));
+
+    FieldFormalParameter parameterNode = parameters[0];
+    expect(parameterNode.type, isNull);
+    expect(parameterNode.element, same(parameterElement));
+
+    expect(parameterNode.identifier.staticElement, same(parameterElement));
+    expect(parameterNode.identifier.staticType, typeProvider.intType);
+  }
+
+  test_formalParameter_simple_fieldFormal_typed() async {
+    addTestFile(r'''
+class A {
+  int f;
+  A(int this.f);
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+    var typeProvider = result.unit.element.context.typeProvider;
+
+    ClassDeclaration clazz = result.unit.declarations[0];
+
+    FieldDeclaration fDeclaration = clazz.members[0];
+    VariableDeclaration fNode = fDeclaration.fields.variables[0];
+    FieldElement fElement = fNode.element;
+
+    ConstructorDeclaration constructor = clazz.members[1];
+    List<FormalParameter> parameters = constructor.parameters.parameters;
+
+    FieldFormalParameterElement parameterElement =
+        constructor.element.parameters[0];
+    expect(parameterElement.field, same(fElement));
+
+    FieldFormalParameter parameterNode = parameters[0];
+    _assertTypeNameSimple(parameterNode.type, typeProvider.intType);
+    expect(parameterNode.element, same(parameterElement));
+
+    expect(parameterNode.identifier.staticElement, same(parameterElement));
+    expect(parameterNode.identifier.staticType, typeProvider.intType);
+  }
+
   test_indexExpression() async {
     String content = r'''
 main() {
@@ -1416,6 +1801,53 @@
     }
   }
 
+  test_instanceCreation_namedArgument() async {
+    addTestFile(r'''
+class X {
+  X(int a, {bool b, double c});
+}
+var v = new X(1, b: true, c: 3.0);
+''');
+
+    AnalysisResult result = await driver.getResult(testFile);
+    CompilationUnit unit = result.unit;
+
+    ClassDeclaration xNode = unit.declarations[0];
+    ClassElement xElement = xNode.element;
+    ConstructorElement constructorElement = xElement.constructors[0];
+
+    TopLevelVariableDeclaration vDeclaration = unit.declarations[1];
+    VariableDeclaration vNode = vDeclaration.variables.variables[0];
+
+    InstanceCreationExpression creation = vNode.initializer;
+    List<Expression> arguments = creation.argumentList.arguments;
+    expect(creation.staticElement, constructorElement);
+    expect(creation.staticType, xElement.type);
+
+    TypeName typeName = creation.constructorName.type;
+    expect(typeName.typeArguments, isNull);
+
+    Identifier typeIdentifier = typeName.name;
+    expect(typeIdentifier.staticElement, xElement);
+    expect(typeIdentifier.staticType, xElement.type);
+
+    expect(creation.constructorName.name, isNull);
+
+    Expression aArgument = arguments[0];
+    ParameterElement aElement = constructorElement.parameters[0];
+    expect(aArgument.staticParameterElement, same(aElement));
+
+    NamedExpression bArgument = arguments[1];
+    ParameterElement bElement = constructorElement.parameters[1];
+    expect(bArgument.name.label.staticElement, same(bElement));
+    expect(bArgument.staticParameterElement, same(bElement));
+
+    NamedExpression cArgument = arguments[2];
+    ParameterElement cElement = constructorElement.parameters[2];
+    expect(cArgument.name.label.staticElement, same(cElement));
+    expect(cArgument.staticParameterElement, same(cElement));
+  }
+
   test_instanceCreation_noTypeArguments() async {
     String content = r'''
 class C {
@@ -2069,14 +2501,12 @@
   }
 
   test_local_variable() async {
-    String content = r'''
+    addTestFile(r'''
 void main() {
   var v = 42;
   v;
 }
-''';
-    addTestFile(content);
-
+''');
     AnalysisResult result = await driver.getResult(testFile);
     expect(result.path, testFile);
     expect(result.errors, isEmpty);
@@ -2293,6 +2723,28 @@
     expect(identifier.staticType, typeProvider.numType);
   }
 
+  test_local_variable_multiple() async {
+    addTestFile(r'''
+void main() {
+  var a = 1, b = 2.3;
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+    var typeProvider = result.unit.element.context.typeProvider;
+
+    List<Statement> statements = _getMainStatements(result);
+
+    VariableDeclarationStatement declarationStatement = statements[0];
+
+    VariableDeclaration aNode = declarationStatement.variables.variables[0];
+    LocalVariableElement aElement = aNode.element;
+    expect(aElement.type, typeProvider.intType);
+
+    VariableDeclaration bNode = declarationStatement.variables.variables[1];
+    LocalVariableElement bElement = bNode.element;
+    expect(bElement.type, typeProvider.doubleType);
+  }
+
   test_local_variable_ofLocalFunction() async {
     addTestFile(r'''
 void main() {
@@ -2578,6 +3030,185 @@
     }
   }
 
+  test_methodInvocation_namedArgument() async {
+    addTestFile(r'''
+void main() {
+  foo(1, b: true, c: 3.0);
+}
+void foo(int a, {bool b, double c}) {}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+    List<Statement> mainStatements = _getMainStatements(result);
+
+    FunctionDeclaration foo = result.unit.declarations[1];
+    ExecutableElement fooElement = foo.element;
+
+    ExpressionStatement statement = mainStatements[0];
+    MethodInvocation invocation = statement.expression;
+    List<Expression> arguments = invocation.argumentList.arguments;
+
+    Expression aArgument = arguments[0];
+    ParameterElement aElement = fooElement.parameters[0];
+    expect(aArgument.staticParameterElement, same(aElement));
+
+    NamedExpression bArgument = arguments[1];
+    ParameterElement bElement = fooElement.parameters[1];
+    expect(bArgument.name.label.staticElement, same(bElement));
+    expect(bArgument.staticParameterElement, same(bElement));
+
+    NamedExpression cArgument = arguments[2];
+    ParameterElement cElement = fooElement.parameters[2];
+    expect(cArgument.name.label.staticElement, same(cElement));
+    expect(cArgument.staticParameterElement, same(cElement));
+  }
+
+  test_methodInvocation_notFunction_field_dynamic() async {
+    addTestFile(r'''
+class C {
+  dynamic f;
+  foo() {
+    f(1);
+  }
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+
+    ClassDeclaration cDeclaration = result.unit.declarations[0];
+
+    FieldDeclaration fDeclaration = cDeclaration.members[0];
+    VariableDeclaration fNode = fDeclaration.fields.variables[0];
+    FieldElement fElement = fNode.element;
+
+    MethodDeclaration fooDeclaration = cDeclaration.members[1];
+    BlockFunctionBody fooBody = fooDeclaration.body;
+    List<Statement> fooStatements = fooBody.block.statements;
+
+    ExpressionStatement statement = fooStatements[0];
+    MethodInvocation invocation = statement.expression;
+    expect(invocation.methodName.staticElement, same(fElement.getter));
+    expect(invocation.staticInvokeType, DynamicTypeImpl.instance);
+    expect(invocation.staticType, DynamicTypeImpl.instance);
+
+    List<Expression> arguments = invocation.argumentList.arguments;
+
+    Expression argument = arguments[0];
+    expect(argument.staticParameterElement, isNull);
+  }
+
+  test_methodInvocation_notFunction_getter_dynamic() async {
+    addTestFile(r'''
+class C {
+  get f => null;
+  foo() {
+    f(1);
+  }
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+
+    ClassDeclaration cDeclaration = result.unit.declarations[0];
+
+    MethodDeclaration fDeclaration = cDeclaration.members[0];
+    PropertyAccessorElement fElement = fDeclaration.element;
+
+    MethodDeclaration fooDeclaration = cDeclaration.members[1];
+    BlockFunctionBody fooBody = fooDeclaration.body;
+    List<Statement> fooStatements = fooBody.block.statements;
+
+    ExpressionStatement statement = fooStatements[0];
+    MethodInvocation invocation = statement.expression;
+    expect(invocation.methodName.staticElement, same(fElement));
+    expect(invocation.staticInvokeType, DynamicTypeImpl.instance);
+    expect(invocation.staticType, DynamicTypeImpl.instance);
+
+    List<Expression> arguments = invocation.argumentList.arguments;
+
+    Expression argument = arguments[0];
+    expect(argument.staticParameterElement, isNull);
+  }
+
+  test_methodInvocation_notFunction_local_dynamic() async {
+    addTestFile(r'''
+main(f) {
+  f(1);
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+
+    FunctionDeclaration mainDeclaration = result.unit.declarations[0];
+    FunctionExpression mainFunction = mainDeclaration.functionExpression;
+    ParameterElement fElement = mainFunction.parameters.parameters[0].element;
+
+    BlockFunctionBody mainBody = mainFunction.body;
+    List<Statement> mainStatements = mainBody.block.statements;
+
+    ExpressionStatement statement = mainStatements[0];
+    MethodInvocation invocation = statement.expression;
+    expect(invocation.methodName.staticElement, same(fElement));
+    expect(invocation.staticInvokeType, DynamicTypeImpl.instance);
+    expect(invocation.staticType, DynamicTypeImpl.instance);
+
+    List<Expression> arguments = invocation.argumentList.arguments;
+
+    Expression argument = arguments[0];
+    expect(argument.staticParameterElement, isNull);
+  }
+
+  test_methodInvocation_notFunction_local_functionTyped() async {
+    addTestFile(r'''
+main(String f(int a)) {
+  f(1);
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+    var typeProvider = result.unit.element.context.typeProvider;
+
+    FunctionDeclaration mainDeclaration = result.unit.declarations[0];
+    FunctionExpression mainFunction = mainDeclaration.functionExpression;
+    ParameterElement fElement = mainFunction.parameters.parameters[0].element;
+
+    BlockFunctionBody mainBody = mainFunction.body;
+    List<Statement> mainStatements = mainBody.block.statements;
+
+    ExpressionStatement statement = mainStatements[0];
+    MethodInvocation invocation = statement.expression;
+    expect(invocation.methodName.staticElement, same(fElement));
+    expect(invocation.staticInvokeType.toString(), '(int) → String');
+    expect(invocation.staticType, typeProvider.stringType);
+
+    List<Expression> arguments = invocation.argumentList.arguments;
+
+    Expression argument = arguments[0];
+    expect(argument.staticParameterElement, isNotNull);
+  }
+
+  test_methodInvocation_notFunction_topLevelVariable_dynamic() async {
+    addTestFile(r'''
+dynamic f;
+main() {
+  f(1);
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+
+    TopLevelVariableDeclaration fDeclaration = result.unit.declarations[0];
+    VariableDeclaration fNode = fDeclaration.variables.variables[0];
+    TopLevelVariableElement fElement = fNode.element;
+
+    List<Statement> mainStatements = _getMainStatements(result);
+
+    ExpressionStatement statement = mainStatements[0];
+    MethodInvocation invocation = statement.expression;
+    expect(invocation.methodName.staticElement, same(fElement.getter));
+    expect(invocation.staticInvokeType, DynamicTypeImpl.instance);
+    expect(invocation.staticType, DynamicTypeImpl.instance);
+
+    List<Expression> arguments = invocation.argumentList.arguments;
+
+    Expression argument = arguments[0];
+    expect(argument.staticParameterElement, isNull);
+  }
+
   test_methodInvocation_staticMethod() async {
     addTestFile(r'''
 main() {
@@ -2796,38 +3427,6 @@
     }
   }
 
-  test_namedArgument() async {
-    addTestFile(r'''
-void main() {
-  foo(1, b: true, c: 3.0);
-}
-void foo(int a, {bool b, double c}) {}
-''');
-    AnalysisResult result = await driver.getResult(testFile);
-    List<Statement> mainStatements = _getMainStatements(result);
-
-    FunctionDeclaration foo = result.unit.declarations[1];
-    ExecutableElement fooElement = foo.element;
-
-    ExpressionStatement statement = mainStatements[0];
-    MethodInvocation invocation = statement.expression;
-    List<Expression> arguments = invocation.argumentList.arguments;
-
-    Expression aArgument = arguments[0];
-    ParameterElement aElement = fooElement.parameters[0];
-    expect(aArgument.staticParameterElement, same(aElement));
-
-    NamedExpression bArgument = arguments[1];
-    ParameterElement bElement = fooElement.parameters[1];
-    expect(bArgument.name.label.staticElement, same(bElement));
-    expect(bArgument.staticParameterElement, same(bElement));
-
-    NamedExpression cArgument = arguments[2];
-    ParameterElement cElement = fooElement.parameters[2];
-    expect(cArgument.name.label.staticElement, same(cElement));
-    expect(cArgument.staticParameterElement, same(cElement));
-  }
-
   test_postfixExpression_local() async {
     String content = r'''
 main() {
@@ -3956,6 +4555,53 @@
     }
   }
 
+  test_top_field_class_multiple() async {
+    String content = r'''
+class C {
+  var a = 1, b = 2.3;
+}
+''';
+    addTestFile(content);
+
+    AnalysisResult result = await driver.getResult(testFile);
+    CompilationUnit unit = result.unit;
+    CompilationUnitElement unitElement = unit.element;
+    var typeProvider = unitElement.context.typeProvider;
+
+    ClassDeclaration cNode = unit.declarations[0];
+    ClassElement cElement = cNode.element;
+
+    FieldDeclaration fieldDeclaration = cNode.members[0];
+
+    {
+      FieldElement aElement = cElement.getField('a');
+
+      VariableDeclaration aNode = fieldDeclaration.fields.variables[0];
+      expect(aNode.element, same(aElement));
+      expect(aElement.type, typeProvider.intType);
+
+      expect(aNode.name.staticElement, same(aElement));
+      expect(aNode.name.staticType, same(aElement.type));
+
+      Expression aValue = aNode.initializer;
+      expect(aValue.staticType, typeProvider.intType);
+    }
+
+    {
+      FieldElement bElement = cElement.getField('b');
+
+      VariableDeclaration bNode = fieldDeclaration.fields.variables[1];
+      expect(bNode.element, same(bElement));
+      expect(bElement.type, typeProvider.doubleType);
+
+      expect(bNode.name.staticElement, same(bElement));
+      expect(bNode.name.staticType, same(bElement.type));
+
+      Expression aValue = bNode.initializer;
+      expect(aValue.staticType, typeProvider.doubleType);
+    }
+  }
+
   test_top_field_top() async {
     String content = r'''
 var a = 1;
@@ -4000,6 +4646,47 @@
     }
   }
 
+  test_top_field_top_multiple() async {
+    String content = r'''
+var a = 1, b = 2.3;
+''';
+    addTestFile(content);
+
+    AnalysisResult result = await driver.getResult(testFile);
+    CompilationUnit unit = result.unit;
+    CompilationUnitElement unitElement = unit.element;
+    var typeProvider = unitElement.context.typeProvider;
+
+    TopLevelVariableDeclaration variableDeclaration = unit.declarations[0];
+    expect(variableDeclaration.variables.type, isNull);
+
+    {
+      VariableDeclaration aNode = variableDeclaration.variables.variables[0];
+      TopLevelVariableElement aElement = aNode.element;
+      expect(aElement, same(unitElement.topLevelVariables[0]));
+      expect(aElement.type, typeProvider.intType);
+
+      expect(aNode.name.staticElement, same(aElement));
+      expect(aNode.name.staticType, aElement.type);
+
+      Expression aValue = aNode.initializer;
+      expect(aValue.staticType, typeProvider.intType);
+    }
+
+    {
+      VariableDeclaration bNode = variableDeclaration.variables.variables[1];
+      TopLevelVariableElement bElement = bNode.element;
+      expect(bElement, same(unitElement.topLevelVariables[1]));
+      expect(bElement.type, typeProvider.doubleType);
+
+      expect(bNode.name.staticElement, same(bElement));
+      expect(bNode.name.staticType, bElement.type);
+
+      Expression aValue = bNode.initializer;
+      expect(aValue.staticType, typeProvider.doubleType);
+    }
+  }
+
   test_top_function_namedParameters() async {
     addTestFile(r'''
 double f(int a, {String b, bool c: 1 == 2}) {}
diff --git a/pkg/analyzer/test/src/fasta/message_coverage_test.dart b/pkg/analyzer/test/src/fasta/message_coverage_test.dart
index 2911531..f40c351 100644
--- a/pkg/analyzer/test/src/fasta/message_coverage_test.dart
+++ b/pkg/analyzer/test/src/fasta/message_coverage_test.dart
@@ -135,6 +135,7 @@
     fail(buffer.toString());
   }
 
+  @failingTest
   test_translatedMessageCoverage() {
     String analyzerPath = path.join(package_root.packageRoot, 'analyzer');
     String astBuilderPath =
diff --git a/pkg/analyzer/test/src/fasta/recovery/missing_code_test.dart b/pkg/analyzer/test/src/fasta/recovery/missing_code_test.dart
index 81ccbf4..3bf15d4 100644
--- a/pkg/analyzer/test/src/fasta/recovery/missing_code_test.dart
+++ b/pkg/analyzer/test/src/fasta/recovery/missing_code_test.dart
@@ -9,12 +9,95 @@
 
 main() {
   defineReflectiveSuite(() {
+    defineReflectiveTests(ListLiteralTest);
+    defineReflectiveTests(MapLiteralTest);
     defineReflectiveTests(MissingCodeTest);
     defineReflectiveTests(ParameterListTest);
   });
 }
 
 /**
+ * Test how well the parser recovers when tokens are missing in a list literal.
+ */
+@reflectiveTest
+class ListLiteralTest extends AbstractRecoveryTest {
+  void test_extraComma() {
+    testRecovery('''
+f() => [a, , b];
+''', [ParserErrorCode.MISSING_IDENTIFIER], '''
+f() => [a, _s_, b];
+''');
+  }
+
+  @failingTest
+  void test_missingComma() {
+    testRecovery('''
+f() => [a, b c];
+''', [ParserErrorCode.EXPECTED_TOKEN], '''
+f() => [a, b, c];
+''');
+  }
+}
+
+/**
+ * Test how well the parser recovers when tokens are missing in a map literal.
+ */
+@reflectiveTest
+class MapLiteralTest extends AbstractRecoveryTest {
+  void test_missingColonAndValue_last() {
+    testRecovery('''
+f() => {a };
+''', [ParserErrorCode.UNEXPECTED_TOKEN, ParserErrorCode.MISSING_IDENTIFIER], '''
+f() => {a: _s_};
+''');
+  }
+
+  void test_extraComma() {
+    testRecovery('''
+f() => {a: b, , c: d};
+''', [
+      ParserErrorCode.MISSING_IDENTIFIER,
+      ParserErrorCode.UNEXPECTED_TOKEN,
+      ParserErrorCode.MISSING_IDENTIFIER
+    ], '''
+f() => {a: b, _s_: _s_, c: d};
+''');
+  }
+
+  void test_missingComma() {
+    testRecovery('''
+f() => {a: b, c: d e: f};
+''', [ParserErrorCode.UNEXPECTED_TOKEN], '''
+f() => {a: b, c: d, e: f};
+''');
+  }
+
+  void test_missingKey() {
+    testRecovery('''
+f() => {: b};
+''', [ParserErrorCode.MISSING_IDENTIFIER], '''
+f() => {_s_: b};
+''');
+  }
+
+  void test_missingValue_last() {
+    testRecovery('''
+f() => {a: };
+''', [ParserErrorCode.MISSING_IDENTIFIER], '''
+f() => {a: _s_};
+''');
+  }
+
+  void test_missingValue_notLast() {
+    testRecovery('''
+f() => {a: , b: c};
+''', [ParserErrorCode.MISSING_IDENTIFIER], '''
+f() => {a: _s_, b: c};
+''');
+  }
+}
+
+/**
  * Test how well the parser recovers when non-paired tokens are missing.
  */
 @reflectiveTest
@@ -76,6 +159,18 @@
     testUserDefinableOperatorWithSuper('|');
   }
 
+  void test_cascade_missingRight() {
+    testRecovery('''
+f(x) {
+  x..
+}
+''', [ParserErrorCode.MISSING_IDENTIFIER, ParserErrorCode.EXPECTED_TOKEN], '''
+f(x) {
+  x.. _s_;
+}
+''');
+  }
+
   void test_classDeclaration_missingName() {
     testRecovery('''
 class {}
diff --git a/pkg/analyzer/test/src/fasta/recovery/recovery_test_support.dart b/pkg/analyzer/test/src/fasta/recovery/recovery_test_support.dart
index 7c56e59..cf2c3b8 100644
--- a/pkg/analyzer/test/src/fasta/recovery/recovery_test_support.dart
+++ b/pkg/analyzer/test/src/fasta/recovery/recovery_test_support.dart
@@ -20,12 +20,20 @@
       {CompilationUnit adjustValidUnitBeforeComparison(CompilationUnit unit)}) {
     CompilationUnit invalidUnit =
         parseCompilationUnit(invalidCode, codes: errorCodes);
+    validateTokenStream(invalidUnit.beginToken);
     CompilationUnit validUnit = parseCompilationUnit(validCode);
     if (adjustValidUnitBeforeComparison != null) {
       validUnit = adjustValidUnitBeforeComparison(validUnit);
     }
     ResultComparator.compare(invalidUnit, validUnit);
   }
+
+  void validateTokenStream(Token token) {
+    while (!token.isEof) {
+      expect(token.end, lessThanOrEqualTo(token.next.offset));
+      token = token.next;
+    }
+  }
 }
 
 /**
diff --git a/pkg/analyzer/test/src/fasta/resolution_applier_test.dart b/pkg/analyzer/test/src/fasta/resolution_applier_test.dart
index a327082..6c720dd 100644
--- a/pkg/analyzer/test/src/fasta/resolution_applier_test.dart
+++ b/pkg/analyzer/test/src/fasta/resolution_applier_test.dart
@@ -35,14 +35,8 @@
   ///    [referencedElements], and [types] to the body of the function.
   /// 3. Verify that everything in the function body that should be resolved
   ///    _is_ resolved.
-  void applyTypes(
-      String content,
-      List<Element> declaredElements,
-      List<int> declareElementOffsets,
-      List<Element> referencedElements,
-      List<int> referencedElementOffsets,
-      List<DartType> types,
-      List<int> typeOffsets) {
+  void applyTypes(String content, List<Element> declaredElements,
+      List<Element> referencedElements, List<DartType> types) {
     CompilationUnit unit = parseCompilationUnit(content);
     expect(unit, isNotNull);
     expect(unit.declarations, hasLength(1));
@@ -51,11 +45,8 @@
     ResolutionApplier applier = new ResolutionApplier(
         new _TestTypeContext(),
         declaredElements,
-        declareElementOffsets,
         referencedElements,
-        referencedElementOffsets,
-        types.map((type) => new _KernelWrapperOfType(type)).toList(),
-        typeOffsets);
+        types.map((type) => new _KernelWrapperOfType(type)).toList());
 
     body.accept(applier);
     applier.checkDone();
@@ -76,24 +67,15 @@
 f(String s, int i) {
   return s + i;
 }
-''', [], [], [
+''', [], [
       _createFunctionParameter('s', 9),
       new MethodElementImpl('+', -1),
       _createFunctionParameter('i', 16),
-    ], [
-      30,
-      32,
-      34
     ], <DartType>[
       typeProvider.stringType,
       new FunctionTypeImpl(new FunctionElementImpl('+', -1)),
       typeProvider.intType,
       typeProvider.stringType,
-    ], [
-      30,
-      32,
-      32,
-      34
     ]);
   }
 
@@ -102,26 +84,16 @@
 f(Object a) {
   return a.b().c();
 }
-''', [], [], [
+''', [], [
       _createFunctionParameter('a', 9),
       new MethodElementImpl('b', -1),
       new MethodElementImpl('c', -1)
-    ], [
-      23,
-      25,
-      29
     ], <DartType>[
       typeProvider.objectType,
       typeProvider.objectType,
       typeProvider.objectType,
       typeProvider.objectType,
       typeProvider.objectType
-    ], [
-      23,
-      25,
-      26,
-      29,
-      30
     ]);
   }
 
@@ -141,71 +113,50 @@
 f() {
   int Function(String, bool x) foo;
 }
-''', [new LocalVariableElementImpl('foo', 37)], [37], [], [],
-        <DartType>[functionType], [37]);
+''', [new LocalVariableElementImpl('foo', 37)], [], <DartType>[functionType]);
   }
 
   void test_listLiteral_const_noAnnotation() {
     applyTypes(r'''
 get f => const ['a', 'b', 'c'];
-''', [], [], [], [], <DartType>[
+''', [], [], <DartType>[
       typeProvider.stringType,
       typeProvider.stringType,
       typeProvider.stringType,
       typeProvider.listType.instantiate([typeProvider.stringType])
-    ], [
-      16,
-      21,
-      26,
-      9
     ]);
   }
 
   void test_listLiteral_const_typeAnnotation() {
     applyTypes(r'''
 get f => const <String>['a', 'b', 'c'];
-''', [], [], [], [], <DartType>[
+''', [], [], <DartType>[
       typeProvider.stringType,
       typeProvider.stringType,
       typeProvider.stringType,
       typeProvider.listType.instantiate([typeProvider.stringType])
-    ], [
-      24,
-      29,
-      34,
-      9
     ]);
   }
 
   void test_listLiteral_noAnnotation() {
     applyTypes(r'''
 get f => ['a', 'b', 'c'];
-''', [], [], [], [], <DartType>[
+''', [], [], <DartType>[
       typeProvider.stringType,
       typeProvider.stringType,
       typeProvider.stringType,
       typeProvider.listType.instantiate([typeProvider.stringType])
-    ], [
-      10,
-      15,
-      20,
-      9
     ]);
   }
 
   void test_listLiteral_typeAnnotation() {
     applyTypes(r'''
 get f => <String>['a', 'b', 'c'];
-''', [], [], [], [], <DartType>[
+''', [], [], <DartType>[
       typeProvider.stringType,
       typeProvider.stringType,
       typeProvider.stringType,
       typeProvider.listType.instantiate([typeProvider.stringType])
-    ], [
-      18,
-      23,
-      28,
-      17
     ]);
   }
 
@@ -218,14 +169,13 @@
 f() {
   Map<String, List<String>> m = {};
 }
-''', [new LocalVariableElementImpl('m', 34)], [34], [], [],
-        <DartType>[mapType, mapType], [34, 38]);
+''', [new LocalVariableElementImpl('m', 34)], [], <DartType>[mapType, mapType]);
   }
 
   void test_mapLiteral_const_noAnnotation() {
     applyTypes(r'''
 get f => const {'a' : 1, 'b' : 2, 'c' : 3};
-''', [], [], [], [], <DartType>[
+''', [], [], <DartType>[
       typeProvider.stringType,
       typeProvider.intType,
       typeProvider.stringType,
@@ -234,21 +184,13 @@
       typeProvider.intType,
       typeProvider.mapType
           .instantiate([typeProvider.stringType, typeProvider.intType])
-    ], [
-      16,
-      22,
-      25,
-      31,
-      34,
-      40,
-      9
     ]);
   }
 
   void test_mapLiteral_const_typeAnnotation() {
     applyTypes(r'''
 get f => const <String, int>{'a' : 1, 'b' : 2, 'c' : 3};
-''', [], [], [], [], <DartType>[
+''', [], [], <DartType>[
       typeProvider.stringType,
       typeProvider.intType,
       typeProvider.stringType,
@@ -257,21 +199,13 @@
       typeProvider.intType,
       typeProvider.mapType
           .instantiate([typeProvider.stringType, typeProvider.intType])
-    ], [
-      29,
-      35,
-      38,
-      44,
-      47,
-      53,
-      9
     ]);
   }
 
   void test_mapLiteral_noAnnotation() {
     applyTypes(r'''
 get f => {'a' : 1, 'b' : 2, 'c' : 3};
-''', [], [], [], [], <DartType>[
+''', [], [], <DartType>[
       typeProvider.stringType,
       typeProvider.intType,
       typeProvider.stringType,
@@ -280,21 +214,13 @@
       typeProvider.intType,
       typeProvider.mapType
           .instantiate([typeProvider.stringType, typeProvider.intType])
-    ], [
-      10,
-      16,
-      19,
-      25,
-      28,
-      34,
-      9
     ]);
   }
 
   void test_mapLiteral_typeAnnotation() {
     applyTypes(r'''
 get f => <String, int>{'a' : 1, 'b' : 2, 'c' : 3};
-''', [], [], [], [], <DartType>[
+''', [], [], <DartType>[
       typeProvider.stringType,
       typeProvider.intType,
       typeProvider.stringType,
@@ -303,14 +229,6 @@
       typeProvider.intType,
       typeProvider.mapType
           .instantiate([typeProvider.stringType, typeProvider.intType])
-    ], [
-      23,
-      29,
-      32,
-      38,
-      41,
-      47,
-      22
     ]);
   }
 
@@ -319,18 +237,12 @@
 f(String s) {
   return s.length;
 }
-''', [], [], [
+''', [], [
       _createFunctionParameter('s', 9),
       new MethodElementImpl('length', -1)
-    ], [
-      23,
-      25
     ], <DartType>[
       typeProvider.stringType,
       typeProvider.intType,
-    ], [
-      23,
-      25
     ]);
   }
 
@@ -339,24 +251,15 @@
 f(String s) {
   return s.substring(3, 7);
 }
-''', [], [], [
+''', [], [
       _createFunctionParameter('s', 9),
       new MethodElementImpl('length', -1)
-    ], [
-      23,
-      25
     ], <DartType>[
       typeProvider.stringType,
       typeProvider.intType,
       typeProvider.intType,
       typeProvider.stringType,
       typeProvider.stringType
-    ], [
-      23,
-      25,
-      34,
-      35,
-      38
     ]);
   }
 
@@ -380,8 +283,7 @@
   A<int, String> foo;
 }
 //typedef B A<B, C>(C x);
-''', [new LocalVariableElementImpl('foo', 23)], [], [], [],
-        <DartType>[functionType], []);
+''', [new LocalVariableElementImpl('foo', 23)], [], <DartType>[functionType]);
   }
 
   /// Return a newly created parameter element with the given [name] and
diff --git a/pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart b/pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart
index 840e620..9e05d71 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart
@@ -436,7 +436,8 @@
       ..logger = new PerformanceLog(null)
       ..fileSystem = new _FileSystemAdaptor(resourceProvider)
       ..byteStore = new MemoryByteStore());
-    var driver = new KernelDriver(options, uriTranslator,
+    var driver = new KernelDriver(
+        options, uriTranslator, new KernelErrorListener(),
         metadataFactory: new AnalyzerMetadataFactory());
 
     KernelResult kernelResult = await driver.getKernel(testUri);
@@ -451,7 +452,7 @@
     }
 
     kernelResult.dependencies.forEach(addLibrary);
-    addLibrary(kernelResult.library);
+    addLibrary(kernelResult.libraryResult.library);
 
     if (DEBUG) {
       String testUriStr = testUri.toString();
diff --git a/pkg/analyzer/test/src/task/options_test.dart b/pkg/analyzer/test/src/task/options_test.dart
index c2366a2..9479152 100644
--- a/pkg/analyzer/test/src/task/options_test.dart
+++ b/pkg/analyzer/test/src/task/options_test.dart
@@ -270,7 +270,6 @@
         removeCode(StrongModeCode.TOP_LEVEL_INSTANCE_GETTER);
         removeCode(StrongModeCode.TOP_LEVEL_TYPE_ARGUMENTS);
         removeCode(StrongModeCode.TOP_LEVEL_UNSUPPORTED);
-        removeCode(StrongModeCode.UNSAFE_BLOCK_CLOSURE_INFERENCE);
       } else if (errorType == TodoCode) {
         declaredNames.remove('TODO_REGEX');
       }
diff --git a/pkg/analyzer_cli/lib/src/driver.dart b/pkg/analyzer_cli/lib/src/driver.dart
index 0f54ab7..103d93f 100644
--- a/pkg/analyzer_cli/lib/src/driver.dart
+++ b/pkg/analyzer_cli/lib/src/driver.dart
@@ -252,7 +252,7 @@
 
     // Create a context, or re-use the previous one.
     try {
-      _createAnalysisContext(options);
+      _createContextAndAnalyze(options);
     } on _DriverError catch (error) {
       outSink.writeln(error.msg);
       return ErrorSeverity.ERROR;
@@ -567,7 +567,7 @@
 
   /// Create an analysis context that is prepared to analyze sources according
   /// to the given [options], and store it in [_context].
-  void _createAnalysisContext(CommandLineOptions options) {
+  void _createContextAndAnalyze(CommandLineOptions options) {
     // If not the same command-line options, clear cached information.
     if (!_equalCommandLineOptions(_previousOptions, options)) {
       _previousOptions = options;
@@ -699,7 +699,8 @@
         a.lint == b.lint &&
         AnalysisOptionsImpl.compareLints(a.lintRules, b.lintRules) &&
         a.preserveComments == b.preserveComments &&
-        a.strongMode == b.strongMode;
+        a.strongMode == b.strongMode &&
+        a.useFastaParser == b.useFastaParser;
   }
 
   _PackageInfo _findPackages(CommandLineOptions options) {
@@ -977,12 +978,14 @@
 
 class _DriverError implements Exception {
   String msg;
+
   _DriverError(this.msg);
 }
 
 class _PackageInfo {
   Packages packages;
   Map<String, List<file_system.Folder>> packageMap;
+
   _PackageInfo(this.packages, this.packageMap);
 }
 
diff --git a/pkg/analyzer_cli/test/all.dart b/pkg/analyzer_cli/test/all.dart
index 567870e..82706ab 100644
--- a/pkg/analyzer_cli/test/all.dart
+++ b/pkg/analyzer_cli/test/all.dart
@@ -15,7 +15,7 @@
 import 'reporter_test.dart' as reporter_test;
 import 'sdk_ext_test.dart' as sdk_ext_test;
 import 'super_mixin_test.dart' as super_mixin_test;
-//import 'strong_mode_test.dart' as strong_mode_test;
+import 'strong_mode_test.dart' as strong_mode_test;
 
 main() {
   analysis_options_test.main();
@@ -31,7 +31,5 @@
   reporter_test.main();
   sdk_ext_test.main();
   super_mixin_test.main();
-  // TODO(pq): fix tests to run safely on the bots
-  // https://github.com/dart-lang/sdk/issues/25001
-  //strong_mode_test.main();
+  strong_mode_test.main();
 }
diff --git a/pkg/analyzer_cli/test/driver_test.dart b/pkg/analyzer_cli/test/driver_test.dart
index ea9d072..42230ab 100644
--- a/pkg/analyzer_cli/test/driver_test.dart
+++ b/pkg/analyzer_cli/test/driver_test.dart
@@ -30,8 +30,11 @@
   defineReflectiveSuite(() {
     defineReflectiveTests(BuildModeTest);
     defineReflectiveTests(ExitCodesTest);
+    defineReflectiveTests(ExitCodesTest_PreviewDart2);
     defineReflectiveTests(LinterTest);
+    defineReflectiveTests(LinterTest_PreviewDart2);
     defineReflectiveTests(OptionsTest);
+    defineReflectiveTests(OptionsTest_PreviewDart2);
   }, name: 'Driver');
 }
 
@@ -47,19 +50,26 @@
   /// Normalize text with bullets.
   String bulletToDash(item) => '$item'.replaceAll('•', '-');
 
+  bool get usePreviewDart2 => false;
+
   /// Start a driver for the given [source], optionally providing additional
-  /// [args] and an [options] file path.  The value of [options] defaults to
-  /// an empty options file to avoid unwanted configuration from an otherwise
+  /// [args] and an [options] file path. The value of [options] defaults to an
+  /// empty options file to avoid unwanted configuration from an otherwise
   /// discovered options file.
-  Future<Null> drive(String source,
-      {String options: emptyOptionsFile,
-      List<String> args: const <String>[]}) async {
+  Future<Null> drive(
+    String source, {
+    String options: emptyOptionsFile,
+    List<String> args: const <String>[],
+  }) async {
     driver = new Driver(isTesting: true);
-    var cmd = [
+    var cmd = <String>[
       '--options',
       path.join(testDirectory, options),
       _adjustFileSpec(source)
     ]..addAll(args);
+    if (usePreviewDart2) {
+      cmd.insert(0, '--preview-dart-2');
+    }
     await driver.start(cmd);
   }
 
@@ -591,6 +601,27 @@
 }
 
 @reflectiveTest
+class ExitCodesTest_PreviewDart2 extends ExitCodesTest {
+  @override
+  bool get usePreviewDart2 => true;
+
+  @override
+  @failingTest
+  test_fatalErrors() {
+    // TODO(devoncarew): This test times out when used with @failingTest.
+    return new Future.error('failing test');
+  }
+
+  @override
+  @failingTest
+  test_fatalWarnings() => super.test_fatalWarnings();
+
+  @override
+  @failingTest
+  test_notFatalWarnings() => super.test_notFatalWarnings();
+}
+
+@reflectiveTest
 class LinterTest extends BaseTest {
   String get optionsFileName => AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE;
 
@@ -688,6 +719,12 @@
 }
 
 @reflectiveTest
+class LinterTest_PreviewDart2 extends LinterTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
+
+@reflectiveTest
 class OptionsTest extends BaseTest {
   String get optionsFileName => AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE;
 
@@ -794,6 +831,33 @@
   }
 }
 
+@reflectiveTest
+class OptionsTest_PreviewDart2 extends OptionsTest {
+  @override
+  bool get usePreviewDart2 => true;
+
+  @override
+  @failingTest
+  test_basic_filters() => super.test_basic_filters();
+
+  @override
+  @failingTest
+  test_basic_language() => super.test_basic_language();
+
+  @override
+  @failingTest
+  test_basic_strongMode() => super.test_basic_strongMode();
+
+  @override
+  @failingTest
+  test_includeDirective() => super.test_includeDirective();
+
+  @override
+  @failingTest
+  test_withFlags_overrideFatalWarning() =>
+      super.test_withFlags_overrideFatalWarning();
+}
+
 class TestSource implements Source {
   TestSource();
 
diff --git a/pkg/analyzer_cli/test/strong_mode_test.dart b/pkg/analyzer_cli/test/strong_mode_test.dart
index a122e98..51c647c 100644
--- a/pkg/analyzer_cli/test/strong_mode_test.dart
+++ b/pkg/analyzer_cli/test/strong_mode_test.dart
@@ -13,9 +13,7 @@
 import 'driver_test.dart';
 
 main() {
-  // TODO(pq): fix tests to run safely on the bots
-  // https://github.com/dart-lang/sdk/issues/25001
-//  defineReflectiveTests(StrongModeTest);
+  defineReflectiveTests(StrongModeTest);
 }
 
 /// End-to-end test for --strong checking.
diff --git a/pkg/compiler/lib/src/compile_time_constants.dart b/pkg/compiler/lib/src/compile_time_constants.dart
index 3462968..817f22f 100644
--- a/pkg/compiler/lib/src/compile_time_constants.dart
+++ b/pkg/compiler/lib/src/compile_time_constants.dart
@@ -270,8 +270,8 @@
                   node, element.messageKind, element.messageArguments);
             } else {
               assert(elementType is MethodTypeVariableType);
-              reporter.reportErrorMessage(
-                  node, MessageKind.TYPE_VARIABLE_FROM_METHOD_NOT_REIFIED);
+              // Used to `reportErrorMessage` here, but with Dart 2 upcoming
+              // very soon we do not emit this message any more.
             }
           } else {
             // We need to throw an exception at runtime.
diff --git a/pkg/compiler/lib/src/dart2js.dart b/pkg/compiler/lib/src/dart2js.dart
index 9d89aca..2fa6522 100644
--- a/pkg/compiler/lib/src/dart2js.dart
+++ b/pkg/compiler/lib/src/dart2js.dart
@@ -289,8 +289,6 @@
 
   void setUseKernel(String argument) {
     useKernel = true;
-    // TODO(sigmund): remove once we support inlining with `useKernel`.
-    options.add(Flags.disableInlining);
     passThrough(argument);
   }
 
diff --git a/pkg/compiler/lib/src/diagnostics/messages.dart b/pkg/compiler/lib/src/diagnostics/messages.dart
index 97252ba5c..c803871 100644
--- a/pkg/compiler/lib/src/diagnostics/messages.dart
+++ b/pkg/compiler/lib/src/diagnostics/messages.dart
@@ -404,8 +404,6 @@
   TYPE_ARGUMENT_COUNT_MISMATCH,
   TYPE_VARIABLE_IN_CONSTANT,
   TYPE_VARIABLE_WITHIN_STATIC_MEMBER,
-  TYPE_VARIABLE_FROM_METHOD_NOT_REIFIED,
-  TYPE_VARIABLE_FROM_METHOD_CONSIDERED_DYNAMIC,
   TYPEDEF_FORMAL_WITH_DEFAULT,
   UNARY_OPERATOR_BAD_ARITY,
   UNBOUND_LABEL,
@@ -1200,43 +1198,6 @@
 """
           ]),
 
-      MessageKind.TYPE_VARIABLE_FROM_METHOD_NOT_REIFIED: const MessageTemplate(
-          MessageKind.TYPE_VARIABLE_FROM_METHOD_NOT_REIFIED,
-          "Method type variables do not have a runtime value.",
-          howToFix: "Try using the upper bound of the type variable, "
-              "or refactor the code to avoid needing this runtime value.",
-          examples: const [
-            """
-// Method type variables are not reified, so they cannot be returned.
-Type f<T>() => T;
-
-main() => f<int>();
-""",
-            """
-// Method type variables are not reified, so they cannot be tested dynamically.
-bool f<T>(Object o) => o is T;
-
-main() => f<int>(42);
-"""
-          ]),
-
-      MessageKind.TYPE_VARIABLE_FROM_METHOD_CONSIDERED_DYNAMIC:
-          const MessageTemplate(
-              MessageKind.TYPE_VARIABLE_FROM_METHOD_CONSIDERED_DYNAMIC,
-              "Method type variables are treated as `dynamic` in `as` "
-              "expressions.",
-              howToFix:
-                  "Try using the upper bound of the type variable, or check "
-                  "that the blind success of the test does not introduce bugs.",
-              examples: const [
-            """
-// Method type variables are not reified, so they cannot be tested dynamically.
-bool f<T>(Object o) => o as T;
-
-main() => f<int>(42);
-"""
-          ]),
-
       MessageKind.INVALID_TYPE_VARIABLE_BOUND: const MessageTemplate(
           MessageKind.INVALID_TYPE_VARIABLE_BOUND,
           "'#{typeArgument}' is not a subtype of bound '#{bound}' for "
@@ -2707,8 +2668,7 @@
       MessageKind.EXPECTED_IDENTIFIER_NOT_RESERVED_WORD: const MessageTemplate(
           MessageKind.EXPECTED_IDENTIFIER_NOT_RESERVED_WORD,
           "'#{keyword}' is a reserved word and can't be used here.",
-          howToFix: "Try using a different name.",
-          examples: const ["do() {} main() {}"]),
+          howToFix: "Try using a different name."),
 
       MessageKind.NAMED_FUNCTION_EXPRESSION: const MessageTemplate(
           MessageKind.NAMED_FUNCTION_EXPRESSION,
diff --git a/pkg/compiler/lib/src/elements/types.dart b/pkg/compiler/lib/src/elements/types.dart
index d0d7896..0bb9763 100644
--- a/pkg/compiler/lib/src/elements/types.dart
+++ b/pkg/compiler/lib/src/elements/types.dart
@@ -2,6 +2,7 @@
 // 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 '../common/names.dart';
 import '../common_elements.dart';
 import '../util/util.dart' show equalElements;
 import 'entities.dart';
@@ -70,6 +71,9 @@
   /// Whether this type contains a type variable.
   bool get containsTypeVariables => false;
 
+  /// Is `true` if this type is the 'Object' type defined in 'dart:core'.
+  bool get isObject => false;
+
   /// Applies [f] to each occurence of a [ResolutionTypeVariableType] within
   /// this type.
   void forEachTypeVariable(f(TypeVariableType variable)) {}
@@ -118,7 +122,7 @@
 
   /// Returns `true` if [a] and [b] are assumed to be equivalent.
   bool isAssumed(FunctionTypeVariable a, FunctionTypeVariable b) {
-    return _assumptionMap[a].contains(b);
+    return _assumptionMap[a]?.contains(b) ?? false;
   }
 }
 
@@ -130,6 +134,11 @@
 
   bool get isInterfaceType => true;
 
+  bool get isObject {
+    return element.name == 'Object' &&
+        element.library.canonicalUri == Uris.dart_core;
+  }
+
   bool get containsTypeVariables =>
       typeArguments.any((type) => type.containsTypeVariables);
 
@@ -379,7 +388,7 @@
   /// type.
   final int index;
 
-  /// The bound of this existential type.
+  /// The bound of this function type variable.
   final DartType bound;
 
   FunctionTypeVariable(this.index, this.bound);
@@ -397,7 +406,7 @@
     if (index != -1) {
       return arguments[index];
     }
-    // The existential type was not substituted.
+    // The function type variable was not substituted.
     return this;
   }
 
@@ -613,6 +622,13 @@
       for (int index = 0; index < typeVariables.length; index++) {
         assumptions.assume(typeVariables[index], other.typeVariables[index]);
       }
+      for (int index = 0; index < typeVariables.length; index++) {
+        if (!typeVariables[index]
+            .bound
+            ._equals(other.typeVariables[index].bound, assumptions)) {
+          return false;
+        }
+      }
     }
     bool result = returnType == other.returnType &&
         _equalTypes(parameterTypes, other.parameterTypes, assumptions) &&
@@ -636,12 +652,16 @@
     if (typeVariables.isNotEmpty) {
       sb.write('<');
       bool needsComma = false;
-      // TODO(johnniwinther): Include bounds.
       for (FunctionTypeVariable typeVariable in typeVariables) {
         if (needsComma) {
           sb.write(',');
         }
         sb.write(typeVariable);
+        DartType bound = typeVariable.bound;
+        if (!bound.isObject) {
+          sb.write(' extends ');
+          sb.write(typeVariable.bound);
+        }
         needsComma = true;
       }
       sb.write('>');
@@ -781,6 +801,8 @@
     extends BaseDartTypeVisitor<bool, T> {
   CommonElements get commonElements;
 
+  final _Assumptions assumptions = new _Assumptions();
+
   /// Ensures that the super hierarchy of [type] is computed.
   void ensureResolved(InterfaceType type) {}
 
@@ -860,6 +882,26 @@
       return false;
     }
 
+    if (tf.typeVariables.length != sf.typeVariables.length) {
+      return false;
+    }
+    for (int i = 0; i < tf.typeVariables.length; i++) {
+      assumptions.assume(tf.typeVariables[i], sf.typeVariables[i]);
+    }
+    for (int i = 0; i < tf.typeVariables.length; i++) {
+      if (!tf.typeVariables[i].bound
+          ._equals(sf.typeVariables[i].bound, assumptions)) {
+        return false;
+      }
+    }
+    bool result = visitFunctionTypeInternal(tf, sf);
+    for (int i = 0; i < tf.typeVariables.length; i++) {
+      assumptions.forget(tf.typeVariables[i], sf.typeVariables[i]);
+    }
+    return result;
+  }
+
+  bool visitFunctionTypeInternal(FunctionType tf, FunctionType sf) {
     // TODO(johnniwinther): Rewrite the function subtyping to be more readable
     // but still as efficient.
 
@@ -973,6 +1015,11 @@
     if (invalidTypeVariableBounds(bound, s)) return false;
     return true;
   }
+
+  bool visitFunctionTypeVariable(FunctionTypeVariable t, DartType s) {
+    if (!s.isFunctionTypeVariable) return false;
+    return assumptions.isAssumed(t, s);
+  }
 }
 
 abstract class MoreSpecificVisitor<T extends DartType>
diff --git a/pkg/compiler/lib/src/js_backend/runtime_types.dart b/pkg/compiler/lib/src/js_backend/runtime_types.dart
index 5f1be34..89ee3d0 100644
--- a/pkg/compiler/lib/src/js_backend/runtime_types.dart
+++ b/pkg/compiler/lib/src/js_backend/runtime_types.dart
@@ -79,7 +79,7 @@
   /// in the return type or the argument types.
   Set<ClassEntity> getReferencedClasses(FunctionType type);
 
-  /// Return all classes that are uses a type arguments.
+  /// Return all classes that use type arguments.
   Set<ClassEntity> getRequiredArgumentClasses();
 }
 
diff --git a/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart b/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart
index 384d30a..8b04d86 100644
--- a/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart
+++ b/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart
@@ -235,7 +235,7 @@
     // It is important that this is the penultimate step, at this point,
     // neededClasses must only contain classes that have been resolved and
     // codegen'd. The rtiNeededClasses may contain additional classes, but
-    // these are thought to not have been instantiated, so we neeed to be able
+    // these are thought to not have been instantiated, so we need to be able
     // to identify them later and make sure we only emit "empty shells" without
     // fields, etc.
     classesOnlyNeededForRti = new Set<ClassEntity>();
diff --git a/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart b/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
index 9e7e03b..c77ab3b 100644
--- a/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
@@ -1109,7 +1109,7 @@
 
     bool isIntercepted = false;
     if (method is InstanceMethod) {
-      MethodElement element = method.element;
+      FunctionEntity element = method.element;
       isIntercepted = _interceptorData.isInterceptedMethod(element);
     }
     int requiredParameterCount = 0;
diff --git a/pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart b/pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart
index 68206e7..9f50a9b 100644
--- a/pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart
@@ -36,7 +36,7 @@
 import '../../compiler.dart' show Compiler;
 import '../../constants/values.dart' show ConstantValue, FunctionConstantValue;
 import '../../common_elements.dart' show CommonElements;
-import '../../elements/elements.dart' show ClassElement, MethodElement;
+import '../../elements/elements.dart' show ClassElement;
 import '../../elements/entities.dart';
 import '../../hash/sha1.dart' show Hasher;
 import '../../io/code_output.dart';
diff --git a/pkg/compiler/lib/src/js_model/locals.dart b/pkg/compiler/lib/src/js_model/locals.dart
index f0bd765..4e09ba2 100644
--- a/pkg/compiler/lib/src/js_model/locals.dart
+++ b/pkg/compiler/lib/src/js_model/locals.dart
@@ -440,7 +440,10 @@
     for (ir.VariableDeclaration variable in node.positionalParameters) {
       f(localsMap.getLocalVariable(variable));
     }
-    for (ir.VariableDeclaration variable in node.namedParameters) {
+    List<ir.VariableDeclaration> namedParameters =
+        new List<ir.VariableDeclaration>.from(node.namedParameters);
+    namedParameters.sort(namedOrdering);
+    for (ir.VariableDeclaration variable in namedParameters) {
       f(localsMap.getLocalVariable(variable));
     }
   }
diff --git a/pkg/compiler/lib/src/kernel/deferred_load.dart b/pkg/compiler/lib/src/kernel/deferred_load.dart
index 5fc4f97..ea96d26 100644
--- a/pkg/compiler/lib/src/kernel/deferred_load.dart
+++ b/pkg/compiler/lib/src/kernel/deferred_load.dart
@@ -15,8 +15,8 @@
 
 class KernelDeferredLoadTask extends DeferredLoadTask {
   KernelToElementMapForImpact _elementMap;
-  Map<ir.Library, Set<ir.Member>> _additionalExportsSets =
-      <ir.Library, Set<ir.Member>>{};
+  Map<ir.Library, Set<ir.NamedNode>> _additionalExportsSets =
+      <ir.Library, Set<ir.NamedNode>>{};
 
   KernelDeferredLoadTask(Compiler compiler, this._elementMap) : super(compiler);
 
@@ -85,8 +85,8 @@
         "KernelDeferredLoadTask.addMirrorElementsForLibrary");
   }
 
-  Set<ir.Member> additionalExports(ir.Library library) {
-    return _additionalExportsSets[library] ??= new Set<ir.Member>.from(
+  Set<ir.NamedNode> additionalExports(ir.Library library) {
+    return _additionalExportsSets[library] ??= new Set<ir.NamedNode>.from(
         library.additionalExports.map((ir.Reference ref) => ref.node));
   }
 
diff --git a/pkg/compiler/lib/src/kernel/element_map_impl.dart b/pkg/compiler/lib/src/kernel/element_map_impl.dart
index 951c0da..2d6dc79 100644
--- a/pkg/compiler/lib/src/kernel/element_map_impl.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart
@@ -445,10 +445,10 @@
         typeParameters
             .add(getDartType(new ir.TypeParameterType(typeParameter)));
       }
-      // TODO(johnniwinther): Support bounds.
       typeVariables = new List<FunctionTypeVariable>.generate(
           node.typeParameters.length,
-          (int index) => new FunctionTypeVariable(index, const DynamicType()));
+          (int index) => new FunctionTypeVariable(
+              index, getDartType(node.typeParameters[index].bound)));
 
       DartType subst(DartType type) {
         return type.subst(typeVariables, typeParameters);
@@ -1589,9 +1589,11 @@
     List<FunctionTypeVariable> typeVariables;
     for (ir.TypeParameter typeParameter in node.typeParameters) {
       if (enableFunctionTypeVariables) {
-        // TODO(johnniwinther): Support bounds.
+        // TODO(johnniwinther): Support recursive type variable bounds, like
+        // `void Function<T extends Foo<T>>(T t)` when #31531 is fixed.
+        DartType bound = typeParameter.bound.accept(this);
         FunctionTypeVariable typeVariable =
-            new FunctionTypeVariable(index, const DynamicType());
+            new FunctionTypeVariable(index, bound);
         currentFunctionTypeParameters[typeParameter] = typeVariable;
         typeVariables ??= <FunctionTypeVariable>[];
         typeVariables.add(typeVariable);
diff --git a/pkg/compiler/lib/src/resolution/members.dart b/pkg/compiler/lib/src/resolution/members.dart
index 0cc75e9..d939a65 100644
--- a/pkg/compiler/lib/src/resolution/members.dart
+++ b/pkg/compiler/lib/src/resolution/members.dart
@@ -1131,13 +1131,6 @@
       sendStructure = new IsStructure(type);
     }
 
-    // GENERIC_METHODS: Method type variables are not reified so we must warn
-    // about the error which will occur at runtime.
-    if (type is MethodTypeVariableType) {
-      reporter.reportWarningMessage(
-          node, MessageKind.TYPE_VARIABLE_FROM_METHOD_NOT_REIFIED);
-    }
-
     registry.registerTypeUse(new TypeUse.isCheck(type));
     registry.registerSendStructure(node, sendStructure);
     return const NoneResult();
@@ -1152,13 +1145,6 @@
     ResolutionDartType type =
         resolveTypeAnnotation(typeNode, registerCheckedModeCheck: false);
 
-    // GENERIC_METHODS: Method type variables are not reified, so we must inform
-    // the developer about the potentially bug-inducing semantics.
-    if (type is MethodTypeVariableType) {
-      reporter.reportHintMessage(
-          node, MessageKind.TYPE_VARIABLE_FROM_METHOD_CONSIDERED_DYNAMIC);
-    }
-
     registry.registerTypeUse(new TypeUse.asCast(type));
     registry.registerSendStructure(node, new AsStructure(type));
     return const NoneResult();
@@ -1927,12 +1913,6 @@
       // TODO(johnniwinther): Clean up registration of elements and selectors
       // for this case.
     } else {
-      // GENERIC_METHODS: Method type variables are not reified so we must warn
-      // about the error which will occur at runtime.
-      if (element.type is MethodTypeVariableType) {
-        reporter.reportWarningMessage(
-            node, MessageKind.TYPE_VARIABLE_FROM_METHOD_NOT_REIFIED);
-      }
       semantics = new StaticAccess.typeParameterTypeLiteral(element);
     }
 
diff --git a/pkg/compiler/lib/src/resolved_uri_translator.dart b/pkg/compiler/lib/src/resolved_uri_translator.dart
index 4363775..f40aeb3 100644
--- a/pkg/compiler/lib/src/resolved_uri_translator.dart
+++ b/pkg/compiler/lib/src/resolved_uri_translator.dart
@@ -122,7 +122,10 @@
               importingLibrary.canonicalUri.path
                   .contains('tests/compiler/dart2js_native') ||
               importingLibrary.canonicalUri.path
-                  .contains('tests/compiler/dart2js_extra'));
+                  .contains('tests/compiler/dart2js_extra') ||
+              (importingLibrary.canonicalUri.scheme == 'package' &&
+                  importingLibrary.canonicalUri.path
+                      .startsWith('dart_internal/')));
 
       if (!allowInternalLibraryAccess) {
         if (importingLibrary != null) {
diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart
index 8d4c2d4..803a408 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -190,9 +190,10 @@
           if (target is ir.Procedure) {
             if (target.isExternal) {
               buildExternalFunctionNode(
-                  _ensureDefaultArgumentValues(target.function));
+                  targetElement, _ensureDefaultArgumentValues(target.function));
             } else {
-              buildFunctionNode(_ensureDefaultArgumentValues(target.function));
+              buildFunctionNode(
+                  targetElement, _ensureDefaultArgumentValues(target.function));
             }
           } else if (target is ir.Field) {
             if (handleConstantField(targetElement, registry, closedWorld)) {
@@ -204,9 +205,11 @@
             }
             buildField(target);
           } else if (target is ir.FunctionExpression) {
-            buildFunctionNode(_ensureDefaultArgumentValues(target.function));
+            buildFunctionNode(
+                targetElement, _ensureDefaultArgumentValues(target.function));
           } else if (target is ir.FunctionDeclaration) {
-            buildFunctionNode(_ensureDefaultArgumentValues(target.function));
+            buildFunctionNode(
+                targetElement, _ensureDefaultArgumentValues(target.function));
           } else {
             throw 'No case implemented to handle target: '
                 '$target for $targetElement';
@@ -215,7 +218,7 @@
         case MemberKind.constructor:
           ir.Constructor constructor = definition.node;
           _ensureDefaultArgumentValues(constructor.function);
-          buildConstructor(constructor);
+          buildConstructor(targetElement, constructor);
           break;
         case MemberKind.constructorBody:
           ir.Constructor constructor = definition.node;
@@ -284,37 +287,37 @@
     return _elementMap.getFieldConstantValue(field);
   }
 
-  void buildField(ir.Field field) {
-    _inLazyInitializerExpression = field.isStatic;
-    openFunction();
-    if (field.isInstanceMember && options.enableTypeAssertions) {
+  void buildField(ir.Field node) {
+    _inLazyInitializerExpression = node.isStatic;
+    FieldEntity field = _elementMap.getMember(node);
+    openFunction(field);
+    if (node.isInstanceMember && options.enableTypeAssertions) {
       HInstruction thisInstruction = localsHandler.readThis(
-          sourceInformation: _sourceInformationBuilder.buildGet(field));
+          sourceInformation: _sourceInformationBuilder.buildGet(node));
       // Use dynamic type because the type computed by the inferrer is
       // narrowed to the type annotation.
-      FieldEntity fieldEntity = _elementMap.getMember(field);
       HInstruction parameter =
-          new HParameterValue(fieldEntity, commonMasks.dynamicType);
+          new HParameterValue(field, commonMasks.dynamicType);
       // Add the parameter as the last instruction of the entry block.
       // If the method is intercepted, we want the actual receiver
       // to be the first parameter.
       graph.entry.addBefore(graph.entry.last, parameter);
       HInstruction value = typeBuilder.potentiallyCheckOrTrustType(
-          parameter, _getDartTypeIfValid(field.type));
-      add(new HFieldSet(fieldEntity, thisInstruction, value));
+          parameter, _getDartTypeIfValid(node.type));
+      add(new HFieldSet(field, thisInstruction, value));
     } else {
-      if (field.initializer != null) {
-        field.initializer.accept(this);
+      if (node.initializer != null) {
+        node.initializer.accept(this);
         HInstruction fieldValue = pop();
         HInstruction checkInstruction = typeBuilder.potentiallyCheckOrTrustType(
-            fieldValue, _getDartTypeIfValid(field.type));
+            fieldValue, _getDartTypeIfValid(node.type));
         stack.add(checkInstruction);
       } else {
         stack.add(graph.addConstantNull(closedWorld));
       }
       HInstruction value = pop();
       closeAndGotoExit(
-          new HReturn(value, _sourceInformationBuilder.buildReturn(field)));
+          new HReturn(value, _sourceInformationBuilder.buildReturn(node)));
     }
     closeFunction();
   }
@@ -344,16 +347,20 @@
   /// parameters.  If the class has type parameters but does not need them, bind
   /// to `dynamic` (represented as `null`) so the bindings are available for
   /// building types up the inheritance chain of generative constructors.
-  void _addClassTypeVariablesIfNeeded(ir.Member constructor) {
-    ir.Class enclosing = constructor.enclosingClass;
-    ClassEntity cls = _elementMap.getClass(enclosing);
-    bool needParameters;
-    enclosing.typeParameters.forEach((ir.TypeParameter typeParameter) {
-      TypeVariableType typeVariableType =
-          _elementMap.getDartType(new ir.TypeParameterType(typeParameter));
+  void _addClassTypeVariablesIfNeeded(MemberEntity member) {
+    if (!member.isConstructor && member is! ConstructorBodyEntity) {
+      return;
+    }
+    ClassEntity cls = member.enclosingClass;
+    InterfaceType thisType = _elementMap.elementEnvironment.getThisType(cls);
+    if (thisType.typeArguments.isEmpty) {
+      return;
+    }
+    bool needsRti = rtiNeed.classNeedsRti(cls);
+    thisType.typeArguments.forEach((DartType _typeVariable) {
+      TypeVariableType typeVariableType = _typeVariable;
       HInstruction param;
-      needParameters ??= rtiNeed.classNeedsRti(cls);
-      if (needParameters) {
+      if (needsRti) {
         param = addParameter(typeVariableType.element, commonMasks.nonNullType);
       } else {
         // Unused, so bind to `dynamic`.
@@ -391,34 +398,30 @@
   /// implication is that a class cannot be extended or mixed-in twice. If we in
   /// future support repeated uses of a mixin class, we should do so by cloning
   /// the mixin class in the Kernel input.
-  void buildConstructor(ir.Constructor constructor) {
+  void buildConstructor(ConstructorEntity constructor, ir.Constructor node) {
     SourceInformation sourceInformation =
-        _sourceInformationBuilder.buildCreate(constructor);
-    ir.Class constructedClass = constructor.enclosingClass;
+        _sourceInformationBuilder.buildCreate(node);
+    ClassEntity cls = constructor.enclosingClass;
 
     if (_inliningStack.isEmpty) {
-      openFunction(constructor.function);
+      openFunction(constructor, node.function);
     }
-    _addClassTypeVariablesIfNeeded(constructor);
-    _potentiallyAddFunctionParameterTypeChecks(constructor.function);
 
     // [fieldValues] accumulates the field initializer values, which may be
     // overwritten by initializer-list initializers.
-    Map<FieldEntity, HInstruction> fieldValues = <FieldEntity, HInstruction>{};
-    List<ir.Constructor> constructorChain = <ir.Constructor>[];
-    _buildInitializers(constructor, constructorChain, fieldValues);
+    ConstructorData constructorData = new ConstructorData();
+    _buildInitializers(node, constructorData);
 
     List<HInstruction> constructorArguments = <HInstruction>[];
     // Doing this instead of fieldValues.forEach because we haven't defined the
     // order of the arguments here. We can define that with JElements.
-    ClassEntity cls = _elementMap.getClass(constructedClass);
     bool isCustomElement = nativeData.isNativeOrExtendsNative(cls) &&
         !nativeData.isJsInteropClass(cls);
     InterfaceType thisType = _elementMap.elementEnvironment.getThisType(cls);
     List<FieldEntity> fields = <FieldEntity>[];
     _worldBuilder.forEachInstanceField(cls,
         (ClassEntity enclosingClass, FieldEntity member) {
-      var value = fieldValues[member];
+      HInstruction value = constructorData.fieldValues[member];
       if (value == null) {
         assert(isCustomElement || reporter.hasReportedError,
             'No initializer value for field ${member}');
@@ -431,6 +434,10 @@
       }
     });
 
+    addImplicitInstantiation(thisType);
+    List<DartType> instantiatedTypes =
+        new List<InterfaceType>.from(currentImplicitInstantiations);
+
     HInstruction newObject;
     if (isCustomElement) {
       // Bulk assign to the initialized fields.
@@ -450,10 +457,11 @@
         // Read the values of the type arguments and create a HTypeInfoExpression
         // to set on the newly create object.
         List<HInstruction> typeArguments = <HInstruction>[];
-        for (ir.DartType typeParameter
-            in constructedClass.thisType.typeArguments) {
-          HInstruction argument = localsHandler.readLocal(localsHandler
-              .getTypeVariableAsLocal(_elementMap.getDartType(typeParameter)));
+        InterfaceType thisType =
+            _elementMap.elementEnvironment.getThisType(cls);
+        for (DartType typeVariable in thisType.typeArguments) {
+          HInstruction argument = localsHandler
+              .readLocal(localsHandler.getTypeVariableAsLocal(typeVariable));
           typeArguments.add(argument);
         }
 
@@ -468,15 +476,15 @@
 
       newObject = new HCreate(cls, constructorArguments,
           new TypeMask.nonNullExact(cls, closedWorld), sourceInformation,
-          instantiatedTypes: <InterfaceType>[thisType],
-          hasRtiInput: hasRtiInput);
+          instantiatedTypes: instantiatedTypes, hasRtiInput: hasRtiInput);
 
       add(newObject);
     }
+    removeImplicitInstantiation(thisType);
 
     HInstruction interceptor;
     // Generate calls to the constructor bodies.
-    for (ir.Constructor body in constructorChain.reversed) {
+    for (ir.Constructor body in constructorData.constructorChain.reversed) {
       if (_isEmptyStatement(body.function.body)) continue;
 
       List<HInstruction> bodyCallInputs = <HInstruction>[];
@@ -492,9 +500,9 @@
       // Pass uncaptured arguments first, captured arguments in a box, then type
       // arguments.
 
-      ConstructorEntity constructorElement = _elementMap.getConstructor(body);
+      ConstructorEntity inlinedConstructor = _elementMap.getConstructor(body);
 
-      inlinedFrom(constructorElement, () {
+      inlinedFrom(inlinedConstructor, () {
         void handleParameter(ir.VariableDeclaration node) {
           Local parameter = localsMap.getLocalVariable(node);
           // If [parameter] is boxed, it will be a field in the box passed as
@@ -513,20 +521,20 @@
         // If there are locals that escape (i.e. mutated in closures), we pass the
         // box to the constructor.
         CapturedScope scopeData =
-            closureDataLookup.getCapturedScope(constructorElement);
+            closureDataLookup.getCapturedScope(inlinedConstructor);
         if (scopeData.requiresContextBox) {
           bodyCallInputs.add(localsHandler.readLocal(scopeData.context));
         }
 
         // Pass type arguments.
-        ir.Class currentClass = body.enclosingClass;
-        if (closedWorld.rtiNeed
-            .classNeedsRti(_elementMap.getClass(currentClass))) {
-          for (ir.DartType typeParameter
-              in currentClass.thisType.typeArguments) {
-            HInstruction argument = localsHandler.readLocal(
-                localsHandler.getTypeVariableAsLocal(
-                    _elementMap.getDartType(typeParameter)));
+        ClassEntity inlinedConstructorClass = inlinedConstructor.enclosingClass;
+        if (closedWorld.rtiNeed.classNeedsRti(inlinedConstructorClass)) {
+          InterfaceType thisType = _elementMap.elementEnvironment
+              .getThisType(inlinedConstructorClass);
+          for (DartType typeVariable in thisType.typeArguments) {
+            DartType result = localsHandler.substInContext(typeVariable);
+            HInstruction argument =
+                typeBuilder.analyzeTypeArgument(result, sourceElement);
             bodyCallInputs.add(argument);
           }
         }
@@ -534,15 +542,12 @@
         ConstructorBodyEntity constructorBody =
             _elementMap.getConstructorBody(body);
         if (!isCustomElement && // TODO(13836): Fix inlining.
-            _tryInlineMethod(constructorBody, null, null, bodyCallInputs,
-                constructor, sourceInformation)) {
+            _tryInlineMethod(constructorBody, null, null, bodyCallInputs, node,
+                sourceInformation)) {
           pop();
         } else {
-          _invokeConstructorBody(
-              body,
-              bodyCallInputs,
-              _sourceInformationBuilder
-                  .buildDeclaration(_elementMap.getMember(constructor)));
+          _invokeConstructorBody(body, bodyCallInputs,
+              _sourceInformationBuilder.buildDeclaration(constructor));
         }
       });
     }
@@ -584,10 +589,35 @@
 
   /// Collects the values for field initializers for the direct fields of
   /// [clazz].
-  void _collectFieldValues(
-      ir.Class clazz, Map<FieldEntity, HInstruction> fieldValues) {
+  void _collectFieldValues(ir.Class clazz, ConstructorData constructorData) {
+    void ensureTypeVariablesForInitializers(ClassEntity enclosingClass) {
+      if (!constructorData.includedClasses.add(enclosingClass)) return;
+      if (rtiNeed.classNeedsRti(enclosingClass)) {
+        // If [enclosingClass] needs RTI, we have to give a value to its type
+        // parameters. For a super constructor call, the type is the supertype
+        // of current class. For a redirecting constructor, the type is the
+        // current type. [LocalsHandler.substInContext] takes care of both.
+        InterfaceType thisType =
+            _elementMap.elementEnvironment.getThisType(enclosingClass);
+        InterfaceType type = localsHandler.substInContext(thisType);
+        List<DartType> arguments = type.typeArguments;
+        List<DartType> typeVariables = thisType.typeArguments;
+        assert(arguments.length == typeVariables.length);
+        Iterator<DartType> variables = typeVariables.iterator;
+        type.typeArguments.forEach((DartType argument) {
+          variables.moveNext();
+          TypeVariableType typeVariable = variables.current;
+          localsHandler.updateLocal(
+              localsHandler.getTypeVariableAsLocal(typeVariable),
+              typeBuilder.analyzeTypeArgument(argument, sourceElement));
+        });
+      }
+    }
+
     ClassEntity cls = _elementMap.getClass(clazz);
     _worldBuilder.forEachDirectInstanceField(cls, (FieldEntity field) {
+      ensureTypeVariablesForInitializers(field.enclosingClass);
+
       MemberDefinition definition = _elementMap.getMemberDefinition(field);
       ir.Field node;
       switch (definition.kind) {
@@ -601,7 +631,8 @@
         // Unassigned fields of native classes are not initialized to
         // prevent overwriting pre-initialized native properties.
         if (!nativeData.isNativeOrExtendsNative(cls)) {
-          fieldValues[field] = graph.addConstantNull(closedWorld);
+          constructorData.fieldValues[field] =
+              graph.addConstantNull(closedWorld);
         }
       } else if (node.initializer is! ir.NullLiteral ||
           !nativeData.isNativeClass(cls)) {
@@ -611,7 +642,7 @@
         // initializer.
         inlinedFrom(field, () {
           node.initializer.accept(this);
-          fieldValues[field] = pop();
+          constructorData.fieldValues[field] = pop();
         });
       }
     });
@@ -623,37 +654,35 @@
 
   /// Collects field initializers all the way up the inheritance chain.
   void _buildInitializers(
-      ir.Constructor constructor,
-      List<ir.Constructor> constructorChain,
-      Map<FieldEntity, HInstruction> fieldValues) {
+      ir.Constructor constructor, ConstructorData constructorData) {
     assert(
         _elementMap.getConstructor(constructor) == localsMap.currentMember,
         failedAt(
             localsMap.currentMember,
             'Expected ${localsMap.currentMember} '
             'but found ${_elementMap.getConstructor(constructor)}.'));
-    constructorChain.add(constructor);
+    constructorData.constructorChain.add(constructor);
 
     if (!isRedirectingConstructor(constructor)) {
       // Compute values for field initializers, but only if this is not a
       // redirecting constructor, since the target will compute the fields.
-      _collectFieldValues(constructor.enclosingClass, fieldValues);
+      _collectFieldValues(constructor.enclosingClass, constructorData);
     }
     var foundSuperOrRedirectCall = false;
     for (var initializer in constructor.initializers) {
       if (initializer is ir.FieldInitializer) {
         initializer.value.accept(this);
-        fieldValues[_elementMap.getField(initializer.field)] = pop();
+        constructorData.fieldValues[_elementMap.getField(initializer.field)] =
+            pop();
       } else if (initializer is ir.SuperInitializer) {
         assert(!foundSuperOrRedirectCall);
         foundSuperOrRedirectCall = true;
-        _inlineSuperInitializer(
-            initializer, constructorChain, fieldValues, constructor);
+        _inlineSuperInitializer(initializer, constructorData, constructor);
       } else if (initializer is ir.RedirectingInitializer) {
         assert(!foundSuperOrRedirectCall);
         foundSuperOrRedirectCall = true;
         _inlineRedirectingInitializer(
-            initializer, constructorChain, fieldValues, constructor);
+            initializer, constructorData, constructor);
       } else if (initializer is ir.LocalInitializer) {
         // LocalInitializer is like a let-expression that is in scope for the
         // rest of the initializers.
@@ -724,33 +753,11 @@
     return builtArguments;
   }
 
-  /// Creates localsHandler bindings for type parameters of a Supertype.
-  void _bindSupertypeTypeParameters(ir.Supertype supertype) {
-    ir.Class cls = supertype.classNode;
-    var parameters = cls.typeParameters;
-    var arguments = supertype.typeArguments;
-    assert(arguments.length == parameters.length);
-
-    for (int i = 0; i < parameters.length; i++) {
-      ir.DartType argument = arguments[i];
-      ir.TypeParameter parameter = parameters[i];
-
-      localsHandler.updateLocal(
-          localsHandler.getTypeVariableAsLocal(
-              _elementMap.getDartType(new ir.TypeParameterType(parameter))),
-          typeBuilder.analyzeTypeArgument(
-              _elementMap.getDartType(argument), sourceElement));
-    }
-  }
-
   /// Inlines the given redirecting [constructor]'s initializers by collecting
   /// its field values and building its constructor initializers. We visit super
   /// constructors all the way up to the [Object] constructor.
-  void _inlineRedirectingInitializer(
-      ir.RedirectingInitializer initializer,
-      List<ir.Constructor> constructorChain,
-      Map<FieldEntity, HInstruction> fieldValues,
-      ir.Constructor caller) {
+  void _inlineRedirectingInitializer(ir.RedirectingInitializer initializer,
+      ConstructorData constructorData, ir.Constructor caller) {
     var superOrRedirectConstructor = initializer.target;
     var arguments = _normalizeAndBuildArguments(
         superOrRedirectConstructor.function, initializer.arguments);
@@ -762,17 +769,14 @@
     // effective target, so we don't do it here.
 
     _inlineSuperOrRedirectCommon(initializer, superOrRedirectConstructor,
-        arguments, constructorChain, fieldValues, caller);
+        arguments, constructorData, caller);
   }
 
   /// Inlines the given super [constructor]'s initializers by collecting its
   /// field values and building its constructor initializers. We visit super
   /// constructors all the way up to the [Object] constructor.
-  void _inlineSuperInitializer(
-      ir.SuperInitializer initializer,
-      List<ir.Constructor> constructorChain,
-      Map<FieldEntity, HInstruction> fieldValues,
-      ir.Constructor caller) {
+  void _inlineSuperInitializer(ir.SuperInitializer initializer,
+      ConstructorData constructorData, ir.Constructor caller) {
     var target = initializer.target;
     var arguments =
         _normalizeAndBuildArguments(target.function, initializer.arguments);
@@ -781,40 +785,31 @@
     ir.Supertype supertype = callerClass.supertype;
 
     if (callerClass.mixedInType != null) {
-      _bindSupertypeTypeParameters(callerClass.mixedInType);
-      _collectFieldValues(callerClass.mixedInType.classNode, fieldValues);
+      _collectFieldValues(callerClass.mixedInType.classNode, constructorData);
     }
 
     // The class of the super-constructor may not be the supertype class. In
     // this case, we must go up the class hierarchy until we reach the class
     // containing the super-constructor.
     while (supertype.classNode != target.enclosingClass) {
-      _bindSupertypeTypeParameters(supertype);
-
-      if (supertype.classNode.mixedInType != null) {
-        _bindSupertypeTypeParameters(supertype.classNode.mixedInType);
-      }
-
       // Fields from unnamed mixin application classes (ie Object&Foo) get
       // "collected" with the regular supertype fields, so we must bind type
       // parameters from both the supertype and the supertype's mixin classes
       // before collecting the field values.
-      _collectFieldValues(supertype.classNode, fieldValues);
+      _collectFieldValues(supertype.classNode, constructorData);
       supertype = supertype.classNode.supertype;
     }
-    _bindSupertypeTypeParameters(supertype);
     supertype = supertype.classNode.supertype;
 
     _inlineSuperOrRedirectCommon(
-        initializer, target, arguments, constructorChain, fieldValues, caller);
+        initializer, target, arguments, constructorData, caller);
   }
 
   void _inlineSuperOrRedirectCommon(
       ir.Initializer initializer,
       ir.Constructor constructor,
       List<HInstruction> arguments,
-      List<ir.Constructor> constructorChain,
-      Map<FieldEntity, HInstruction> fieldValues,
+      ConstructorData constructorData,
       ir.Constructor caller) {
     var index = 0;
 
@@ -841,38 +836,30 @@
       localsHandler.scopeInfo = newScopeInfo;
       localsHandler.enterScope(closureDataLookup.getCapturedScope(element),
           _sourceInformationBuilder.buildDeclaration(element));
-      _buildInitializers(constructor, constructorChain, fieldValues);
+      _buildInitializers(constructor, constructorData);
     });
     localsHandler.scopeInfo = oldScopeInfo;
   }
 
   /// Builds generative constructor body.
   void buildConstructorBody(ir.Constructor constructor) {
-    openFunction(constructor.function);
-    _addClassTypeVariablesIfNeeded(constructor);
-    _potentiallyAddFunctionParameterTypeChecks(constructor.function);
+    openFunction(
+        _elementMap.getConstructorBody(constructor), constructor.function);
     constructor.function.body.accept(this);
     closeFunction();
   }
 
   /// Builds a SSA graph for FunctionNodes, found in FunctionExpressions and
   /// Procedures.
-  void buildFunctionNode(ir.FunctionNode functionNode) {
-    openFunction(functionNode);
-    ir.TreeNode parent = functionNode.parent;
-    if (parent is ir.Procedure && parent.kind == ir.ProcedureKind.Factory) {
-      _addClassTypeVariablesIfNeeded(parent);
-    }
-    _potentiallyAddFunctionParameterTypeChecks(functionNode);
+  void buildFunctionNode(
+      FunctionEntity function, ir.FunctionNode functionNode) {
+    openFunction(function, functionNode);
 
     // If [functionNode] is `operator==` we explicitly add a null check at the
     // beginning of the method. This is to avoid having call sites do the null
     // check.
-    if (parent is ir.Procedure &&
-        parent.kind == ir.ProcedureKind.Operator &&
-        parent.name.name == '==') {
-      FunctionEntity method = _elementMap.getMethod(parent);
-      if (!_commonElements.operatorEqHandlesNullArgument(method)) {
+    if (function.name == '==') {
+      if (!_commonElements.operatorEqHandlesNullArgument(function)) {
         handleIf(
             visitCondition: () {
               HParameterValue parameter = parameters.values.first;
@@ -921,14 +908,12 @@
   }
 
   /// Builds a SSA graph for FunctionNodes of external methods.
-  void buildExternalFunctionNode(ir.FunctionNode functionNode) {
+  void buildExternalFunctionNode(
+      FunctionEntity function, ir.FunctionNode functionNode) {
+    // TODO(johnniwinther): Non-js-interop external functions should
+    // throw a runtime error.
     assert(functionNode.body == null);
-    openFunction(functionNode);
-    ir.TreeNode parent = functionNode.parent;
-    if (parent is ir.Procedure && parent.kind == ir.ProcedureKind.Factory) {
-      _addClassTypeVariablesIfNeeded(parent);
-    }
-    _potentiallyAddFunctionParameterTypeChecks(functionNode);
+    openFunction(function, functionNode);
 
     if (closedWorld.nativeData.isNativeMember(targetElement)) {
       nativeEmitter.nativeMethods.add(targetElement);
@@ -1007,7 +992,7 @@
     }
   }
 
-  void openFunction([ir.FunctionNode function]) {
+  void openFunction(MemberEntity member, [ir.FunctionNode function]) {
     Map<Local, TypeMask> parameterMap = <Local, TypeMask>{};
     if (function != null) {
       void handleParameter(ir.VariableDeclaration node) {
@@ -1036,6 +1021,13 @@
     close(new HGoto()).addSuccessor(block);
 
     open(block);
+
+    _addClassTypeVariablesIfNeeded(member);
+    if (function != null) {
+      _potentiallyAddFunctionParameterTypeChecks(function);
+    }
+    _insertTraceCall(member);
+    _insertCoverageCall(member);
   }
 
   void closeFunction() {
@@ -1101,6 +1093,7 @@
   @override
   void visitBlock(ir.Block block) {
     assert(!isAborted());
+    if (!isReachable) return; // This can only happen when inlining.
     for (ir.Statement statement in block.statements) {
       statement.accept(this);
       if (!isReachable) {
@@ -2195,7 +2188,10 @@
       localsHandler = new LocalsHandler.from(savedLocals);
       buildSwitchCase(switchCase);
       if (!isAborted() &&
-          switchCase == switchCases.last &&
+          // TODO(johnniwinther): Reinsert this if `isReachable` is no longer
+          // set to `false` when `_tryInlineMethod` sees an always throwing
+          // method.
+          //switchCase == switchCases.last &&
           !isDefaultCase(switchCase)) {
         // If there is no default, we will add one later to avoid
         // the critical edge. So we generate a break statement to make
@@ -4016,6 +4012,7 @@
     TypeMask typeMask = new TypeMask.nonNullExact(cls, closedWorld);
     InterfaceType instanceType = _elementMap.createInterfaceType(
         target.enclosingClass, node.arguments.types);
+    instanceType = localsHandler.substInContext(instanceType);
 
     if (_checkAllTypeVariableBounds(
         constructor, instanceType, sourceInformation)) {
@@ -4038,7 +4035,6 @@
     if (closedWorld.rtiNeed.classNeedsRti(cls)) {
       _addTypeArguments(arguments, node.arguments, sourceInformation);
     }
-    instanceType = localsHandler.substInContext(instanceType);
     addImplicitInstantiation(instanceType);
     _pushStaticInvocation(constructor, arguments, typeMask,
         sourceInformation: sourceInformation, instanceType: instanceType);
@@ -4266,7 +4262,6 @@
    * Try to inline [element] within the correct context of the builder. The
    * insertion point is the state of the builder.
    */
-  // TODO(redemption): Use this.
   bool _tryInlineMethod(
       FunctionEntity function,
       Selector selector,
@@ -4275,9 +4270,8 @@
       ir.Node currentNode,
       SourceInformation sourceInformation,
       {InterfaceType instanceType}) {
-    // TODO(johnniwinther,sra): Remove this when inlining is more mature.
-    if (function.library.canonicalUri.scheme == 'dart') {
-      // Temporarily disable inlining of platform libraries.
+    if (function.isExternal) {
+      // Don't inline external methods; these should just fail at runtime.
       return false;
     }
 
@@ -4336,6 +4330,10 @@
       // so we should not query for its type.
       if (function is! ConstructorBodyEntity) {
         if (globalInferenceResults.resultOfMember(function).throwsAlways) {
+          // TODO(johnniwinther): It seems wrong to set `isReachable` to `false`
+          // since we are _not_ going to inline [function]. This has
+          // implications in switch cases where we might need to insert a
+          // `break` that was skipped due to `isReachable` being `false`.
           isReachable = false;
           return false;
         }
@@ -4684,7 +4682,7 @@
     MemberDefinition definition = _elementMap.getMemberDefinition(function);
     switch (definition.kind) {
       case MemberKind.constructor:
-        buildConstructor(definition.node);
+        buildConstructor(function, definition.node);
         return;
       case MemberKind.constructorBody:
         ir.Constructor constructor = definition.node;
@@ -4730,7 +4728,7 @@
     return _allInlinedFunctionsCalledOnce && _isFunctionCalledOnce(element);
   }
 
-  void _insertTraceCall(FunctionEntity element) {
+  void _insertTraceCall(MemberEntity element) {
     if (JavaScriptBackend.TRACE_METHOD == 'console') {
       if (element == commonElements.traceHelper) return;
       n(e) => e == null ? '' : e.name;
@@ -4742,7 +4740,7 @@
     }
   }
 
-  void _insertCoverageCall(FunctionEntity element) {
+  void _insertCoverageCall(MemberEntity element) {
     if (JavaScriptBackend.TRACE_METHOD == 'post') {
       if (element == commonElements.traceHelper) return;
       // TODO(sigmund): create a better uuid for elements.
@@ -4756,6 +4754,19 @@
   }
 }
 
+/// Data collected to create a constructor.
+class ConstructorData {
+  /// Inlined (super) constructors.
+  final List<ir.Constructor> constructorChain = <ir.Constructor>[];
+
+  /// Initial values for all instance fields.
+  final Map<FieldEntity, HInstruction> fieldValues =
+      <FieldEntity, HInstruction>{};
+
+  /// Classes for which type variables have been prepared.
+  final Set<ClassEntity> includedClasses = new Set<ClassEntity>();
+}
+
 class KernelInliningState {
   final FunctionEntity function;
   final Local oldReturnLocal;
@@ -4798,6 +4809,13 @@
     InlineWeeder visitor = new InlineWeeder(maxInliningNodes, allowLoops);
     ir.FunctionNode node = getFunctionNode(elementMap, function);
     node.accept(visitor);
+    if (function.isConstructor) {
+      MemberDefinition definition = elementMap.getMemberDefinition(function);
+      ir.Node node = definition.node;
+      if (node is ir.Constructor) {
+        node.initializers.forEach((n) => n.accept(visitor));
+      }
+    }
     return visitor.tooDifficultReason;
   }
 
@@ -4831,17 +4849,22 @@
   }
 
   visitReturnStatement(ir.ReturnStatement node) {
+    if (!registerNode()) return;
     if (seenReturn) {
       tooDifficultReason = 'code after return';
-    } else {
-      seenReturn = true;
+      return;
     }
+    node.visitChildren(this);
+    seenReturn = true;
   }
 
   visitThrow(ir.Throw node) {
+    if (!registerNode()) return;
     if (seenReturn) {
       tooDifficultReason = 'code after return';
+      return;
     }
+    node.visitChildren(this);
   }
 
   _handleLoop() {
diff --git a/pkg/compiler/lib/src/ssa/kernel_impact.dart b/pkg/compiler/lib/src/ssa/kernel_impact.dart
index 8853267..9f3166d 100644
--- a/pkg/compiler/lib/src/ssa/kernel_impact.dart
+++ b/pkg/compiler/lib/src/ssa/kernel_impact.dart
@@ -43,7 +43,7 @@
   KernelImpactBuilder(this.elementMap, this.currentMember, this.reporter)
       : this.impactBuilder =
             new ResolutionWorldImpactBuilder('${currentMember.name}') {
-    this.classEnsurer = new _ClassEnsurer(this);
+    this.classEnsurer = new _ClassEnsurer(this, this.elementMap.types);
   }
 
   CommonElements get commonElements => elementMap.commonElements;
@@ -656,10 +656,13 @@
 
 class _ClassEnsurer extends BaseDartTypeVisitor<dynamic, Null> {
   final KernelImpactBuilder builder;
+  final DartTypes types;
+  final seenTypes = new Set<InterfaceType>();
 
-  _ClassEnsurer(this.builder);
+  _ClassEnsurer(this.builder, this.types);
 
   void ensureClassesInType(DartType type) {
+    seenTypes.clear();
     type.accept(this, null);
   }
 
@@ -682,10 +685,15 @@
 
   @override
   visitInterfaceType(InterfaceType type, _) {
+    if (!seenTypes.add(type)) {
+      return;
+    }
     builder.impactBuilder.registerSeenClass(type.element);
     type.typeArguments.forEach((t) {
       t.accept(this, null);
     });
+    var supertype = types.getSupertype(type.element);
+    supertype?.accept(this, null);
   }
 
   @override
diff --git a/pkg/compiler/lib/src/ssa/locals_handler.dart b/pkg/compiler/lib/src/ssa/locals_handler.dart
index 5b33fe2..6626095 100644
--- a/pkg/compiler/lib/src/ssa/locals_handler.dart
+++ b/pkg/compiler/lib/src/ssa/locals_handler.dart
@@ -76,7 +76,6 @@
   /// Substituted type variables occurring in [type] into the context of
   /// [contextClass].
   DartType substInContext(DartType type) {
-    //DartType input = type;
     DartType newType = type;
     if (instanceType != null) {
       ClassEntity typeContext = DartTypes.getClassContext(newType);
diff --git a/pkg/compiler/lib/src/ssa/optimize.dart b/pkg/compiler/lib/src/ssa/optimize.dart
index fdc4754..767e633 100644
--- a/pkg/compiler/lib/src/ssa/optimize.dart
+++ b/pkg/compiler/lib/src/ssa/optimize.dart
@@ -10,7 +10,6 @@
 import '../constants/values.dart';
 import '../common_elements.dart' show CommonElements;
 import '../elements/entities.dart';
-import '../elements/resolution_types.dart';
 import '../elements/types.dart';
 import '../js/js.dart' as js;
 import '../js_backend/backend.dart';
@@ -1305,7 +1304,7 @@
         HInstruction selectTypeArgumentFromObjectCreation(int index)) {
       InterfaceType thisType = _closedWorld.dartTypes.getThisType(createdClass);
 
-      HInstruction instructionForTypeVariable(ResolutionTypeVariableType tv) {
+      HInstruction instructionForTypeVariable(TypeVariableType tv) {
         return selectTypeArgumentFromObjectCreation(
             thisType.typeArguments.indexOf(tv));
       }
diff --git a/pkg/dev_compiler/lib/src/analyzer/code_generator.dart b/pkg/dev_compiler/lib/src/analyzer/code_generator.dart
index c9bd25e..030011b 100644
--- a/pkg/dev_compiler/lib/src/analyzer/code_generator.dart
+++ b/pkg/dev_compiler/lib/src/analyzer/code_generator.dart
@@ -3078,6 +3078,17 @@
       var member = _emitMemberName(name,
           isStatic: isStatic, type: type, element: accessor);
 
+      // A static native element should just forward directly to the
+      // JS type's member.
+      if (isStatic && _isExternal(element)) {
+        var nativeName = getAnnotationName(classElem, isNativeAnnotation);
+        if (nativeName != null) {
+          var memberName = getAnnotationName(element, isJSName) ?? member;
+          return js
+              .call('#.#.#', [_callHelper('global'), nativeName, memberName]);
+        }
+      }
+
       // For instance members, we add implicit-this.
       // For method tear-offs, we ensure it's a bound method.
       if (element is MethodElement &&
diff --git a/pkg/dev_compiler/lib/src/kernel/source_map_printer.dart b/pkg/dev_compiler/lib/src/kernel/source_map_printer.dart
index dafae50..6e47bd9 100644
--- a/pkg/dev_compiler/lib/src/kernel/source_map_printer.dart
+++ b/pkg/dev_compiler/lib/src/kernel/source_map_printer.dart
@@ -54,10 +54,11 @@
 
       if (srcInfo is FileUriNode) {
         parentsStack.add(srcInfo);
-        if (srcInfo is Procedure || srcInfo is Class) mark = false;
-      } else if (srcInfo is Constructor) {
-        parentsStack.add(srcInfo.parent);
-        mark = false;
+        if (srcInfo is Procedure ||
+            srcInfo is Class ||
+            srcInfo is Constructor) {
+          mark = false;
+        }
       }
       if (mark && srcInfo is Block) mark = false;
     } else {
@@ -94,8 +95,6 @@
 
     if (srcInfo is FileUriNode) {
       parentsStack.removeLast();
-    } else if (srcInfo is Constructor) {
-      parentsStack.removeLast();
     }
   }
 
@@ -113,8 +112,14 @@
     FileUriNode fileParent = parentsStack.last;
     Program p = fileParent.enclosingProgram;
     Uri fileUri = fileParent.fileUri;
+    while (fileUri == null && fileParent.parent is FileUriNode) {
+      fileParent = fileParent.parent;
+      fileUri = fileParent.fileUri;
+    }
+    if (fileUri == null) return;
 
     var loc = p.getLocation(fileUri, offset);
+    if (loc == null) return;
     _previousLine = _line;
     _previousColumn = adjustedColumn;
     sourceMap.addLocation(
diff --git a/pkg/dev_compiler/test/sourcemap/ddc_common.dart b/pkg/dev_compiler/test/sourcemap/ddc_common.dart
index 6207547..78c653f 100644
--- a/pkg/dev_compiler/test/sourcemap/ddc_common.dart
+++ b/pkg/dev_compiler/test/sourcemap/ddc_common.dart
@@ -4,16 +4,21 @@
 
 import 'dart:io';
 
+import 'package:front_end/src/api_unstable/ddc.dart' as fe;
 import 'package:path/path.dart' as path;
 import 'package:sourcemap_testing/src/annotated_code_helper.dart';
 import 'package:sourcemap_testing/src/stacktrace_helper.dart';
-import 'package:testing/testing.dart';
 import 'package:sourcemap_testing/src/stepping_helper.dart';
+import 'package:testing/testing.dart';
 
 import 'common.dart';
 
 abstract class DdcRunner {
-  ProcessResult runDDC(Uri inputFile, Uri outputFile, Uri outWrapperPath);
+  Future<Null> runDDC(Uri inputFile, Uri outputFile, Uri outWrapperPath);
+}
+
+abstract class WithCompilerState {
+  fe.InitializedCompilerState compilerState;
 }
 
 class Compile extends Step<Data, Data, ChainContext> {
@@ -37,7 +42,7 @@
     var outputFile = outDirUri.resolve(outputFilename);
     var outWrapperPath = outDirUri.resolve("wrapper.js");
 
-    ddcRunner.runDDC(testFile, outputFile, outWrapperPath);
+    await ddcRunner.runDDC(testFile, outputFile, outWrapperPath);
 
     return pass(data);
   }
@@ -66,7 +71,8 @@
 
   Future<bool> _compile(String input, String output) async {
     var outWrapperPath = _getWrapperPathFromDirectoryFile(new Uri.file(input));
-    ddcRunner.runDDC(new Uri.file(input), new Uri.file(output), outWrapperPath);
+    await ddcRunner.runDDC(
+        new Uri.file(input), new Uri.file(output), outWrapperPath);
     return true;
   }
 
diff --git a/pkg/dev_compiler/test/sourcemap/sourcemaps_ddc_suite.dart b/pkg/dev_compiler/test/sourcemap/sourcemaps_ddc_suite.dart
index 513b64b..684aadc 100644
--- a/pkg/dev_compiler/test/sourcemap/sourcemaps_ddc_suite.dart
+++ b/pkg/dev_compiler/test/sourcemap/sourcemaps_ddc_suite.dart
@@ -4,6 +4,7 @@
 
 import 'dart:io';
 
+import 'package:dev_compiler/src/analyzer/command.dart';
 import 'package:testing/testing.dart';
 
 import 'common.dart';
@@ -37,7 +38,7 @@
 
   const RunDdc([this.debugging = false]);
 
-  ProcessResult runDDC(Uri inputFile, Uri outputFile, Uri outWrapperFile) {
+  Future<Null> runDDC(Uri inputFile, Uri outputFile, Uri outWrapperFile) async {
     Uri outDir = outputFile.resolve(".");
     String outputFilename = outputFile.pathSegments.last;
 
@@ -47,11 +48,8 @@
     File ddcSdkSummary = findInOutDir("gen/utils/dartdevc/ddc_sdk.sum");
 
     var ddc = getDdcDir().uri.resolve("bin/dartdevc.dart");
-    if (!new File.fromUri(ddc).existsSync())
-      throw "Couldn't find 'bin/dartdevc.dart'";
 
     List<String> args = <String>[
-      ddc.toFilePath(),
       "--modules=es6",
       "--dart-sdk-summary=${ddcSdkSummary.path}",
       "--library-root",
@@ -62,12 +60,11 @@
       outputFile.toFilePath(),
       inputFile.toFilePath()
     ];
-    ProcessResult runResult = Process.runSync(dartExecutable, args);
-    if (runResult.exitCode != 0) {
-      print(runResult.stderr);
-      print(runResult.stdout);
-      throw "Exit code: ${runResult.exitCode} from ddc when running "
-          "$dartExecutable "
+
+    var exitCode = compile(args);
+    if (exitCode != 0) {
+      throw "Exit code: $exitCode from ddc when running something like "
+          "$dartExecutable ${ddc.toFilePath()} "
           "${args.reduce((value, element) => '$value "$element"')}";
     }
 
@@ -85,8 +82,6 @@
         inputFileName.substring(0, inputFileName.lastIndexOf("."));
     new File.fromUri(outWrapperFile).writeAsStringSync(
         getWrapperContent(jsSdkPath, inputFileNameNoExt, outputFilename));
-
-    return runResult;
   }
 }
 
diff --git a/pkg/dev_compiler/test/sourcemap/sourcemaps_ddk_suite.dart b/pkg/dev_compiler/test/sourcemap/sourcemaps_ddk_suite.dart
index 7bc4e79..9ce07ce 100644
--- a/pkg/dev_compiler/test/sourcemap/sourcemaps_ddk_suite.dart
+++ b/pkg/dev_compiler/test/sourcemap/sourcemaps_ddk_suite.dart
@@ -2,8 +2,12 @@
 // 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:async';
 import 'dart:io';
 
+import 'package:dev_compiler/src/kernel/command.dart';
+import 'package:front_end/src/api_unstable/ddc.dart' as fe;
+import 'package:sourcemap_testing/src/stepping_helper.dart';
 import 'package:testing/testing.dart';
 
 import 'common.dart';
@@ -14,8 +18,11 @@
   return new SourceMapContext(environment);
 }
 
-class SourceMapContext extends ChainContextWithCleanupHelper {
+class SourceMapContext extends ChainContextWithCleanupHelper
+    implements WithCompilerState {
   final Map<String, String> environment;
+  fe.InitializedCompilerState compilerState;
+
   SourceMapContext(this.environment);
 
   List<Step> _steps;
@@ -23,9 +30,9 @@
   List<Step> get steps {
     return _steps ??= <Step>[
       const Setup(),
-      new Compile(new RunDdc(environment.containsKey("debug"))),
+      new Compile(new RunDdc(this, debugging())),
       const StepWithD8(),
-      new CheckSteps(environment.containsKey("debug")),
+      new CheckSteps(debugging()),
     ];
   }
 
@@ -33,11 +40,12 @@
 }
 
 class RunDdc implements DdcRunner {
+  final WithCompilerState context;
   final bool debugging;
 
-  const RunDdc([this.debugging = false]);
+  const RunDdc(this.context, [this.debugging = false]);
 
-  ProcessResult runDDC(Uri inputFile, Uri outputFile, Uri outWrapperFile) {
+  Future<Null> runDDC(Uri inputFile, Uri outputFile, Uri outWrapperFile) async {
     Uri outDir = outputFile.resolve(".");
     String outputFilename = outputFile.pathSegments.last;
 
@@ -47,23 +55,30 @@
     File ddcSdkSummary = findInOutDir("gen/utils/dartdevc/ddc_sdk.dill");
 
     var ddc = getDdcDir().uri.resolve("bin/dartdevk.dart");
-    if (!new File.fromUri(ddc).existsSync())
-      throw "Couldn't find 'bin/dartdevk.dart'";
 
     List<String> args = <String>[
-      ddc.toFilePath(),
+      "--packages=${sdkRoot.uri.resolve(".packages").toFilePath()}",
       "--modules=es6",
       "--dart-sdk-summary=${ddcSdkSummary.path}",
       "-o",
       outputFile.toFilePath(),
       inputFile.toFilePath()
     ];
-    ProcessResult runResult = Process.runSync(dartExecutable, args);
-    if (runResult.exitCode != 0) {
-      print(runResult.stderr);
-      print(runResult.stdout);
-      throw "Exit code: ${runResult.exitCode} from ddc when running "
-          "$dartExecutable "
+
+    bool succeeded = false;
+    try {
+      var result = await compile(args, compilerState: context.compilerState);
+      context.compilerState = result.compilerState;
+      succeeded = result.result;
+    } catch (e, s) {
+      print('Unhandled exception:');
+      print(e);
+      print(s);
+    }
+
+    if (!succeeded) {
+      throw "Error from ddc when executing with something like "
+          "$dartExecutable ${ddc.toFilePath()} "
           "${args.reduce((value, element) => '$value "$element"')}";
     }
 
@@ -81,8 +96,6 @@
         inputFileName.substring(0, inputFileName.lastIndexOf("."));
     new File.fromUri(outWrapperFile).writeAsStringSync(
         getWrapperContent(jsSdkPath, inputFileNameNoExt, outputFilename));
-
-    return runResult;
   }
 }
 
diff --git a/pkg/dev_compiler/test/sourcemap/stacktrace_ddk_suite.dart b/pkg/dev_compiler/test/sourcemap/stacktrace_ddk_suite.dart
index 43f05df..5e5b50a 100644
--- a/pkg/dev_compiler/test/sourcemap/stacktrace_ddk_suite.dart
+++ b/pkg/dev_compiler/test/sourcemap/stacktrace_ddk_suite.dart
@@ -1,3 +1,4 @@
+import 'package:front_end/src/api_unstable/ddc.dart' as fe;
 import 'package:testing/testing.dart';
 
 import 'common.dart';
@@ -9,13 +10,20 @@
   return new StackTraceContext();
 }
 
-class StackTraceContext extends ChainContextWithCleanupHelper {
-  final List<Step> steps = <Step>[
-    const Setup(),
-    const SetCwdToSdkRoot(),
-    const TestStackTrace(
-        const ddk.RunDdc(false), "ddk.", const ["ddk.", "ddc."]),
-  ];
+class StackTraceContext extends ChainContextWithCleanupHelper
+    implements WithCompilerState {
+  fe.InitializedCompilerState compilerState;
+
+  List<Step> _steps;
+
+  List<Step> get steps {
+    return _steps ??= <Step>[
+      const Setup(),
+      const SetCwdToSdkRoot(),
+      new TestStackTrace(
+          new ddk.RunDdc(this, false), "ddk.", const ["ddk.", "ddc."]),
+    ];
+  }
 }
 
 main(List<String> arguments) => runMe(arguments, createContext, "testing.json");
diff --git a/pkg/dev_compiler/tool/build_sdk.sh b/pkg/dev_compiler/tool/build_sdk.sh
index b25f30a..62c012d 100755
--- a/pkg/dev_compiler/tool/build_sdk.sh
+++ b/pkg/dev_compiler/tool/build_sdk.sh
@@ -6,10 +6,10 @@
 echo "*** Patching SDK"
 { # Try
   dart -c tool/patch_sdk.dart ../.. tool/input_sdk gen/patched_sdk \
-      > tool/sdk_expected_errors.txt
+      > gen/sdk_analyzer_errors.txt
 } || { # Catch
   # Show errors if the sdk didn't compile.
-  cat tool/sdk_expected_errors.txt
+  cat gen/sdk_analyzer_errors.txt
   exit 1
 }
 
@@ -31,9 +31,9 @@
       -o gen/sdk/common/dart_sdk.js \
       --modules=legacy \
       -o gen/sdk/legacy/dart_sdk.js \
-      "$@" > tool/sdk_expected_errors.txt
+      "$@" > gen/sdk_analyzer_errors.txt
 } || { # Catch
   # Show errors if the sdk didn't compile.
-  cat tool/sdk_expected_errors.txt
+  cat gen/sdk_analyzer_errors.txt
   exit 1
 }
diff --git a/pkg/dev_compiler/tool/ddc b/pkg/dev_compiler/tool/ddc
index 1caca36..1d30ae3 100755
--- a/pkg/dev_compiler/tool/ddc
+++ b/pkg/dev_compiler/tool/ddc
@@ -29,7 +29,7 @@
 fi
 
 if [ "$KERNEL" = true ]; then
-  dart -c $DDC_PATH/bin/dartdevk.dart \
+  dart -c $DDC_PATH/bin/dartdevk.dart --modules=node \
       -o $BASENAME.js $*
 else
   dart -c $DDC_PATH/bin/dartdevc.dart --modules=node --library-root=$LIBROOT \
diff --git a/pkg/dev_compiler/tool/ddw b/pkg/dev_compiler/tool/ddw
index 8d2442f..9169c84 100755
--- a/pkg/dev_compiler/tool/ddw
+++ b/pkg/dev_compiler/tool/ddw
@@ -30,7 +30,7 @@
 fi
 
 if [ "$KERNEL" = true ]; then
-  dart -c $DDC_PATH/bin/dartdevk.dart \
+  dart -c $DDC_PATH/bin/dartdevk.dart --modules=node \
       -o $BASENAME.js $*
 else
   dart -c $DDC_PATH/bin/dartdevc.dart --modules=node --library-root=$LIBROOT \
diff --git a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/classes.dart b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/classes.dart
index 133f070..2955ef8 100644
--- a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/classes.dart
+++ b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/classes.dart
@@ -327,6 +327,14 @@
       jsType, _setterSig, JS('', '() => #[#]', dartExtType, _setterSig));
 }
 
+/// Apply the previously registered extension to the type of [nativeObject].
+/// This is intended for types that are not available to polyfill at startup.
+applyExtension(name, nativeObject) {
+  var dartExtType = JS('', '#.get(#)', _extensionMap, name);
+  var jsType = JS('', '#.constructor', nativeObject);
+  _applyExtension(jsType, dartExtType);
+}
+
 /// Apply all registered extensions to a window.  This is intended for
 /// different frames, where registrations need to be reapplied.
 applyAllExtensions(global) {
diff --git a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/generators.dart b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/generators.dart
index 6fdf32f..dc2d82e 100644
--- a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/generators.dart
+++ b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/generators.dart
@@ -156,6 +156,7 @@
           () => {
         this.isAdding = false;
         this.scheduleGenerator();
+        if (!this.isScheduled) this.isSuspendedAtYield = true;
       }, { onError: (e, s) => this.throwError(e, s) });
     }
 
diff --git a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/types.dart b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/types.dart
index 92dddf2..e85d898 100644
--- a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/types.dart
+++ b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/types.dart
@@ -94,7 +94,7 @@
     var raw = _rawJSType();
     if (raw != null) return raw;
     _warn('Cannot find native JavaScript type ($_dartName) for type check');
-    return _dynamic;
+    return JS('', '#.Object', global_);
   }
 
   @JSExportName('is')
diff --git a/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart b/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart
index f815459..4adfd4f 100644
--- a/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart
+++ b/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart
@@ -837,6 +837,11 @@
   }
 }
 
+/// Expose browser JS classes.
+void applyExtension(name, nativeObject) {
+  dart.applyExtension(name, nativeObject);
+}
+
 /// Used internally by DDC to map ES6 symbols to Dart.
 class PrivateSymbol implements Symbol {
   // TODO(jmesserly): could also get this off the native symbol instead of
diff --git a/pkg/dev_compiler/tool/sdk_expected_errors.txt b/pkg/dev_compiler/tool/sdk_expected_errors.txt
deleted file mode 100644
index cd24172..0000000
--- a/pkg/dev_compiler/tool/sdk_expected_errors.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-[warning] The final variable 'length' must be initialized. (dart:_interceptors/js_string.dart, line 15, col 9)
-[warning] The final variable 'origin' must be initialized. (dart:html, line 193, col 3)
-[warning] The final variable 'origin' must be initialized. (dart:html, line 863, col 3)
-[warning] The final variables 'form', 'labels' and '3' more must be initialized. (dart:html, line 1679, col 3)
-[warning] The final variable 'options' must be initialized. (dart:html, line 8979, col 3)
-[warning] The final variables '_attributes', '_childElementCount' and '19' more must be initialized. (dart:html, line 13235, col 3)
-[warning] The final variables 'elements', 'form' and '4' more must be initialized. (dart:html, line 17108, col 3)
-[warning] The final variable 'length' must be initialized. (dart:html, line 18058, col 3)
-[warning] The final variables '_get_contentWindow' and 'sandbox' must be initialized. (dart:html, line 20770, col 3)
-[warning] The final variables 'complete', 'currentSrc' and '2' more must be initialized. (dart:html, line 20977, col 3)
-[warning] The final variables '_get_valueAsDate', 'entries' and '6' more must be initialized. (dart:html, line 21142, col 3)
-[warning] The final variables 'form', 'labels' and '4' more must be initialized. (dart:html, line 22352, col 3)
-[warning] The final variables 'control' and 'form' must be initialized. (dart:html, line 22499, col 3)
-[warning] The final variable 'form' must be initialized. (dart:html, line 22538, col 3)
-[warning] The final variables 'import', 'relList' and '2' more must be initialized. (dart:html, line 22627, col 3)
-[warning] The final variable 'areas' must be initialized. (dart:html, line 22790, col 3)
-[warning] The final variables 'audioDecodedByteCount', 'audioTracks' and '16' more must be initialized. (dart:html, line 23091, col 3)
-[warning] The final variable 'labels' must be initialized. (dart:html, line 24685, col 3)
-[warning] The final variables 'baseUri', 'childNodes' and '11' more must be initialized. (dart:html, line 26229, col 3)
-[warning] The final variables 'form', 'validationMessage' and '2' more must be initialized. (dart:html, line 27181, col 3)
-[warning] The final variables 'form' and 'index' must be initialized. (dart:html, line 27363, col 3)
-[warning] The final variables 'form', 'htmlFor' and '5' more must be initialized. (dart:html, line 27417, col 3)
-[warning] The final variables 'labels' and 'position' must be initialized. (dart:html, line 28979, col 3)
-[warning] The final variables 'form', 'labels' and '4' more must be initialized. (dart:html, line 30908, col 3)
-[warning] The final variable 'sheet' must be initialized. (dart:html, line 33383, col 3)
-[warning] The final variable 'cellIndex' must be initialized. (dart:html, line 33648, col 3)
-[warning] The final variables '_rows' and '_tBodies' must be initialized. (dart:html, line 33767, col 3)
-[warning] The final variables '_cells', 'rowIndex' and '1' more must be initialized. (dart:html, line 33884, col 3)
-[warning] The final variable '_rows' must be initialized. (dart:html, line 33953, col 3)
-[warning] The final variable 'content' must be initialized. (dart:html, line 33997, col 3)
-[warning] The final variables 'form', 'labels' and '5' more must be initialized. (dart:html, line 34086, col 3)
-[warning] The final variables 'readyState' and 'track' must be initialized. (dart:html, line 35146, col 3)
-[warning] The final variables 'decodedFrameCount', 'droppedFrameCount' and '2' more must be initialized. (dart:html, line 36053, col 3)
-[warning] The final variable 'sourceCapabilities' must be initialized. (dart:html, line 46029, col 3)
-[warning] The final variables 'href' and 'target' must be initialized. (dart:svg, line 56, col 3)
-[warning] The final variables 'requiredExtensions', 'requiredFeatures' and '2' more must be initialized. (dart:svg, line 512, col 3)
-[warning] The final variables 'cx', 'cy' and '1' more must be initialized. (dart:svg, line 583, col 3)
-[warning] The final variable 'clipPathUnits' must be initialized. (dart:svg, line 620, col 3)
-[warning] The final variables 'cx', 'cy' and '2' more must be initialized. (dart:svg, line 719, col 3)
-[warning] The final variables 'height', 'in1' and '6' more must be initialized. (dart:svg, line 765, col 3)
-[warning] The final variables 'height', 'in1' and '6' more must be initialized. (dart:svg, line 858, col 3)
-[warning] The final variables 'height', 'in1' and '4' more must be initialized. (dart:svg, line 947, col 3)
-[warning] The final variables 'height', 'in1' and '10' more must be initi